diff --git a/Src/command_center/web-command-center/PATH_HISTORY_GUIDE.md b/Src/command_center/web-command-center/PATH_HISTORY_GUIDE.md
new file mode 100644
index 00000000..0ddf71a9
--- /dev/null
+++ b/Src/command_center/web-command-center/PATH_HISTORY_GUIDE.md
@@ -0,0 +1,171 @@
+# 路径历史功能使用指南
+
+## 功能概述
+
+路径历史功能允许您保存、查看和管理所有通过A*算法规划的飞行路径。系统会自动保存每次路径规划的结果,包括平滑处理后的路径点和原始算法路径点。
+
+## 主要特性
+
+### 1. 自动路径保存
+- **智能保存**:每次使用A*算法规划路径后,系统自动保存到数据库
+- **平滑处理**:对超过20个点的路径自动执行平滑处理,减少路径点数量同时保持路径质量
+- **双重存储**:同时保存平滑后的路径(用于显示)和原始算法路径(用于分析)
+- **元数据记录**:保存路径名称、描述、距离、飞行参数、避开的威胁区等完整信息
+
+### 2. 路径历史管理
+- **历史列表**:在"路径历史"标签页查看所有已保存的路径
+- **状态筛选**:按路径状态筛选(已规划、执行中、已完成、已失败、已取消)
+- **算法筛选**:按规划算法筛选(A*算法、直线规划)
+- **路径详情**:查看每条路径的详细信息,包括威胁区规避情况
+
+### 3. 地图可视化
+- **批量显示**:支持在地图上同时显示多条历史路径
+- **颜色区分**:每条路径使用不同颜色显示,便于区分
+- **虚线样式**:历史路径使用虚线显示,与当前规划路径(实线)区分
+- **起终点标记**:每条路径显示起点(S)和终点(E)标记
+
+## 使用方法
+
+### 步骤1:规划并保存路径
+
+1. 切换到"路径规划"标签页
+2. 设置起点和终点
+3. 配置飞行参数(高度、速度等)
+4. 点击"开始规划"按钮
+5. 系统自动使用A*算法规划路径并保存到数据库
+
+### 步骤2:查看历史路径
+
+1. 切换到"路径历史"标签页
+2. 浏览已保存的路径列表
+3. 使用筛选功能查找特定路径
+4. 点击路径项目查看基本信息
+
+### 步骤3:地图显示管理
+
+#### 显示单条路径
+- 点击路径项目右侧的"显示"按钮
+- 路径将在地图上以虚线形式显示
+
+#### 显示所有路径
+- 点击页面顶部"显示所有路径"按钮
+- 当前筛选结果中的所有路径将同时显示
+
+#### 隐藏路径
+- 点击已显示路径的"隐藏"按钮
+- 或点击"隐藏所有路径"按钮清空地图
+
+### 步骤4:路径操作
+
+#### 查看详情
+1. 点击路径右侧的菜单按钮(⋯)
+2. 选择"查看详情"
+3. 在弹出对话框中查看完整的路径信息
+
+#### 居中显示
+1. 点击菜单中的"居中显示"
+2. 地图将自动调整视野以完整显示该路径
+
+#### 复制路径
+1. 点击菜单中的"复制路径"
+2. 路径点将复制到当前规划中
+3. 可以基于此路径进行修改和重新规划
+
+#### 删除路径
+1. 点击菜单中的"删除"
+2. 确认删除操作
+3. 路径将从数据库中永久删除
+
+## 数据结构说明
+
+### 路径点格式
+```json
+{
+ "lng": 112.982279, // 经度
+ "lat": 28.194090, // 纬度
+ "altitude": 100 // 飞行高度(米)
+}
+```
+
+### 完整路径信息
+每条保存的路径包含以下信息:
+- **基本信息**:名称、描述、创建时间
+- **地理信息**:起点、终点、路径点数组
+- **飞行参数**:高度、速度、预计时间
+- **算法信息**:使用的规划算法、网格大小、迭代次数
+- **威胁区域**:避开的威胁区ID列表
+- **状态信息**:规划状态、可见性、显示颜色
+
+### 平滑处理
+- **触发条件**:路径点数量超过20个
+- **平滑参数**:5次迭代,平滑因子0.3
+- **保留策略**:保留重要路径点,移除冗余点
+- **存储策略**:同时保存原始路径和平滑路径
+
+## 性能优化
+
+### 地图渲染
+- 使用虚线样式减少渲染负担
+- 合理的线条宽度和透明度
+- 起终点使用轻量级SVG图标
+
+### 数据加载
+- 历史路径列表分页加载(默认50条)
+- 路径点数据按需加载
+- 智能缓存减少重复请求
+
+### 内存管理
+- 及时清理隐藏路径的地图覆盖物
+- 使用非响应式对象存储地图元素
+- 避免大量路径同时显示造成性能问题
+
+## 注意事项
+
+1. **存储空间**:每条路径占用一定数据库空间,建议定期清理不需要的历史路径
+2. **显示性能**:同时显示过多路径可能影响地图性能,建议分批查看
+3. **路径颜色**:系统自动分配颜色,如需特定颜色可在详情中修改
+4. **权限控制**:路径可见性分为公开和私有,默认为公开
+5. **数据备份**:重要路径建议定期备份,避免意外丢失
+
+## 故障排除
+
+### 路径不显示
+- 检查路径状态是否为"公开"
+- 确认地图已加载完成
+- 刷新页面重新加载数据
+
+### 保存失败
+- 检查网络连接
+- 确认路径点数据有效
+- 查看浏览器控制台错误信息
+
+### 性能问题
+- 减少同时显示的路径数量
+- 清空地图后重新加载
+- 使用筛选功能精确查找
+
+## API接口
+
+### 获取历史路径列表
+```
+GET /api/path-planning/history/all
+```
+
+### 获取路径详情
+```
+GET /api/path-planning/:id
+```
+
+### 更新路径状态
+```
+PUT /api/path-planning/:id/status
+```
+
+### 删除路径
+```
+DELETE /api/path-planning/:id
+```
+
+---
+
+通过路径历史功能,您可以有效管理和重用飞行路径,提高无人机任务规划的效率。如有问题,请参考技术文档或联系开发团队。
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/backend/src/routes/pathPlanning.js b/Src/command_center/web-command-center/backend/src/routes/pathPlanning.js
index 244056cc..8cdfd52a 100644
--- a/Src/command_center/web-command-center/backend/src/routes/pathPlanning.js
+++ b/Src/command_center/web-command-center/backend/src/routes/pathPlanning.js
@@ -48,7 +48,11 @@ function getDistance(lat1, lng1, lat2, lng2) {
* 启发式函数 - 改用实际地理距离,更准确
*/
function heuristic(p1, p2) {
- return getDistance(p1.lat, p1.lng, p2.lat, p2.lng) / 111000; // 转换为度数单位
+ const distance = getDistance(p1.lat, p1.lng, p2.lat, p2.lng) / 111000; // 转换为度数单位
+
+ // 对于长距离路径,略微增加启发式权重(1.2倍)来引导搜索方向
+ // 这样可以更快找到大致正确的方向,减少无效搜索
+ return distance * 1.2;
}
/**
@@ -91,16 +95,42 @@ function isPointInThreatZone(lng, lat, zone) {
break;
case 'rectangle':
- if (geometry.southwest && geometry.northeast) {
- // 新格式:southwest/northeast
+ if (geometry.bounds && Array.isArray(geometry.bounds) && geometry.bounds.length === 4) {
+ // 最新格式:bounds: [swLng, swLat, neLng, neLat]
+ const [swLng, swLat, neLng, neLat] = geometry.bounds;
+ const isInside = lng >= swLng && lng <= neLng && lat >= swLat && lat <= neLat;
+
+ // 调试输出
+ if (isInside) {
+ console.log(`点(${lng}, ${lat})在矩形威胁区${zone.id}内,边界[${swLng}, ${swLat}, ${neLng}, ${neLat}]`);
+ }
+
+ return isInside;
+ } else if (geometry.southwest && geometry.northeast) {
+ // 旧格式:southwest/northeast
const sw = geometry.southwest;
const ne = geometry.northeast;
- return lng >= sw.lng && lng <= ne.lng && lat >= sw.lat && lat <= ne.lat;
+ const isInside = lng >= sw.lng && lng <= ne.lng && lat >= sw.lat && lat <= ne.lat;
+
+ if (isInside) {
+ console.log(`点(${lng}, ${lat})在矩形威胁区${zone.id}内,SW(${sw.lng}, ${sw.lat}), NE(${ne.lng}, ${ne.lat})`);
+ }
+
+ return isInside;
} else if (geometry.rect) {
- // 老格式:rect
+ // 最旧格式:rect
const { x1, y1, x2, y2 } = geometry.rect;
- return lng >= Math.min(x1, x2) && lng <= Math.max(x1, x2) &&
- lat >= Math.min(y1, y2) && lat <= Math.max(y1, y2);
+ const minX = Math.min(x1, x2);
+ const maxX = Math.max(x1, x2);
+ const minY = Math.min(y1, y2);
+ const maxY = Math.max(y1, y2);
+ const isInside = lng >= minX && lng <= maxX && lat >= minY && lat <= maxY;
+
+ if (isInside) {
+ console.log(`点(${lng}, ${lat})在矩形威胁区${zone.id}内,矩形(${x1}, ${y1}), (${x2}, ${y2})`);
+ }
+
+ return isInside;
}
break;
@@ -123,14 +153,32 @@ function isPointInThreatZone(lng, lat, zone) {
}
if (points && points.length >= 3) {
- const isInside = pointInPolygon(lng, lat, points);
+ // 验证所有点的格式
+ const validPoints = points.every(point => {
+ if (Array.isArray(point) && point.length >= 2) {
+ return !isNaN(point[0]) && !isNaN(point[1]);
+ } else if (point && typeof point === 'object') {
+ return !isNaN(point.lng || point.x) && !isNaN(point.lat || point.y);
+ }
+ return false;
+ });
+
+ if (!validPoints) {
+ console.error(`多边形威胁区${zone.id}的顶点数据格式不正确:`, points);
+ return false;
+ }
+
+ const isInside = pointInPolygonImproved(lng, lat, points);
// 调试输出
if (isInside) {
console.log(`点(${lng}, ${lat})在多边形威胁区${zone.id}内,顶点数${points.length}`);
+ console.log(`多边形顶点:`, points.slice(0, 3).map(p => Array.isArray(p) ? p : [p.lng || p.x, p.lat || p.y]));
}
return isInside;
+ } else {
+ console.error(`多边形威胁区${zone.id}的顶点数不足或数据格式错误:`, geometry);
}
break;
}
@@ -169,36 +217,177 @@ function isPointInAnyThreatZone(lng, lat, threatZones, enableDebug = false) {
}
/**
- * 点在多边形内检测 - 射线法,完全参考Python实现
+ * 改进的点在多边形内检测 - 射线法,增强精度和边界处理
*/
-function pointInPolygon(lng, lat, polygon) {
+function pointInPolygonImproved(lng, lat, polygon) {
if (polygon.length < 3) return false;
let inside = false;
- let j = polygon.length - 1;
+ const EPS = 1e-10; // 增加精度常数,处理浮点数比较
- for (let i = 0; i < polygon.length; i++) {
- const xi = polygon[i].lng || polygon[i][0];
- const yi = polygon[i].lat || polygon[i][1];
- const xj = polygon[j].lng || polygon[j][0];
- const yj = polygon[j].lat || polygon[j][1];
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
+ // 统一获取坐标,支持多种格式
+ const xi = polygon[i].lng || polygon[i].x || polygon[i][0];
+ const yi = polygon[i].lat || polygon[i].y || polygon[i][1];
+ const xj = polygon[j].lng || polygon[j].x || polygon[j][0];
+ const yj = polygon[j].lat || polygon[j].y || polygon[j][1];
+
+ // 验证坐标有效性
+ if (isNaN(xi) || isNaN(yi) || isNaN(xj) || isNaN(yj)) {
+ console.error('多边形顶点坐标无效:', {
+ i: polygon[i], j: polygon[j],
+ xi, yi, xj, yj
+ });
+ continue;
+ }
- // 检查点是否在多边形边上
- if ((yi === lat && xi === lng) || (yj === lat && xj === lng)) {
+ // 检查点是否在多边形边上(增加容差)
+ if (Math.abs(yi - lat) < EPS && Math.abs(xi - lng) < EPS) {
+ return true; // 点在顶点上
+ }
+
+ // 检查点是否在边上
+ if (isPointOnSegment(lng, lat, xi, yi, xj, yj, EPS)) {
return true;
}
// 射线法判断点是否在多边形内部
- if (((yi > lat) !== (yj > lat)) &&
- (lng < (xj - xi) * (lat - yi) / (yj - yi) + xi)) {
- inside = !inside;
+ // 修复边界情况和提高精度
+ if (((yi > lat + EPS) !== (yj > lat + EPS))) {
+ const intersectX = (xj - xi) * (lat - yi) / (yj - yi) + xi;
+ if (lng < intersectX - EPS) {
+ inside = !inside;
+ }
}
- j = i;
}
return inside;
}
+/**
+ * 检查点是否在线段上
+ */
+function isPointOnSegment(px, py, x1, y1, x2, y2, epsilon = 1e-10) {
+ // 计算点到线段的距离
+ const A = px - x1;
+ const B = py - y1;
+ const C = x2 - x1;
+ const D = y2 - y1;
+
+ const dot = A * C + B * D;
+ const lenSq = C * C + D * D;
+
+ if (lenSq < epsilon) {
+ // 线段长度为0,检查是否是同一点
+ return Math.abs(px - x1) < epsilon && Math.abs(py - y1) < epsilon;
+ }
+
+ const param = dot / lenSq;
+
+ let closestX, closestY;
+ if (param < 0) {
+ closestX = x1;
+ closestY = y1;
+ } else if (param > 1) {
+ closestX = x2;
+ closestY = y2;
+ } else {
+ closestX = x1 + param * C;
+ closestY = y1 + param * D;
+ }
+
+ const distance = Math.sqrt((px - closestX) * (px - closestX) + (py - closestY) * (py - closestY));
+ return distance < epsilon;
+}
+
+/**
+ * 点在多边形内检测 - 射线法,完全参考Python实现(保持向后兼容)
+ */
+function pointInPolygon(lng, lat, polygon) {
+ return pointInPolygonImproved(lng, lat, polygon);
+}
+
+/**
+ * 检查路径段是否安全(关键修复:高密度采样检测)
+ * 这是解决路径直接穿过多边形威胁区的核心函数
+ */
+function isPathSegmentSafe(lng1, lat1, lng2, lat2, threatZones, allowThreatZones = false) {
+ // 计算路径段长度
+ const segmentDistance = getDistance(lat1, lng1, lat2, lng2);
+
+ // 根据距离动态调整采样密度 - 高精度模式
+ // 高精度规划需要更密集的采样来检测威胁区边界
+ let baseSampleDistance = 5; // 高精度基础采样间距:5米
+ const minSamples = 5; // 最少采样点数
+ let maxSamples = 100; // 增加最大采样点数以支持高精度检测
+
+ // 根据段长度自适应调整采样精度
+ if (segmentDistance <= 50) { // 极短距离:1米精度
+ baseSampleDistance = 1;
+ maxSamples = 50;
+ } else if (segmentDistance <= 200) { // 短距离:2米精度
+ baseSampleDistance = 2;
+ maxSamples = 100;
+ } else if (segmentDistance <= 1000) { // 中距离:5米精度
+ baseSampleDistance = 5;
+ maxSamples = 200;
+ } else { // 长距离:使用原始精度
+ baseSampleDistance = 20;
+ maxSamples = 100;
+ }
+
+ let numSamples = Math.max(minSamples, Math.min(maxSamples, Math.ceil(segmentDistance / baseSampleDistance)));
+
+ // 对于极短距离,保证最小采样密度
+ if (segmentDistance < 10) {
+ numSamples = Math.max(10, numSamples);
+ }
+
+ const threatZoneIds = [];
+ const passedThreatZones = [];
+
+ // 沿着路径段进行高密度采样
+ for (let i = 0; i <= numSamples; i++) {
+ const t = i / numSamples;
+ const sampleLng = lng1 + t * (lng2 - lng1);
+ const sampleLat = lat1 + t * (lat2 - lat1);
+
+ // 检查采样点是否在威胁区内
+ const threatInfo = isPointInAnyThreatZone(sampleLng, sampleLat, threatZones);
+
+ if (threatInfo.inThreat) {
+ if (!allowThreatZones) {
+ // 不允许穿过威胁区,立即返回unsafe
+ if (!threatZoneIds.includes(threatInfo.zoneId)) {
+ threatZoneIds.push(threatInfo.zoneId);
+ }
+
+ // 调试输出:显示在哪个采样点检测到威胁区
+ console.log(`🔍 路径段采样点${i}/${numSamples}(${sampleLng.toFixed(6)}, ${sampleLat.toFixed(6)})穿过威胁区${threatInfo.zoneId}(${threatInfo.level})`);
+
+ return {
+ safe: false,
+ threatZoneIds: threatZoneIds,
+ passedThreatZones: [],
+ sampledAt: { i, total: numSamples, point: [sampleLng, sampleLat] }
+ };
+ } else {
+ // 允许穿过威胁区,记录通过的威胁区
+ if (!passedThreatZones.includes(threatInfo.zoneId)) {
+ passedThreatZones.push(threatInfo.zoneId);
+ }
+ }
+ }
+ }
+
+ return {
+ safe: true,
+ threatZoneIds: [],
+ passedThreatZones: passedThreatZones,
+ samplesChecked: numSamples + 1
+ };
+}
+
// ===================== 改进的A*算法实现 =====================
/**
@@ -210,6 +399,10 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
console.log('终点:', end);
console.log('威胁区数量:', threatZones.length);
+ // 计算起点终点距离,用于分析问题
+ const directDistance = getDistance(start.lat, start.lng, end.lat, end.lng);
+ console.log(`起点终点直线距离: ${Math.round(directDistance)}米`);
+
// 调试威胁区域信息
threatZones.forEach((zone, index) => {
const geometry = zone.geometry_data || zone.geometry;
@@ -225,12 +418,70 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
}
}
});
+
+ // 检查起点和终点是否在威胁区内
+ const startThreatInfo = isPointInAnyThreatZone(start.lng, start.lat, threatZones, true);
+ const endThreatInfo = isPointInAnyThreatZone(end.lng, end.lat, threatZones, true);
+
+ if (startThreatInfo.inThreat) {
+ console.log(`⚠️ 起点位于威胁区${startThreatInfo.zoneId}内,等级:${startThreatInfo.level}`);
+ } else {
+ console.log('✓ 起点安全');
+ }
+
+ if (endThreatInfo.inThreat) {
+ console.log(`⚠️ 终点位于威胁区${endThreatInfo.zoneId}内,等级:${endThreatInfo.level}`);
+ } else {
+ console.log('✓ 终点安全');
+ }
+
+ // 详细检查直线路径是否穿过威胁区(高密度采样)
+ console.log('🔍 检查直线路径是否安全...');
+ const directPathSafe = isPathSegmentSafe(start.lng, start.lat, end.lng, end.lat, threatZones, false);
+
+ if (!directPathSafe.safe) {
+ console.log(`⚠️ 直线路径穿过威胁区${directPathSafe.threatZoneIds.join(',')},A*算法需要绕行`);
+ console.log(` 采样检测点数: ${directPathSafe.sampledAt?.total || 0}, 威胁检测位置: 第${directPathSafe.sampledAt?.i || 0}个采样点`);
+ } else {
+ console.log(`✓ 直线路径安全,已检查${directPathSafe.samplesChecked}个采样点`);
+ if (directPathSafe.passedThreatZones.length > 0) {
+ console.log(` 但允许穿过威胁区: ${directPathSafe.passedThreatZones.join(',')}`);
+ }
+ }
const {
- gridSize = 0.001, // 调整网格大小,约100米,平衡精度和性能
- maxIterations = 8000, // 增加最大迭代次数
+ gridSize = 0.00001, // 高精度网格大小到约1米,适应高缩放级别地图
+ maxIterations = 50000, // 大幅增加迭代次数以处理高精度网格
allowThreatZones = false // 是否允许穿过威胁区
} = options;
+
+ // 根据距离自适应调整网格精度 - 小范围高精度规划
+ const pathDistance = getDistance(start.lat, start.lng, end.lat, end.lng);
+ const hasComplexPolygons = threatZones.some(zone =>
+ zone.geometry_type === 'polygon' &&
+ (zone.geometry_data?.path?.length > 4 || zone.geometry?.path?.length > 4)
+ );
+
+ let finalGridSize = gridSize;
+
+ // 小范围精确规划:距离越短,精度越高
+ if (pathDistance <= 500) { // 小于500米:1米精度
+ finalGridSize = 0.00001; // 约1.1米网格
+ } else if (pathDistance <= 2000) { // 小于2km:3米精度
+ finalGridSize = 0.00003; // 约3.3米网格
+ } else if (pathDistance <= 5000) { // 小于5km:10米精度
+ finalGridSize = 0.0001; // 约11米网格
+ } else { // 大于5km:使用标准精度
+ finalGridSize = Math.max(gridSize, 0.0003); // 至少33米网格
+ }
+
+ // 复杂多边形需要更高精度
+ if (hasComplexPolygons && pathDistance <= 2000) {
+ finalGridSize = Math.min(finalGridSize, 0.00001); // 强制1米精度
+ }
+
+ console.log(`高精度路径规划 - 距离${Math.round(pathDistance)}米,使用网格: ${finalGridSize} (约${Math.round(finalGridSize * 111000)}米)${hasComplexPolygons ? ',复杂多边形高精度模式' : ''}`);
+
// 8方向移动 - 完全参考Python实现
const directions = [
@@ -252,8 +503,8 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
// 节点键值生成 - 更精确的格子坐标
const getNodeKey = (lng, lat) => {
- const gridX = Math.round(lng / gridSize);
- const gridY = Math.round(lat / gridSize);
+ const gridX = Math.round(lng / finalGridSize);
+ const gridY = Math.round(lat / finalGridSize);
return `${gridX}_${gridY}`;
};
@@ -286,9 +537,22 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
bestNode = current;
}
- // 检查是否到达目标 - 更宽松的到达条件
+ // 检查是否到达目标 - 高精度到达判定
const actualDistance = getDistance(current.lat, current.lng, end.lat, end.lng);
- if (actualDistance < 300) { // 300米内认为到达
+
+ // 根据路径距离自适应到达判定精度
+ let arrivalThreshold = 5; // 默认5米精度
+ if (pathDistance <= 500) {
+ arrivalThreshold = 1; // 短距离:1米精度
+ } else if (pathDistance <= 2000) {
+ arrivalThreshold = 3; // 中距离:3米精度
+ } else if (pathDistance <= 5000) {
+ arrivalThreshold = 10; // 较长距离:10米精度
+ } else {
+ arrivalThreshold = 50; // 长距离:50米精度
+ }
+
+ if (actualDistance < arrivalThreshold) { // 高精度到达判定
console.log(`A*算法成功,迭代${iterations}次,距离目标${Math.round(actualDistance)}米`);
const path = reconstructPath(current);
@@ -305,10 +569,10 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
};
}
- // 扩展邻居节点 - 完全参考Python实现
+ // 扩展邻居节点 - 完全参考Python实现
for (const [dx, dy] of directions) {
- const nextLng = current.lng + dx * gridSize;
- const nextLat = current.lat + dy * gridSize;
+ const nextLng = current.lng + dx * finalGridSize;
+ const nextLat = current.lat + dy * finalGridSize;
// 更宽松的边界检查
if (!isWithinBoundsRelaxed(nextLng, nextLat, start, end)) continue;
@@ -316,29 +580,35 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
const nextGridPos = getNodeKey(nextLng, nextLat);
if (closedSet.has(nextGridPos)) continue;
- // 威胁区检查 - 完全参考Python逻辑
- const threatInfo = isPointInAnyThreatZone(nextLng, nextLat, threatZones);
-
- // 详细调试信息
- if (iterations <= 10 || iterations % 1000 === 0) {
- console.log(`迭代${iterations}: 检查点(${nextLng.toFixed(6)}, ${nextLat.toFixed(6)}) - 威胁状态: ${threatInfo.inThreat ? `在威胁区${threatInfo.zoneId}内` : '安全'}`);
- }
+ // 关键修复:检查路径段是否穿过威胁区(不仅仅是目标点)
+ const pathSegmentSafe = isPathSegmentSafe(current.lng, current.lat, nextLng, nextLat, threatZones, allowThreatZones);
- if (threatInfo.inThreat && !allowThreatZones) {
- threatZonesAvoided.add(threatInfo.zoneId);
- if (iterations <= 50 || iterations % 500 === 0) { // 增加调试频率
- console.log(`❌ 避开威胁区${threatInfo.zoneId},点(${nextLng.toFixed(6)}, ${nextLat.toFixed(6)})`);
+ if (!pathSegmentSafe.safe) {
+ if (pathSegmentSafe.threatZoneIds.length > 0) {
+ pathSegmentSafe.threatZoneIds.forEach(id => threatZonesAvoided.add(id));
+ }
+
+ if (iterations <= 100 || iterations % 200 === 0) {
+ console.log(`❌ 路径段穿过威胁区${pathSegmentSafe.threatZoneIds.join(',')},从(${current.lng.toFixed(6)}, ${current.lat.toFixed(6)})到(${nextLng.toFixed(6)}, ${nextLat.toFixed(6)})`);
}
continue;
}
- if (threatInfo.inThreat && allowThreatZones) {
- console.log(`⚠️ 允许进入威胁区${threatInfo.zoneId},点(${nextLng.toFixed(6)}, ${nextLat.toFixed(6)})`);
+ // 目标点威胁区检查
+ const threatInfo = isPointInAnyThreatZone(nextLng, nextLat, threatZones);
+
+ // 详细调试信息
+ if (iterations <= 20 || iterations % 500 === 0) {
+ console.log(`迭代${iterations}: 路径段安全,点(${nextLng.toFixed(6)}, ${nextLat.toFixed(6)}) - 威胁状态: ${threatInfo.inThreat ? `在威胁区${threatInfo.zoneId}内(${threatInfo.level})` : '安全'}`);
+ }
+
+ if (threatInfo.inThreat && pathSegmentSafe.passedThreatZones.length > 0) {
+ pathSegmentSafe.passedThreatZones.forEach(id => threatZonesPassed.add(id));
}
// 计算移动代价 - 参考Python实现
const isDiagonal = dx !== 0 && dy !== 0;
- const moveCost = isDiagonal ? gridSize * Math.sqrt(2) : gridSize; // 使用数学精确值
+ const moveCost = isDiagonal ? finalGridSize * Math.sqrt(2) : finalGridSize; // 使用数学精确值
// 威胁区域惩罚 - 参考Python实现
let threatPenalty = 0;
@@ -371,7 +641,20 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
// 如果没找到精确路径,返回最接近的路径
const finalDistance = getDistance(bestNode.lat, bestNode.lng, end.lat, end.lng);
- if (finalDistance < 2000) { // 2km内认为可接受
+
+ // 根据原始路径距离调整可接受的偏差
+ let acceptableDistance = 100; // 默认100米偏差
+ if (pathDistance <= 500) {
+ acceptableDistance = 10; // 短距离:10米偏差
+ } else if (pathDistance <= 2000) {
+ acceptableDistance = 30; // 中距离:30米偏差
+ } else if (pathDistance <= 5000) {
+ acceptableDistance = 100; // 较长距离:100米偏差
+ } else {
+ acceptableDistance = 500; // 长距离:500米偏差
+ }
+
+ if (finalDistance < acceptableDistance) { // 自适应偏差判定
console.log(`A*返回近似路径,距离目标${Math.round(finalDistance)}米`);
const path = reconstructPath(bestNode);
analyzeThreatZonesInPath(path, threatZones, threatZonesAvoided, threatZonesPassed);
@@ -393,8 +676,8 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
return await aStarPlanningImproved(start, end, threatZones, {
...options,
allowThreatZones: true,
- gridSize: Math.min(gridSize * 1.5, 0.002), // 适当放大网格
- maxIterations: maxIterations * 1.5
+ gridSize: Math.max(finalGridSize * 1.5, 0.001), // 适当放大网格,至少110米
+ maxIterations: Math.max(maxIterations * 1.5, 30000) // 确保至少30000次迭代
});
}
@@ -403,14 +686,24 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
// 最后尝试:简单直线路径
console.log('尝试简单直线路径作为备用方案');
const directPath = generateDirectPath(start, end, 10); // 生成10个中间点
+
+ // 分析直线路径的威胁区情况
+ const directThreatZonesAvoided = new Set();
+ const directThreatZonesPassed = new Set();
+
+ console.log('分析直线路径的威胁区情况...');
+ analyzeThreatZonesInPath(directPath, threatZones, directThreatZonesAvoided, directThreatZonesPassed);
+
+ console.log(`直线路径分析完成:穿过威胁区${Array.from(directThreatZonesPassed).join(',') || '无'}`);
+
return {
success: true,
path: directPath,
distance: calculatePathLength(directPath),
iterations: iterations,
- threatZonesAvoided: [],
- threatZonesPassed: [],
- warning: '使用直线路径,请注意避开威胁区域'
+ threatZonesAvoided: Array.from(directThreatZonesAvoided),
+ threatZonesPassed: Array.from(directThreatZonesPassed),
+ warning: `使用直线路径,穿过${directThreatZonesPassed.size}个威胁区域,请谨慎操作`
};
}
@@ -420,14 +713,30 @@ async function aStarPlanningImproved(start, end, threatZones, options = {}) {
function isWithinBoundsRelaxed(lng, lat, start, end) {
// 计算起点和终点的距离,动态调整边界
const distance = getDistance(start.lat, start.lng, end.lat, end.lng);
- const margin = Math.max(0.02, distance / 111000 * 0.3); // 至少2km边界,或30%的距离
+
+ // 根据路径距离自适应调整搜索边界 - 高精度模式
+ let margin;
+
+ if (distance <= 500) { // 小于500米:50米边距
+ margin = 50 / 111000; // 约0.00045度
+ } else if (distance <= 2000) { // 小于2km:200米边距
+ margin = 200 / 111000; // 约0.0018度
+ } else if (distance <= 5000) { // 小于5km:1km边距
+ margin = 1000 / 111000; // 约0.009度
+ } else { // 大于5km:使用传统边距
+ const baseMargin = 0.02; // 约2km基础边距
+ const dynamicMargin = distance / 111000 * 0.6; // 60%的距离作为边距
+ margin = Math.max(baseMargin, dynamicMargin);
+ }
const minLng = Math.min(start.lng, end.lng) - margin;
const maxLng = Math.max(start.lng, end.lng) + margin;
const minLat = Math.min(start.lat, end.lat) - margin;
const maxLat = Math.max(start.lat, end.lat) + margin;
- return lng >= minLng && lng <= maxLng && lat >= minLat && lat <= maxLat;
+ const withinBounds = lng >= minLng && lng <= maxLng && lat >= minLat && lat <= maxLat;
+
+ return withinBounds;
}
/**
@@ -438,16 +747,16 @@ function isWithinBoundsImproved(lng, lat, start, end) {
}
/**
- * 改进的威胁等级惩罚 - 参考Python实现
+ * 改进的威胁等级惩罚 - 增加惩罚力度确保避开威胁区
*/
function getThreatPenaltyImproved(level) {
const penalties = {
- 'low': 0.01, // 轻微惩罚
- 'medium': 0.05, // 中等惩罚
- 'high': 0.2, // 高惩罚
- 'critical': 1.0 // 极高惩罚
+ 'low': 0.1, // 轻微惩罚
+ 'medium': 0.5, // 中等惩罚
+ 'high': 2.0, // 高惩罚
+ 'critical': 10.0 // 极高惩罚
};
- return penalties[level] || 0.05;
+ return penalties[level] || 0.5;
}
/**
@@ -603,7 +912,7 @@ function smoothPathAdvanced(path, threatZones, options = {}) {
/**
* 优化后的路径清理 - 移除冗余点
*/
-function removeRedundantPoints(path, threshold = 0.0001) {
+function removeRedundantPoints(path, threshold = 0.00001) {
if (path.length <= 2) return path;
const optimized = [path[0]]; // 保留起点
@@ -851,15 +1160,69 @@ function sortTargetsByThreat(startPoint, targetPoints, threatZones) {
// 获取路径规划列表
router.get('/', async (req, res) => {
try {
- const [rows] = await db.execute(`
- SELECT * FROM path_plans
- ORDER BY created_at DESC
- LIMIT 50
- `);
+ const { status, algorithm, created_by, limit = 50, page = 1 } = req.query;
+
+ let sql = `
+ SELECT
+ id, name, description, start_latitude, start_longitude, end_latitude, end_longitude,
+ algorithm, distance, estimated_time, flight_altitude, flight_speed, waypoint_count,
+ status, visibility, color, created_by, created_at, updated_at, executed_at, completed_at
+ FROM path_plans
+ WHERE 1=1
+ `;
+ const params = [];
+
+ // 添加筛选条件
+ if (status) {
+ sql += ' AND status = ?';
+ params.push(status);
+ }
+
+ if (algorithm) {
+ sql += ' AND algorithm = ?';
+ params.push(algorithm);
+ }
+
+ if (created_by) {
+ sql += ' AND created_by = ?';
+ params.push(created_by);
+ }
+
+ // 添加分页
+ sql += ' ORDER BY created_at DESC LIMIT ? OFFSET ?';
+ params.push(parseInt(limit), (parseInt(page) - 1) * parseInt(limit));
+
+ const [rows] = await db.execute(sql, params);
+
+ // 获取总数
+ let countSql = 'SELECT COUNT(*) as total FROM path_plans WHERE 1=1';
+ const countParams = [];
+
+ if (status) {
+ countSql += ' AND status = ?';
+ countParams.push(status);
+ }
+ if (algorithm) {
+ countSql += ' AND algorithm = ?';
+ countParams.push(algorithm);
+ }
+ if (created_by) {
+ countSql += ' AND created_by = ?';
+ countParams.push(created_by);
+ }
+
+ const [countRows] = await db.execute(countSql, countParams);
+ const total = countRows[0].total;
res.json({
success: true,
- data: rows
+ data: rows,
+ pagination: {
+ total,
+ page: parseInt(page),
+ limit: parseInt(limit),
+ totalPages: Math.ceil(total / parseInt(limit))
+ }
});
} catch (error) {
console.error('获取路径规划列表失败:', error);
@@ -870,6 +1233,83 @@ router.get('/', async (req, res) => {
}
});
+// 获取单个路径规划详情(包含完整路径点)
+router.get('/:id', async (req, res) => {
+ try {
+ const id = parseInt(req.params.id);
+
+ const [rows] = await db.execute(`
+ SELECT * FROM path_plans WHERE id = ?
+ `, [id]);
+
+ if (rows.length === 0) {
+ return res.status(404).json({
+ success: false,
+ message: '路径规划不存在'
+ });
+ }
+
+ const pathPlan = rows[0];
+
+ // 解析JSON字段
+ try {
+ pathPlan.path_points = typeof pathPlan.path_points === 'string'
+ ? JSON.parse(pathPlan.path_points)
+ : pathPlan.path_points;
+
+ if (pathPlan.smoothed_path_points) {
+ pathPlan.smoothed_path_points = typeof pathPlan.smoothed_path_points === 'string'
+ ? JSON.parse(pathPlan.smoothed_path_points)
+ : pathPlan.smoothed_path_points;
+ }
+
+ if (pathPlan.original_path_points) {
+ pathPlan.original_path_points = typeof pathPlan.original_path_points === 'string'
+ ? JSON.parse(pathPlan.original_path_points)
+ : pathPlan.original_path_points;
+ }
+
+ if (pathPlan.threat_zones_avoided) {
+ pathPlan.threat_zones_avoided = typeof pathPlan.threat_zones_avoided === 'string'
+ ? JSON.parse(pathPlan.threat_zones_avoided)
+ : pathPlan.threat_zones_avoided;
+ }
+
+ if (pathPlan.threat_zones_passed) {
+ pathPlan.threat_zones_passed = typeof pathPlan.threat_zones_passed === 'string'
+ ? JSON.parse(pathPlan.threat_zones_passed)
+ : pathPlan.threat_zones_passed;
+ }
+
+ if (pathPlan.target_order) {
+ pathPlan.target_order = typeof pathPlan.target_order === 'string'
+ ? JSON.parse(pathPlan.target_order)
+ : pathPlan.target_order;
+ }
+
+ if (pathPlan.planning_options) {
+ pathPlan.planning_options = typeof pathPlan.planning_options === 'string'
+ ? JSON.parse(pathPlan.planning_options)
+ : pathPlan.planning_options;
+ }
+
+ } catch (parseError) {
+ console.error('解析路径规划JSON字段失败:', parseError);
+ }
+
+ res.json({
+ success: true,
+ data: pathPlan
+ });
+ } catch (error) {
+ console.error('获取路径规划详情失败:', error);
+ res.status(500).json({
+ success: false,
+ message: '获取路径规划详情失败'
+ });
+ }
+});
+
// 创建新的路径规划
router.post('/', async (req, res) => {
console.log('=== 改进版路径规划请求 ===');
@@ -962,38 +1402,81 @@ router.post('/', async (req, res) => {
// 计算飞行时间
const estimatedTime = Math.ceil(result.distance / (flightSpeed * 1000 / 60)); // 分钟
+ // 执行路径平滑处理
+ let smoothedPath = result.path;
+ let originalPath = result.path;
+
+ // 如果路径点过多,执行平滑处理
+ if (result.path.length > 20) {
+ try {
+ smoothedPath = smoothPathAdvanced(result.path, threatZones, {
+ iterations: 5,
+ smoothFactor: 0.3,
+ preserveWaypoints: true
+ });
+ console.log(`路径平滑完成:${result.path.length} -> ${smoothedPath.length} 个点`);
+ } catch (smoothError) {
+ console.error('路径平滑失败,使用原始路径:', smoothError);
+ smoothedPath = result.path;
+ }
+ }
+
+ // 生成路径名称
+ const timestamp = new Date().toLocaleString('zh-CN');
+ const pathName = req.body.name || `A*路径规划-${timestamp}`;
+ const pathDescription = req.body.description ||
+ `${algorithm.toUpperCase()}算法规划路径,距离${(result.distance/1000).toFixed(2)}km,避开${result.threatZonesAvoided?.length || 0}个威胁区`;
+
+ // 随机生成路径颜色
+ const colors = ['#FF5722', '#2196F3', '#4CAF50', '#FF9800', '#9C27B0', '#00BCD4', '#795548'];
+ const randomColor = colors[Math.floor(Math.random() * colors.length)];
+
// 保存到数据库
const pathData = {
- name: `改进A*路径-${Date.now()}`,
+ name: pathName,
+ description: pathDescription,
start_latitude: startPoint.lat,
start_longitude: startPoint.lng,
end_latitude: targets[targets.length - 1].lat,
end_longitude: targets[targets.length - 1].lng,
- path_points: JSON.stringify(result.path),
+ path_points: JSON.stringify(smoothedPath), // 保存平滑后的路径作为主要路径
+ smoothed_path_points: JSON.stringify(smoothedPath),
+ original_path_points: JSON.stringify(originalPath),
algorithm: algorithm,
distance: Math.round(result.distance),
estimated_time: estimatedTime,
flight_altitude: flightAltitude,
flight_speed: flightSpeed,
+ waypoint_count: smoothedPath.length,
threat_zones_avoided: JSON.stringify(result.threatZonesAvoided || []),
threat_zones_passed: JSON.stringify(result.threatZonesPassed || []),
target_order: JSON.stringify(result.targetOrder || []),
- status: 'planned'
+ planning_options: JSON.stringify({
+ gridSize: 0.001,
+ maxIterations: 8000,
+ smoothed: smoothedPath.length !== originalPath.length
+ }),
+ status: 'planned',
+ visibility: 'public',
+ color: randomColor,
+ created_by: req.user?.id || null // 如果有用户认证信息
};
const [insertResult] = await db.execute(`
INSERT INTO path_plans (
- name, start_latitude, start_longitude, end_latitude, end_longitude,
- path_points, algorithm, distance, estimated_time, flight_altitude,
- flight_speed, threat_zones_avoided, threat_zones_passed, target_order,
- status, created_at, updated_at
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())
+ name, description, start_latitude, start_longitude, end_latitude, end_longitude,
+ path_points, smoothed_path_points, original_path_points, algorithm, distance,
+ estimated_time, flight_altitude, flight_speed, waypoint_count, threat_zones_avoided,
+ threat_zones_passed, target_order, planning_options, status, visibility, color,
+ created_by, created_at, updated_at
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())
`, [
- pathData.name, pathData.start_latitude, pathData.start_longitude,
- pathData.end_latitude, pathData.end_longitude, pathData.path_points,
- pathData.algorithm, pathData.distance, pathData.estimated_time,
- pathData.flight_altitude, pathData.flight_speed, pathData.threat_zones_avoided,
- pathData.threat_zones_passed, pathData.target_order, pathData.status
+ pathData.name, pathData.description, pathData.start_latitude, pathData.start_longitude,
+ pathData.end_latitude, pathData.end_longitude, pathData.path_points, pathData.smoothed_path_points,
+ pathData.original_path_points, pathData.algorithm, pathData.distance, pathData.estimated_time,
+ pathData.flight_altitude, pathData.flight_speed, pathData.waypoint_count, pathData.threat_zones_avoided,
+ pathData.threat_zones_passed, pathData.target_order, pathData.planning_options, pathData.status,
+ pathData.visibility, pathData.color, pathData.created_by
]);
console.log('改进版路径规划成功完成');
@@ -1002,18 +1485,26 @@ router.post('/', async (req, res) => {
success: true,
data: {
id: insertResult.insertId,
- path_points: result.path,
+ name: pathName,
+ description: pathDescription,
+ path_points: smoothedPath,
+ smoothed_path_points: smoothedPath,
+ original_path_points: originalPath,
algorithm: algorithm,
distance: result.distance,
estimated_time: estimatedTime,
+ waypoint_count: smoothedPath.length,
+ color: randomColor,
threat_zones_avoided: result.threatZonesAvoided || [],
threat_zones_passed: result.threatZonesPassed || []
},
details: {
totalDistance: result.distance,
estimatedTime: estimatedTime,
- waypointCount: result.path.length,
+ waypointCount: smoothedPath.length,
+ originalWaypointCount: originalPath.length,
algorithm: algorithm,
+ smoothed: smoothedPath.length !== originalPath.length,
threatZonesAvoided: result.threatZonesAvoided || [],
threatZonesPassed: result.threatZonesPassed || [],
targetOrder: result.targetOrder || []
@@ -1032,6 +1523,169 @@ router.post('/', async (req, res) => {
}
});
+// 获取所有历史路径用于地图显示(只返回必要的路径点数据)
+router.get('/history/all', async (req, res) => {
+ try {
+ const { include_original = false } = req.query;
+
+ const [rows] = await db.execute(`
+ SELECT
+ id, name, description, path_points, ${include_original === 'true' ? 'original_path_points,' : ''}
+ algorithm, distance, status, color, created_at, waypoint_count
+ FROM path_plans
+ WHERE visibility = 'public'
+ ORDER BY created_at DESC
+ `);
+
+ // 处理路径点数据
+ const paths = rows.map(row => {
+ let pathPoints = [];
+ let originalPathPoints = [];
+
+ try {
+ pathPoints = typeof row.path_points === 'string'
+ ? JSON.parse(row.path_points)
+ : row.path_points || [];
+
+ if (include_original === 'true' && row.original_path_points) {
+ originalPathPoints = typeof row.original_path_points === 'string'
+ ? JSON.parse(row.original_path_points)
+ : row.original_path_points || [];
+ }
+ } catch (parseError) {
+ console.error(`解析路径${row.id}数据失败:`, parseError);
+ pathPoints = [];
+ }
+
+ const result = {
+ id: row.id,
+ name: row.name,
+ description: row.description,
+ path_points: pathPoints,
+ algorithm: row.algorithm,
+ distance: row.distance,
+ status: row.status,
+ color: row.color || '#FF5722',
+ created_at: row.created_at,
+ waypoint_count: row.waypoint_count
+ };
+
+ if (include_original === 'true') {
+ result.original_path_points = originalPathPoints;
+ }
+
+ return result;
+ });
+
+ res.json({
+ success: true,
+ data: paths,
+ total: paths.length,
+ message: `获取到${paths.length}条历史路径`
+ });
+ } catch (error) {
+ console.error('获取历史路径失败:', error);
+ res.status(500).json({
+ success: false,
+ message: '获取历史路径失败'
+ });
+ }
+});
+
+// 更新路径状态
+router.put('/:id/status', async (req, res) => {
+ try {
+ const id = parseInt(req.params.id);
+ const { status, execution_result } = req.body;
+
+ if (!['planned', 'executing', 'completed', 'failed', 'cancelled'].includes(status)) {
+ return res.status(400).json({
+ success: false,
+ message: '无效的状态值'
+ });
+ }
+
+ let updateFields = 'status = ?';
+ let params = [status];
+
+ // 根据状态更新相应的时间字段
+ if (status === 'executing') {
+ updateFields += ', executed_at = NOW()';
+ } else if (status === 'completed') {
+ updateFields += ', completed_at = NOW()';
+ }
+
+ // 如果提供了执行结果,也一并更新
+ if (execution_result) {
+ updateFields += ', execution_result = ?';
+ params.push(JSON.stringify(execution_result));
+ }
+
+ params.push(id);
+
+ const [result] = await db.execute(
+ `UPDATE path_plans SET ${updateFields}, updated_at = NOW() WHERE id = ?`,
+ params
+ );
+
+ if (result.affectedRows === 0) {
+ return res.status(404).json({
+ success: false,
+ message: '路径规划不存在'
+ });
+ }
+
+ res.json({
+ success: true,
+ message: '路径状态更新成功'
+ });
+ } catch (error) {
+ console.error('更新路径状态失败:', error);
+ res.status(500).json({
+ success: false,
+ message: '更新路径状态失败'
+ });
+ }
+});
+
+// 更新路径可见性
+router.put('/:id/visibility', async (req, res) => {
+ try {
+ const id = parseInt(req.params.id);
+ const { visibility } = req.body;
+
+ if (!['public', 'private'].includes(visibility)) {
+ return res.status(400).json({
+ success: false,
+ message: '无效的可见性值'
+ });
+ }
+
+ const [result] = await db.execute(
+ 'UPDATE path_plans SET visibility = ?, updated_at = NOW() WHERE id = ?',
+ [visibility, id]
+ );
+
+ if (result.affectedRows === 0) {
+ return res.status(404).json({
+ success: false,
+ message: '路径规划不存在'
+ });
+ }
+
+ res.json({
+ success: true,
+ message: '路径可见性更新成功'
+ });
+ } catch (error) {
+ console.error('更新路径可见性失败:', error);
+ res.status(500).json({
+ success: false,
+ message: '更新路径可见性失败'
+ });
+ }
+});
+
// 删除路径规划
router.delete('/:id', async (req, res) => {
try {
@@ -1067,4 +1721,7 @@ module.exports = router;
module.exports.isPointInThreatZone = isPointInThreatZone;
module.exports.isPointInAnyThreatZone = isPointInAnyThreatZone;
module.exports.pointInPolygon = pointInPolygon;
+module.exports.pointInPolygonImproved = pointInPolygonImproved;
+module.exports.isPathSegmentSafe = isPathSegmentSafe;
+module.exports.aStarPlanningImproved = aStarPlanningImproved;
module.exports.getDistance = getDistance;
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/backend/src/routes/threatZones.js b/Src/command_center/web-command-center/backend/src/routes/threatZones.js
index 562a8ee0..bdf19c19 100644
--- a/Src/command_center/web-command-center/backend/src/routes/threatZones.js
+++ b/Src/command_center/web-command-center/backend/src/routes/threatZones.js
@@ -108,13 +108,100 @@ router.get('/', async (req, res) => {
// 转换数据格式,兼容前端
const threatZones = rows.map(row => {
let geometryData = null
+ let convertedGeometry = null
+
try {
if (row.geometry_data) {
geometryData = typeof row.geometry_data === 'string' ? JSON.parse(row.geometry_data) : row.geometry_data
+
+ // 转换几何数据格式以匹配前端期望
+ if (row.geometry_type === 'circle') {
+ // 转换圆形:支持多种输入格式到 {center: [lng, lat], radius}
+ if (geometryData.center) {
+ let centerArray = null;
+
+ if (Array.isArray(geometryData.center) && geometryData.center.length === 2) {
+ // 已经是数组格式 [lng, lat]
+ centerArray = geometryData.center;
+ } else if (typeof geometryData.center === 'object' &&
+ geometryData.center.lng !== undefined && geometryData.center.lat !== undefined) {
+ // 对象格式 {lng, lat}
+ centerArray = [geometryData.center.lng, geometryData.center.lat];
+ }
+
+ if (centerArray && !isNaN(centerArray[0]) && !isNaN(centerArray[1])) {
+ convertedGeometry = {
+ type: row.geometry_type,
+ center: centerArray,
+ radius: geometryData.radius
+ };
+ }
+ }
+ } else if (row.geometry_type === 'polygon') {
+ // 转换多边形:支持多种输入格式到 {path: [[lng, lat]]}
+ let pathArray = null;
+
+ if (geometryData.path && Array.isArray(geometryData.path)) {
+ // 已经是 path 格式
+ pathArray = geometryData.path.map(point => {
+ if (Array.isArray(point) && point.length === 2) {
+ return point; // 已经是数组格式 [lng, lat]
+ } else if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {
+ return [point.lng, point.lat]; // 对象格式 {lng, lat}
+ }
+ return null;
+ }).filter(point => point !== null);
+ } else if (geometryData.coordinates && Array.isArray(geometryData.coordinates)) {
+ // coordinates 格式
+ pathArray = geometryData.coordinates.map(point => {
+ if (Array.isArray(point) && point.length === 2) {
+ return point; // 已经是数组格式 [lng, lat]
+ } else if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {
+ return [point.lng, point.lat]; // 对象格式 {lng, lat}
+ }
+ return null;
+ }).filter(point => point !== null);
+ }
+
+ if (pathArray && pathArray.length >= 3) {
+ convertedGeometry = {
+ type: row.geometry_type,
+ path: pathArray
+ };
+ }
+ } else if (row.geometry_type === 'rectangle') {
+ // 转换矩形:支持多种输入格式到 {bounds: [swLng, swLat, neLng, neLat]}
+ let boundsArray = null;
+
+ if (geometryData.bounds && Array.isArray(geometryData.bounds) && geometryData.bounds.length === 4) {
+ // 已经是 bounds 数组格式 [swLng, swLat, neLng, neLat]
+ boundsArray = geometryData.bounds;
+ } else if (geometryData.southwest && geometryData.northeast) {
+ // 对象格式 {southwest: {lng, lat}, northeast: {lng, lat}}
+ if (typeof geometryData.southwest === 'object' && typeof geometryData.northeast === 'object' &&
+ geometryData.southwest.lng !== undefined && geometryData.southwest.lat !== undefined &&
+ geometryData.northeast.lng !== undefined && geometryData.northeast.lat !== undefined) {
+ boundsArray = [
+ geometryData.southwest.lng,
+ geometryData.southwest.lat,
+ geometryData.northeast.lng,
+ geometryData.northeast.lat
+ ];
+ }
+ }
+
+ if (boundsArray && boundsArray.every(val => !isNaN(val))) {
+ convertedGeometry = {
+ type: row.geometry_type,
+ bounds: boundsArray
+ };
+ }
+ }
}
} catch (error) {
console.error('解析威胁区几何数据失败:', error, row.geometry_data)
geometryData = null
+ convertedGeometry = null
}
return {
@@ -124,10 +211,10 @@ router.get('/', async (req, res) => {
description: row.description,
geometry_type: row.geometry_type,
geometry_data: geometryData,
- geometry: geometryData ? {
+ geometry: convertedGeometry || (geometryData ? {
type: row.geometry_type,
...geometryData
- } : null,
+ } : null),
timeRange: [row.time_start, row.time_end],
status: row.status,
createdAt: row.created_at,
@@ -171,15 +258,112 @@ router.get('/:id', async (req, res) => {
}
const row = rows[0]
+
+ // 转换几何数据格式以匹配前端期望
+ let geometryData = row.geometry_data
+ let convertedGeometry = null
+
+ try {
+ if (geometryData) {
+ geometryData = typeof geometryData === 'string' ? JSON.parse(geometryData) : geometryData
+
+ if (row.geometry_type === 'circle') {
+ // 转换圆形:支持多种输入格式到 {center: [lng, lat], radius}
+ if (geometryData.center) {
+ let centerArray = null;
+
+ if (Array.isArray(geometryData.center) && geometryData.center.length === 2) {
+ // 已经是数组格式 [lng, lat]
+ centerArray = geometryData.center;
+ } else if (typeof geometryData.center === 'object' &&
+ geometryData.center.lng !== undefined && geometryData.center.lat !== undefined) {
+ // 对象格式 {lng, lat}
+ centerArray = [geometryData.center.lng, geometryData.center.lat];
+ }
+
+ if (centerArray && !isNaN(centerArray[0]) && !isNaN(centerArray[1])) {
+ convertedGeometry = {
+ type: row.geometry_type,
+ center: centerArray,
+ radius: geometryData.radius
+ };
+ }
+ }
+ } else if (row.geometry_type === 'polygon') {
+ // 转换多边形:支持多种输入格式到 {path: [[lng, lat]]}
+ let pathArray = null;
+
+ if (geometryData.path && Array.isArray(geometryData.path)) {
+ // 已经是 path 格式
+ pathArray = geometryData.path.map(point => {
+ if (Array.isArray(point) && point.length === 2) {
+ return point; // 已经是数组格式 [lng, lat]
+ } else if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {
+ return [point.lng, point.lat]; // 对象格式 {lng, lat}
+ }
+ return null;
+ }).filter(point => point !== null);
+ } else if (geometryData.coordinates && Array.isArray(geometryData.coordinates)) {
+ // coordinates 格式
+ pathArray = geometryData.coordinates.map(point => {
+ if (Array.isArray(point) && point.length === 2) {
+ return point; // 已经是数组格式 [lng, lat]
+ } else if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {
+ return [point.lng, point.lat]; // 对象格式 {lng, lat}
+ }
+ return null;
+ }).filter(point => point !== null);
+ }
+
+ if (pathArray && pathArray.length >= 3) {
+ convertedGeometry = {
+ type: row.geometry_type,
+ path: pathArray
+ };
+ }
+ } else if (row.geometry_type === 'rectangle') {
+ // 转换矩形:支持多种输入格式到 {bounds: [swLng, swLat, neLng, neLat]}
+ let boundsArray = null;
+
+ if (geometryData.bounds && Array.isArray(geometryData.bounds) && geometryData.bounds.length === 4) {
+ // 已经是 bounds 数组格式 [swLng, swLat, neLng, neLat]
+ boundsArray = geometryData.bounds;
+ } else if (geometryData.southwest && geometryData.northeast) {
+ // 对象格式 {southwest: {lng, lat}, northeast: {lng, lat}}
+ if (typeof geometryData.southwest === 'object' && typeof geometryData.northeast === 'object' &&
+ geometryData.southwest.lng !== undefined && geometryData.southwest.lat !== undefined &&
+ geometryData.northeast.lng !== undefined && geometryData.northeast.lat !== undefined) {
+ boundsArray = [
+ geometryData.southwest.lng,
+ geometryData.southwest.lat,
+ geometryData.northeast.lng,
+ geometryData.northeast.lat
+ ];
+ }
+ }
+
+ if (boundsArray && boundsArray.every(val => !isNaN(val))) {
+ convertedGeometry = {
+ type: row.geometry_type,
+ bounds: boundsArray
+ };
+ }
+ }
+ }
+ } catch (error) {
+ console.error('解析威胁区几何数据失败:', error, row.geometry_data)
+ convertedGeometry = null
+ }
+
const zone = {
id: row.id,
type: row.type,
level: row.level,
description: row.description,
- geometry: {
+ geometry: convertedGeometry || (geometryData ? {
type: row.geometry_type,
- ...row.geometry_data
- },
+ ...geometryData
+ } : null),
timeRange: [row.time_start, row.time_end],
status: row.status,
createdAt: row.created_at,
diff --git a/Src/command_center/web-command-center/database/init.sql b/Src/command_center/web-command-center/database/init.sql
index 4e092e8d..4f42bb6c 100644
--- a/Src/command_center/web-command-center/database/init.sql
+++ b/Src/command_center/web-command-center/database/init.sql
@@ -60,32 +60,44 @@ CREATE TABLE threat_zones (
-- 删除现有路径规划表(如果存在)以确保结构正确
DROP TABLE IF EXISTS path_plans;
--- 创建路径规划表(基于最新API结构)
+-- 创建路径规划表(增强版本,支持完整的路径保存和历史查看)
CREATE TABLE path_plans (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) DEFAULT NULL COMMENT '路径规划名称',
+ description TEXT DEFAULT NULL COMMENT '路径描述信息',
start_latitude DECIMAL(10, 7) NOT NULL COMMENT '起点纬度',
start_longitude DECIMAL(10, 7) NOT NULL COMMENT '起点经度',
end_latitude DECIMAL(10, 7) NOT NULL COMMENT '终点纬度',
end_longitude DECIMAL(10, 7) NOT NULL COMMENT '终点经度',
path_points JSON NOT NULL COMMENT '路径点数据,包含lng, lat, altitude',
+ smoothed_path_points JSON DEFAULT NULL COMMENT '平滑后的路径点数据',
+ original_path_points JSON DEFAULT NULL COMMENT '原始A*算法路径点(未平滑)',
algorithm VARCHAR(20) NOT NULL DEFAULT 'astar' COMMENT '使用的规划算法',
distance DECIMAL(10, 2) DEFAULT NULL COMMENT '路径总距离(米)',
estimated_time INT DEFAULT NULL COMMENT '预计时间(分钟)',
flight_altitude INT DEFAULT 100 COMMENT '飞行高度(米)',
flight_speed DECIMAL(5, 2) DEFAULT 10.00 COMMENT '飞行速度(米/秒)',
+ waypoint_count INT DEFAULT 0 COMMENT '路径点数量',
threat_zones_avoided JSON DEFAULT NULL COMMENT '避开的威胁区ID列表',
threat_zones_passed JSON DEFAULT NULL COMMENT '穿过的威胁区ID列表',
target_order JSON DEFAULT NULL COMMENT '目标点访问顺序',
+ planning_options JSON DEFAULT NULL COMMENT '规划时的选项参数',
+ execution_result JSON DEFAULT NULL COMMENT '执行结果信息',
status ENUM('planned', 'executing', 'completed', 'failed', 'cancelled') NOT NULL DEFAULT 'planned',
+ visibility ENUM('public', 'private') NOT NULL DEFAULT 'public' COMMENT '路径可见性',
+ color VARCHAR(7) DEFAULT '#FF5722' COMMENT '路径显示颜色',
+ created_by INT DEFAULT NULL COMMENT '创建者ID',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
executed_at TIMESTAMP NULL COMMENT '开始执行时间',
completed_at TIMESTAMP NULL COMMENT '完成时间',
INDEX idx_status (status),
INDEX idx_algorithm (algorithm),
- INDEX idx_created_at (created_at)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='路径规划表';
+ INDEX idx_created_at (created_at),
+ INDEX idx_created_by (created_by),
+ INDEX idx_visibility (visibility),
+ FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='路径规划表(增强版)';
-- ============================================
-- 4. 操作日志系统
@@ -116,71 +128,130 @@ INSERT INTO users (username, password, role)
VALUES ('admin', '$2a$10$X7UrH5QxX5QxX5QxX5QxX.5QxX5QxX5QxX5QxX5QxX5QxX5QxX5Qx', 'admin')
ON DUPLICATE KEY UPDATE username = username;
--- 插入示例威胁区数据
-INSERT INTO threat_zones (type, level, description, geometry_type, geometry_data, time_start, time_end, status, created_by)
-VALUES
-('radar', 'high', 'Radar Station', 'circle',
- JSON_OBJECT('center', JSON_OBJECT('lng', 112.982279, 'lat', 28.19409), 'radius', 2000),
- '2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active', 1),
-('missile', 'critical', 'Missile Site', 'circle',
- JSON_OBJECT('center', JSON_OBJECT('lng', 112.992279, 'lat', 28.18409), 'radius', 3000),
- '2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active', 1),
-('aircraft', 'medium', 'Air Patrol Zone', 'polygon',
- JSON_OBJECT('coordinates', JSON_ARRAY(
- JSON_OBJECT('lng', 112.970000, 'lat', 28.200000),
- JSON_OBJECT('lng', 112.990000, 'lat', 28.200000),
- JSON_OBJECT('lng', 112.990000, 'lat', 28.180000),
- JSON_OBJECT('lng', 112.970000, 'lat', 28.180000)
- )),
- '2024-01-01 06:00:00', '2024-01-01 18:00:00', 'active', 1),
-('weather', 'low', 'Weather Zone', 'rectangle',
- JSON_OBJECT('southwest', JSON_OBJECT('lng', 112.960000, 'lat', 28.170000), 'northeast', JSON_OBJECT('lng', 112.980000, 'lat', 28.190000)),
- '2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active', 1),
-('ground', 'medium', 'Military Base', 'polygon',
- JSON_OBJECT('coordinates', JSON_ARRAY(
- JSON_OBJECT('lng', 112.975000, 'lat', 28.195000),
- JSON_OBJECT('lng', 112.980000, 'lat', 28.195000),
- JSON_OBJECT('lng', 112.980000, 'lat', 28.190000),
- JSON_OBJECT('lng', 112.975000, 'lat', 28.190000)
- )),
- '2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active', 1);
-
--- 插入示例路径规划数据
+-- 插入示例路径规划数据(增强版本)
INSERT INTO path_plans (
- name, start_latitude, start_longitude, end_latitude, end_longitude,
- path_points, algorithm, distance, estimated_time, flight_altitude, flight_speed,
- threat_zones_avoided, status
+ name, description, start_latitude, start_longitude, end_latitude, end_longitude,
+ path_points, smoothed_path_points, original_path_points, algorithm, distance,
+ estimated_time, flight_altitude, flight_speed, waypoint_count, threat_zones_avoided,
+ planning_options, status, visibility, color, created_by
) VALUES
(
- '长沙市区巡逻路径', 28.194090, 112.982279, 28.200000, 112.990000,
+ '长沙市区巡逻路径',
+ 'A*算法规划路径,距离1.20km,避开2个威胁区',
+ 28.194090, 112.982279, 28.200000, 112.990000,
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.982279, 'lat', 28.194090, 'altitude', 100),
+ JSON_OBJECT('lng', 112.985000, 'lat', 28.197000, 'altitude', 100),
+ JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 100)
+ ),
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.982279, 'lat', 28.194090, 'altitude', 100),
+ JSON_OBJECT('lng', 112.985000, 'lat', 28.197000, 'altitude', 100),
+ JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 100)
+ ),
JSON_ARRAY(
JSON_OBJECT('lng', 112.982279, 'lat', 28.194090, 'altitude', 100),
+ JSON_OBJECT('lng', 112.984000, 'lat', 28.195500, 'altitude', 100),
JSON_OBJECT('lng', 112.985000, 'lat', 28.197000, 'altitude', 100),
+ JSON_OBJECT('lng', 112.987000, 'lat', 28.198500, 'altitude', 100),
JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 100)
),
- 'astar', 1200.50, 8, 100, 10.0,
- JSON_ARRAY(1, 2), 'completed'
+ 'astar', 1200.50, 8, 100, 10.0, 3,
+ JSON_ARRAY(1, 2),
+ JSON_OBJECT('gridSize', 0.001, 'maxIterations', 8000, 'smoothed', true),
+ 'completed', 'public', '#FF5722', 1
),
(
- '湘江沿岸监控路径', 28.196000, 112.985000, 28.205000, 112.995000,
+ '湘江沿岸监控路径',
+ 'A*算法规划路径,距离1.80km,避开2个威胁区',
+ 28.196000, 112.985000, 28.205000, 112.995000,
JSON_ARRAY(
JSON_OBJECT('lng', 112.985000, 'lat', 28.196000, 'altitude', 120),
JSON_OBJECT('lng', 112.988000, 'lat', 28.199000, 'altitude', 120),
JSON_OBJECT('lng', 112.992000, 'lat', 28.202000, 'altitude', 120),
JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 120)
),
- 'astar', 1800.75, 12, 120, 10.0,
- JSON_ARRAY(1, 3), 'executing'
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.985000, 'lat', 28.196000, 'altitude', 120),
+ JSON_OBJECT('lng', 112.988000, 'lat', 28.199000, 'altitude', 120),
+ JSON_OBJECT('lng', 112.992000, 'lat', 28.202000, 'altitude', 120),
+ JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 120)
+ ),
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.985000, 'lat', 28.196000, 'altitude', 120),
+ JSON_OBJECT('lng', 112.986500, 'lat', 28.197500, 'altitude', 120),
+ JSON_OBJECT('lng', 112.988000, 'lat', 28.199000, 'altitude', 120),
+ JSON_OBJECT('lng', 112.990000, 'lat', 28.200500, 'altitude', 120),
+ JSON_OBJECT('lng', 112.992000, 'lat', 28.202000, 'altitude', 120),
+ JSON_OBJECT('lng', 112.993500, 'lat', 28.203500, 'altitude', 120),
+ JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 120)
+ ),
+ 'astar', 1800.75, 12, 120, 10.0, 4,
+ JSON_ARRAY(1, 3),
+ JSON_OBJECT('gridSize', 0.001, 'maxIterations', 8000, 'smoothed', true),
+ 'executing', 'public', '#2196F3', 1
),
(
- '橘子洲头勘察路径', 28.180000, 112.970000, 28.185000, 112.975000,
+ '橘子洲头勘察路径',
+ '直线规划路径,距离0.80km,无威胁区域',
+ 28.180000, 112.970000, 28.185000, 112.975000,
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.970000, 'lat', 28.180000, 'altitude', 50),
+ JSON_OBJECT('lng', 112.972000, 'lat', 28.182000, 'altitude', 60),
+ JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 50)
+ ),
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.970000, 'lat', 28.180000, 'altitude', 50),
+ JSON_OBJECT('lng', 112.972000, 'lat', 28.182000, 'altitude', 60),
+ JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 50)
+ ),
JSON_ARRAY(
JSON_OBJECT('lng', 112.970000, 'lat', 28.180000, 'altitude', 50),
JSON_OBJECT('lng', 112.972000, 'lat', 28.182000, 'altitude', 60),
JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 50)
),
- 'straight', 800.25, 5, 50, 8.0,
- JSON_ARRAY(), 'planned'
+ 'straight', 800.25, 5, 50, 8.0, 3,
+ JSON_ARRAY(),
+ JSON_OBJECT('gridSize', 0.001, 'maxIterations', 0, 'smoothed', false),
+ 'planned', 'public', '#4CAF50', 1
+),
+(
+ '高速避障路径测试',
+ 'A*算法规划路径,距离2.15km,避开4个威胁区',
+ 28.175000, 112.965000, 28.210000, 113.000000,
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.965000, 'lat', 28.175000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.970000, 'lat', 28.178000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.985000, 'lat', 28.195000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 150),
+ JSON_OBJECT('lng', 113.000000, 'lat', 28.210000, 'altitude', 150)
+ ),
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.965000, 'lat', 28.175000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.970000, 'lat', 28.178000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.985000, 'lat', 28.195000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 150),
+ JSON_OBJECT('lng', 113.000000, 'lat', 28.210000, 'altitude', 150)
+ ),
+ JSON_ARRAY(
+ JSON_OBJECT('lng', 112.965000, 'lat', 28.175000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.967000, 'lat', 28.176000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.970000, 'lat', 28.178000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.972000, 'lat', 28.180000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.980000, 'lat', 28.190000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.985000, 'lat', 28.195000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 150),
+ JSON_OBJECT('lng', 112.998000, 'lat', 28.208000, 'altitude', 150),
+ JSON_OBJECT('lng', 113.000000, 'lat', 28.210000, 'altitude', 150)
+ ),
+ 'astar', 2150.80, 15, 150, 12.0, 6,
+ JSON_ARRAY(1, 2, 3, 4),
+ JSON_OBJECT('gridSize', 0.0005, 'maxIterations', 10000, 'smoothed', true),
+ 'completed', 'public', '#FF9800', 1
);
-- ============================================
@@ -214,6 +285,10 @@ FROM path_plans
GROUP BY algorithm, status
ORDER BY algorithm, status;
+-- ============================================
+-- 初始化完成
+-- ============================================
+
-- ============================================
-- 初始化完成
-- ============================================
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/021d12f1f2fd58d24bf0dce17f91671a5970f6f4da3ccdd1ce98cb149f1ed74f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/021d12f1f2fd58d24bf0dce17f91671a5970f6f4da3ccdd1ce98cb149f1ed74f.json
new file mode 100644
index 00000000..c8ef81ec
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/021d12f1f2fd58d24bf0dce17f91671a5970f6f4da3ccdd1ce98cb149f1ed74f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/04b29e961f787846edbde50bb742961dfaa8b482108bd73f6de15ca697d26bb2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/04b29e961f787846edbde50bb742961dfaa8b482108bd73f6de15ca697d26bb2.json
new file mode 100644
index 00000000..fed761bb
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/04b29e961f787846edbde50bb742961dfaa8b482108bd73f6de15ca697d26bb2.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: activePanel.value === 'threatZone'\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","clickable","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/06de89e4a4955e76dea58473c8112335cdfbf8e5dbd7e63fee7a8524a5e7a667.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/06de89e4a4955e76dea58473c8112335cdfbf8e5dbd7e63fee7a8524a5e7a667.json
new file mode 100644
index 00000000..e5a4af8a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/06de89e4a4955e76dea58473c8112335cdfbf8e5dbd7e63fee7a8524a5e7a667.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/08e601cba472cf009f5821614601161b2ed08267a389f28a6900f261307621ee.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/08e601cba472cf009f5821614601161b2ed08267a389f28a6900f261307621ee.json
new file mode 100644
index 00000000..3976b677
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/08e601cba472cf009f5821614601161b2ed08267a389f28a6900f261307621ee.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/092ac74aad4bc4d882e5392fb6d5066362fe196d1575759702d885a66ccb98e9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/092ac74aad4bc4d882e5392fb6d5066362fe196d1575759702d885a66ccb98e9.json
new file mode 100644
index 00000000..5a0298c0
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/092ac74aad4bc4d882e5392fb6d5066362fe196d1575759702d885a66ccb98e9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/09bc521498f1c216718e2dfafca33bd62822bb1ad82891fcda7f481286cb9cbe.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/09bc521498f1c216718e2dfafca33bd62822bb1ad82891fcda7f481286cb9cbe.json
new file mode 100644
index 00000000..bc9cca09
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/09bc521498f1c216718e2dfafca33bd62822bb1ad82891fcda7f481286cb9cbe.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 显示历史路径对话框\n const showHistoryDialog = () => {\n historyDialogVisible.value = true;\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`);\n if (response.data.success) {\n historyPaths.value = response.data.data;\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n ElMessage.error('获取历史路径失败');\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return {\n lng: parseFloat(point.lng),\n lat: parseFloat(point.lat),\n altitude: point.altitude || pathData.flight_altitude || 100\n };\n } else if (Array.isArray(point) && point.length >= 2) {\n return {\n lng: parseFloat(point[0]),\n lat: parseFloat(point[1]),\n altitude: point[2] || pathData.flight_altitude || 100\n };\n } else {\n console.warn(`路径点格式不正确 (索引${index}):`, point);\n return null;\n }\n }).filter(point => point !== null);\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: pathData.flight_altitude || 100,\n flightSpeed: pathData.flight_speed || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","showHistoryDialog","loadHistoryPaths","response","data","success","error","console","selectHistoryPath","loadHistoryPath","log","id","pathData","path_points","JSON","parse","e","isArray","length","map","point","index","lng","undefined","lat","parseFloat","flight_altitude","warn","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","message","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/0c90b168484b7971d039c26d21569dd2fdb4e538c7f911a2f6911f874634be21.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/0c90b168484b7971d039c26d21569dd2fdb4e538c7f911a2f6911f874634be21.json
new file mode 100644
index 00000000..982123cf
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/0c90b168484b7971d039c26d21569dd2fdb4e538c7f911a2f6911f874634be21.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[11] || (_cache[11] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[10] || (_cache[10] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [10]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[16] || (_cache[16] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[12] || (_cache[12] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[13] || (_cache[13] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [13]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: _ctx.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [14]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: _ctx.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[15] || (_cache[15] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [15]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[17] || (_cache[17] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [17]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[18] || (_cache[18] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [18]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [19]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[28] || (_cache[28] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[21] || (_cache[21] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[24] || (_cache[24] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[26] || (_cache[26] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[27] || (_cache[27] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [27]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[29] || (_cache[29] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [29]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[30] || (_cache[30] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [30]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [31]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n })]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","$setup","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11b7d7b1a51810b1141d81ce51ba15a9685a1706abb22f05a52388676feda5e8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11b7d7b1a51810b1141d81ce51ba15a9685a1706abb22f05a52388676feda5e8.json
new file mode 100644
index 00000000..d8dee84b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11b7d7b1a51810b1141d81ce51ba15a9685a1706abb22f05a52388676feda5e8.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11d058c7782210f573b3ddd1064aeb2e1480cc791eb9a3a178a0c4e48097dd9c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11d058c7782210f573b3ddd1064aeb2e1480cc791eb9a3a178a0c4e48097dd9c.json
new file mode 100644
index 00000000..e8e89059
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11d058c7782210f573b3ddd1064aeb2e1480cc791eb9a3a178a0c4e48097dd9c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1238842fdd36cd3b0dd9628843b40b065fc0d12d949f7aec1e6c7a1d39e268e5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1238842fdd36cd3b0dd9628843b40b065fc0d12d949f7aec1e6c7a1d39e268e5.json
new file mode 100644
index 00000000..01280dbd
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1238842fdd36cd3b0dd9628843b40b065fc0d12d949f7aec1e6c7a1d39e268e5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","_ctx","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/13de6d6f97a0980d20d6faf5b7288e4666b9f09e3df22401ce500195ae0eb653.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/13de6d6f97a0980d20d6faf5b7288e4666b9f09e3df22401ce500195ae0eb653.json
new file mode 100644
index 00000000..a4e7998b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/13de6d6f97a0980d20d6faf5b7288e4666b9f09e3df22401ce500195ae0eb653.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/147b7bb8c94c31486dc1f8922c6bb398abd32165f498b6302c8c52ce541e7484.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/147b7bb8c94c31486dc1f8922c6bb398abd32165f498b6302c8c52ce541e7484.json
new file mode 100644
index 00000000..dc63d4c5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/147b7bb8c94c31486dc1f8922c6bb398abd32165f498b6302c8c52ce541e7484.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/14ef89fce247e2fb2cd8b7f37a04d2613fa880152577037e651359f35f1c0afb.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/14ef89fce247e2fb2cd8b7f37a04d2613fa880152577037e651359f35f1c0afb.json
new file mode 100644
index 00000000..d5975736
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/14ef89fce247e2fb2cd8b7f37a04d2613fa880152577037e651359f35f1c0afb.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15fdac9fac57109ca64ef8bd277a18990b0ba29da8e9cf7e40f165210b53a4a5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15fdac9fac57109ca64ef8bd277a18990b0ba29da8e9cf7e40f165210b53a4a5.json
new file mode 100644
index 00000000..5397ce22
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15fdac9fac57109ca64ef8bd277a18990b0ba29da8e9cf7e40f165210b53a4a5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1,\n clickable: isClickable // 在非威胁区模式下完全禁用点击\n });\n\n // 动态管理点击事件监听器\n if (overlay._zoneClickHandler) {\n // 先移除现有的事件监听器\n overlay.off('click', overlay._zoneClickHandler);\n\n // 只在威胁区模式下重新绑定\n if (isClickable) {\n overlay.on('click', overlay._zoneClickHandler);\n }\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域交互状态已更新,可点击: ${isClickable},当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n if (activePanel.value === 'threatZone') {\n // 威胁区设置模式:处理威胁区选择\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n } else {\n // 其他模式:手动触发地图点击事件\n console.log('非威胁区模式,手动触发地图点击事件');\n try {\n // 获取点击位置\n const lnglat = e.lnglat;\n console.log('手动触发地图点击:', lnglat);\n\n // 手动调用地图点击处理函数\n onMapClick({\n lnglat\n });\n } catch (error) {\n console.error('手动触发地图点击失败:', error);\n }\n }\n };\n\n // 威胁区域始终绑定点击事件\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","clickable","_zoneClickHandler","off","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAoKA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAI,QAAS,KAAI;AAC5D,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAS,EAAEC,YAAW,QAAS,cAAa;AACrD,OAAOC,SAAQ,MAAO,6BAA4B;AAClD,OAAOC,aAAY,MAAO,4CAA2C;AACrE,OAAOC,eAAc,MAAO,8CAA6C;AACzE,OAAOC,iBAAgB,MAAO,gDAA+C;AAC7E,OAAOC,gBAAe,MAAO,+CAA8C;AAE3E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVN,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIX,QAAQ,CAAC;IACvB,MAAMY,YAAW,GAAIjB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMmB,WAAU,GAAInB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMoB,OAAM,GAAIpB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMqB,YAAW,GAAIrB,GAAG,CAAC,EAAE;IAC3B,MAAMsB,aAAY,GAAItB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMuB,WAAU,GAAIvB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMwB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIzB,GAAG,CAAC,IAAI;IACzB,MAAM0B,iBAAgB,GAAI1B,GAAG,CAAC,OAAO;IACrC,MAAM2B,WAAU,GAAI3B,GAAG,CAAC,QAAQ;IAChC,MAAM4B,YAAW,GAAI5B,GAAG,CAAC,IAAI;IAC7B,MAAM6B,iBAAgB,GAAI7B,GAAG,CAAC,EAAE;IAChC,MAAM8B,eAAc,GAAI9B,GAAG,CAAC,CAAC,IAAI+B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIjC,GAAG,CAAC,IAAI;IAC/B,MAAMkC,aAAY,GAAIlC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMmC,iBAAgB,GAAInC,GAAG,CAAC,KAAK;IACnC,MAAMoC,QAAO,GAAIpC,GAAG,CAAC;MACnBqC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAI1C,GAAG,CAAC,EAAE;IACzB,MAAM2C,WAAU,GAAI3C,GAAG,CAAC,EAAE;IAC1B,MAAM4C,QAAO,GAAI5C,GAAG,CAAC,IAAI;IACzB,MAAM6C,iBAAgB,GAAI7C,GAAG,CAAC,OAAO;IACrC,MAAM8C,cAAa,GAAI9C,GAAG,CAAC,GAAG;IAC9B,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMiD,oBAAmB,GAAIjD,GAAG,CAAC,EAAE;IACnC,MAAMkD,mBAAkB,GAAI,CAAC,GAAG;;IAEhC;IACA,MAAMC,SAAQ,GAAInD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMoD,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,gBAAe,GAAI;MACvBC,KAAK,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAEpD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAErD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEzD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAE1D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAE3D,IAAI,EAAE,MAAM;QAAEwD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BvD,WAAW,CAACwD,KAAI,GAAID,GAAE;MACtBhB,OAAO,CAACkB,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACF1B,SAAS,CAACwB,KAAI,GAAI,IAAIE,IAAI,CAACE,SAAS,CAACL,GAAG;UACxCvB,SAAS,CAACwB,KAAK,CAACK,EAAE,CAAC,MAAM,EAAEC,cAAc;UACzCvB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;QAC9B,EAAE,OAAOnB,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK;QACxC;MACF;;MAEA;MACAyB,WAAW,CAAC;IACd;;IAEA;IACA,MAAMA,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACFxB,OAAO,CAACkB,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMO,eAAe,CAAC;QAEtBzB,OAAO,CAACkB,GAAG,CAAC,UAAU;MAExB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM2B,UAAS,GAAKC,CAAC,IAAK;MACxB,MAAM;QAAEC,GAAG;QAAEC;MAAI,IAAIF,CAAC,CAACG,MAAK;MAC5B9B,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;QAAEU,GAAG;QAAEC,GAAG;QAAErE,WAAW,EAAEA,WAAW,CAACyD,KAAK;QAAEvD,OAAO,EAAEA,OAAO,CAACuD;MAAM,CAAC;MAE3F,IAAIzD,WAAW,CAACyD,KAAI,KAAM,UAAS,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAIrE,WAAW,CAACyD,KAAI,KAAM,cAAa,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QAChE;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQzE,WAAW,CAACyD,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAQ,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA;MACJ;IACF;;IAEA;IACA,MAAMS,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACAxE,OAAO,CAACuD,KAAI,GAAI,KAAI;MACpBlD,QAAQ,CAACkD,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAC,4BAA4B,CAAC;;MAE7B;MACAH,uBAAuB,CAAC;IAC1B;;IAEA;IACA,MAAMG,4BAA2B,GAAIA,CAAA,KAAM;MACzC,MAAMC,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;MAErDqB,MAAM,CAACC,MAAM,CAACzE,YAAY,CAAC,CAAC0E,OAAO,CAACC,OAAM,IAAK;QAC7C,IAAIA,OAAM,IAAKA,OAAO,CAACC,UAAU,EAAE;UACjC,IAAI;YACFD,OAAO,CAACC,UAAU,CAAC;cACjBC,MAAM,EAAEN,WAAU,GAAI,SAAQ,GAAI,SAAS;cAC3CO,MAAM,EAAEP,WAAU,GAAI,GAAE,GAAI,CAAC;cAC7BQ,SAAS,EAAER,WAAU,CAAE;YACzB,CAAC;;YAED;YACA,IAAII,OAAO,CAACK,iBAAiB,EAAE;cAC7B;cACAL,OAAO,CAACM,GAAG,CAAC,OAAO,EAAEN,OAAO,CAACK,iBAAiB;;cAE9C;cACA,IAAIT,WAAW,EAAE;gBACfI,OAAO,CAACnB,EAAE,CAAC,OAAO,EAAEmB,OAAO,CAACK,iBAAiB;cAC/C;YACF;UACF,EAAE,OAAO/C,KAAK,EAAE;YACdC,OAAO,CAACC,IAAI,CAAC,cAAc,EAAEF,KAAK;UACpC;QACF;MACF,CAAC;MAEDC,OAAO,CAACkB,GAAG,CAAC,oBAAoBmB,WAAW,UAAU7E,WAAW,CAACyD,KAAK,EAAE;IAC1E;;IAEA;;IAEA;IACA,MAAM+B,aAAY,GAAIA,CAAA,KAAM;MAC1BtF,OAAO,CAACuD,KAAI,GAAI,CAACvD,OAAO,CAACuD,KAAI;MAC7B;MACA,IAAIzD,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;QACtClD,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;UACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;;IAIA;IACA,MAAMc,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIzF,WAAW,CAACyD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIzD,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C,OAAO,WAAU;MACnB;MACA,OAAO,EAAC;IACV;;IAEA;;IAEA;IACA,MAAMc,cAAa,GAAIA,CAACH,GAAG,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACpE,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAM+B,MAAK,GAAI,IAAI/B,IAAI,CAACgC,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACxB,GAAG,EAAEC,GAAG,CAAC;QACpBwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFgE,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,WAAW/B,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK/B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAV,MAAM,CAAC5B,EAAE,CAAC,OAAO,EAAE,MAAM;QACvB1E,SAAS,CAAC;UACRiH,OAAO,EAAE,UAAUjC,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK/B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDhF,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACZ,MAAM;MAC5BtF,aAAa,CAACqD,KAAK,CAAC8C,IAAI,CAACb,MAAM;MAC/BvF,YAAY,CAACsD,KAAK,CAAC8C,IAAI,CAAC;QAAEnC,GAAG;QAAEC;MAAI,CAAC;MAEpCjF,SAAS,CAACoH,OAAO,CAAC,WAAWpC,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK/B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMK,YAAW,GAAIA,CAAA,KAAM;MACzBrG,aAAa,CAACqD,KAAK,CAACuB,OAAO,CAACU,MAAK,IAAK;QACpCzF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChB,MAAM;MACjC,CAAC;MACDtF,aAAa,CAACqD,KAAI,GAAI,EAAC;MACvBtD,YAAY,CAACsD,KAAI,GAAI,EAAC;MACtBrE,SAAS,CAACoH,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMG,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIpG,QAAQ,CAACkD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMmD,sBAAqB,GAAKxF,IAAI,IAAK;MACvCZ,iBAAiB,CAACiD,KAAI,GAAIrC,IAAG;IAC/B;;IAEA;IACA,MAAMyF,uBAAsB,GAAKxF,KAAK,IAAK;MACzCZ,WAAW,CAACgD,KAAI,GAAIpC,KAAI;IAC1B;;IAEA;IACA,MAAMyF,kBAAiB,GAAKC,MAAM,IAAK;MACrCrG,YAAY,CAAC+C,KAAI,GAAIsD,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxCtG,iBAAiB,CAAC8C,KAAI,GAAIwD,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvCvG,eAAe,CAAC6C,KAAI,GAAI0D,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACpF,SAAS,CAACwB,KAAK,EAAE;QACpBrE,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIhC,QAAQ,CAACkD,KAAI,KAAM4D,IAAI,EAAE;QAC3B;QACA9G,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAI;UACFxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOpC,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAnD,SAAS,CAACkI,IAAI,CAAC,SAAS;QACxB;MACF;MAEA/G,QAAQ,CAACkD,KAAI,GAAI4D,IAAG;MACpBnH,OAAO,CAACuD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAM8D,OAAM,GAAI;QACdC,WAAW,EAAE9E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC5D6E,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEjF,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC1DgF,WAAW,EAAE3E,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;MACpD;MAEA,IAAI;QACFX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE2D,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACXpF,SAAS,CAACwB,KAAK,CAACoE,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZtF,SAAS,CAACwB,KAAK,CAACqE,OAAO,CAACP,OAAO;YAC/B;UACF,KAAK,WAAW;YACdtF,SAAS,CAACwB,KAAK,CAACsE,SAAS,CAACR,OAAO;YACjC;QACJ;QAEAnI,SAAS,CAACkI,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOpE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1BhC,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOiE,KAAK,IAAK;MACtC;MACA,MAAM/C,OAAM,GAAI/F,KAAK,CAAC8I,KAAK,CAACC,GAAG;MAE/BzF,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuB,OAAO;MACjCzC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAEuB,OAAO,CAACiD,SAAQ,IAAKjD,OAAO,CAACkD,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAInI,WAAW,CAACwD,KAAK,CAAC4E,cAAc,CAAC,SAAS;QAC3D7F,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAE0E,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBd,WAAW,EAAE9E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC5D6E,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEjF,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC1DgF,WAAW,EAAE3E,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE4E,YAAY;QACnCrD,OAAO,CAACC,UAAU,CAACoD,YAAY;;QAE/B;QACAC,UAAU,CAAC,MAAM;UACftI,WAAW,CAACwD,KAAK,CAAC+E,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAENhG,OAAO,CAACkB,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMhB,QAAO,GAAIkH,sBAAsB,CAACxD,OAAO;;MAE/C;MACA,IAAI,CAACzE,iBAAiB,CAACiD,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE/B,iBAAiB,CAACiD,KAAK;QAChDrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC9B,WAAW,CAACgD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE9B,WAAW,CAACgD,KAAK;QAC1CrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChB,QAAQ,EAAE;QACbiB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBnD,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAMmG,QAAO,GAAI;QACftH,IAAI,EAAEZ,iBAAiB,CAACiD,KAAK;QAC7BpC,KAAK,EAAEZ,WAAW,CAACgD,KAAK;QACxBnC,WAAW,EAAEX,iBAAiB,CAAC8C,KAAI,IAAK,EAAE;QAC1CkF,SAAS,EAAE,CAAC,GAAG/H,eAAe,CAAC6C,KAAK,CAAC;QAAE;QACvClC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFiB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEgF,QAAQ;QAClClG,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAElD,iBAAiB,CAACiD,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEjD,WAAW,CAACgD,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE/C,iBAAiB,CAAC8C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEnC,QAAQ;;QAE7B;QACA,MAAMqH,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;UAChDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,QAAQ;QAC/B,CAAC;QAEDlG,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEkF,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE5D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC/G,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE+G,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnClH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,MAAM;QAE9B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAMmD,IAAG,GAAIF,MAAM,CAACG,IAAG;;UAEvB;UACA3J,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;;UAEhC;UACA4E,qBAAqB,CAACF,IAAI;UAE1BvK,SAAS,CAACoH,OAAO,CAAC,MAAM9D,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAAC9D,IAAI,IAAI;UAC1E6C,OAAO,CAACkB,GAAG,CAAC,kBAAkB,EAAEiG,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;;QAE3C;QACApG,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;MAClC;;MAEA;MACA1E,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAnC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErD,WAAW,CAACoD,KAAK,CAACqG,MAAM;IAClD;IAEA,MAAMrB,sBAAqB,GAAKxD,OAAO,IAAK;MAC1CzC,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuB,OAAO,CAACkD,UAAS,IAAKlD,OAAO,CAACiD,SAAS;MAEjE,IAAI;QACF,IAAIjD,OAAO,CAACkD,UAAS,KAAM,aAAY,IAAKlD,OAAO,CAACiD,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM6B,MAAK,GAAI9E,OAAO,CAAC+E,SAAS,CAAC;UACjC,MAAMjD,MAAK,GAAI9B,OAAO,CAACgF,SAAS,CAAC;UACjCzH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;YAAEqG,MAAM;YAAEhD;UAAO,CAAC;UACzC,OAAO;YACL3F,IAAI,EAAE,QAAQ;YACd2I,MAAM,EAAE,CAACA,MAAM,CAAC3F,GAAG,EAAE2F,MAAM,CAAC1F,GAAG,CAAC;YAChC0C,MAAM,EAAEA;UACV;QACF,OAAO,IAAI9B,OAAO,CAACkD,UAAS,KAAM,cAAa,IAAKlD,OAAO,CAACiD,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAMgC,IAAG,GAAIjF,OAAO,CAACkF,OAAO,CAAC;UAC7B3H,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwG,IAAI;UAC5B,OAAO;YACL9I,IAAI,EAAE,SAAS;YACf8I,IAAI,EAAEA,IAAI,CAAC1G,GAAG,CAAC4G,KAAI,IAAK,CAACA,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;UAChD;QACF,OAAO,IAAIY,OAAO,CAACkD,UAAS,KAAM,gBAAe,IAAKlD,OAAO,CAACiD,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMmC,MAAK,GAAIpF,OAAO,CAACqF,SAAS,CAAC;UACjC9H,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE2G,MAAM;UAC7B,OAAO;YACLjJ,IAAI,EAAE,WAAW;YACjBiJ,MAAM,EAAE,CAACA,MAAM,CAACE,YAAY,CAAC,CAAC,CAACnG,GAAG,EAAEiG,MAAM,CAACE,YAAY,CAAC,CAAC,CAAClG,GAAG,EACrDgG,MAAM,CAACG,YAAY,CAAC,CAAC,CAACpG,GAAG,EAAEiG,MAAM,CAACG,YAAY,CAAC,CAAC,CAACnG,GAAG;UAC9D;QACF;MACF,EAAE,OAAO9B,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE0C,OAAO,CAACkD,UAAS,IAAKlD,OAAO,CAACiD,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAMjE,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFzB,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,0BAA0B;QAEtC,MAAMkF,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChDrG,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEkF,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE9D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC/G,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE+G,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnClH,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE+F,MAAM;QAEhC,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClBhE,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAE+F,MAAM,CAACG,IAAI;;UAEtC;UACAa,aAAa,CAAC,IAAI;;UAElB;UACAhB,MAAM,CAACG,IAAI,CAAC5E,OAAO,CAAC2E,IAAG,IAAK;YAC1BE,qBAAqB,CAACF,IAAI;UAC5B,CAAC;UAEDnH,OAAO,CAACkB,GAAG,CAAC,QAAQ+F,MAAM,CAACG,IAAI,CAACE,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAIN,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMwD,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAAC1J,WAAW,CAACwD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;;MAEA;MACA,IAAI,CAACoH,IAAG,IAAK,CAACA,IAAI,CAACpI,QAAQ,EAAE;QAC3BiB,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoH,IAAI;QAC9B;MACF;MAEA,IAAI;QACFnH,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEiG,IAAI;QAE/B,MAAMhG,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAIsB,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAMJ,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;QACrD,MAAM6E,YAAW,GAAI;UACnBd,WAAW,EAAE9E,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC5D6E,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEjF,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC1DgF,WAAW,EAAE3E,iBAAiB,CAAC0G,IAAI,CAACtI,KAAK,CAAC,EAAE8B,OAAM,IAAK,GAAG;UAC1DkC,SAAS,EAAER,WAAW;UACtBM,MAAM,EAAEN,WAAU,GAAI,SAAQ,GAAI,SAAS;UAC3CO,MAAM,EAAEP,WAAU,GAAI,GAAE,GAAI;QAC9B;QAEArC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE4E,YAAY;QACpC9F,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEiG,IAAI,CAACpI,QAAQ;;QAErC;QACA,IAAIoI,IAAI,CAACpI,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnC;UACA,IAAI,CAACuI,IAAI,CAACpI,QAAQ,CAACwI,MAAK,IAAK,CAACW,KAAK,CAACC,OAAO,CAAChB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,KAC5DJ,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAACD,MAAK,KAAM,KAChCH,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,KAAK,IAAG,IAAKJ,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,KAAK,IAAG,IACjEa,KAAK,CAACC,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAKa,KAAK,CAACC,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC,CAAC,KAC/E,CAACJ,IAAI,CAACpI,QAAQ,CAACwF,MAAK,IAAK4C,IAAI,CAACpI,QAAQ,CAACwF,MAAK,IAAK,CAAC,EAAE;YACtDvE,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoH,IAAI,CAACpI,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAM6C,GAAE,GAAIyG,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAM1F,GAAE,GAAIwG,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAMhD,MAAK,GAAI8D,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwF,MAAM;UAE1CvE,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE,CAACU,GAAG,EAAEC,GAAG,CAAC,EAAE0C,MAAM;UAC1C9B,OAAM,GAAI,IAAItB,IAAI,CAACmH,MAAM,CAAC;YACxBf,MAAM,EAAE,IAAIpG,IAAI,CAACoH,MAAM,CAAC3G,GAAG,EAAEC,GAAG,CAAC;YACjC0C,MAAM,EAAEA,MAAM;YACd,GAAGuB;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAACpI,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3C;UACA,IAAI,CAACuI,IAAI,CAACpI,QAAQ,CAAC2I,IAAG,IAAK,CAACQ,KAAK,CAACC,OAAO,CAAChB,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,KACxDP,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,CAACJ,MAAK,GAAI,CAAC,EAAE;YACjCtH,OAAO,CAACD,KAAK,CAAC,eAAe,EAAEoH,IAAI,CAACpI,QAAQ;YAC5C;UACF;;UAEA;UACA,MAAMyJ,SAAQ,GAAIrB,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,CAACe,KAAK,CAACb,KAAI,IAC7CM,KAAK,CAACC,OAAO,CAACP,KAAK,KAAKA,KAAK,CAACN,MAAK,KAAM,KACzCM,KAAK,CAAC,CAAC,KAAK,IAAG,IAAKA,KAAK,CAAC,CAAC,KAAK,IAAG,IACnC,CAACQ,KAAK,CAACC,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAACQ,KAAK,CAACC,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,CACrD;UAEA,IAAI,CAACY,SAAS,EAAE;YACdxI,OAAO,CAACD,KAAK,CAAC,kBAAkB,EAAEoH,IAAI,CAACpI,QAAQ,CAAC2I,IAAI;YACpD;UACF;UAEA1H,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEiG,IAAI,CAACpI,QAAQ,CAAC2I,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,CAAC1G,GAAG,CAAC4G,KAAI,IAAK,IAAIzG,IAAI,CAACoH,MAAM,CAACF,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,EAAES,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;UAChGnF,OAAM,GAAI,IAAItB,IAAI,CAACuH,OAAO,CAAC;YACzBhB,IAAI,EAAEA,IAAI;YACV,GAAG5B;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAACpI,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7C;UACA,IAAI,CAACuI,IAAI,CAACpI,QAAQ,CAAC8I,MAAK,IAAK,CAACK,KAAK,CAACC,OAAO,CAAChB,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,KAC5DV,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,CAACP,MAAK,KAAM,KAChCH,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,CAACc,IAAI,CAACC,GAAE,IAAKA,GAAE,IAAK,IAAG,IAAKR,KAAK,CAACC,MAAM,CAACO,GAAG,CAAC,CAAC,CAAC,EAAE;YACvE5I,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoH,IAAI,CAACpI,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAM8J,aAAY,GAAI1B,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,CAAC7G,GAAG,CAAC4H,GAAE,IAAKP,MAAM,CAACO,GAAG,CAAC;UAEjE5I,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE2H,aAAa;UACrC,MAAMhB,MAAK,GAAI,IAAI1G,IAAI,CAAC2H,MAAM,CAC5B,IAAI3H,IAAI,CAACoH,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CAAC,EACnD,IAAI1H,IAAI,CAACoH,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CACpD;UACApG,OAAM,GAAI,IAAItB,IAAI,CAAC4H,SAAS,CAAC;YAC3BlB,MAAM,EAAEA,MAAM;YACd,GAAG/B;UACL,CAAC;QACH,OAAO;UACL9F,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoH,IAAI,CAACpI,QAAQ,CAACH,IAAI;UAChD;QACF;QAEA,IAAI6D,OAAO,EAAE;UACXzC,OAAO,CAACkB,GAAG,CAAC,kBAAkB;;UAE9B;UACAzD,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACrB,OAAO;;UAE7B;UACA3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE,IAAI8D,OAAM;;UAE9B;UACA,MAAMuG,aAAY,GAAInL,WAAW,CAACoD,KAAK,CAACgI,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACvK,EAAC,KAAMwI,IAAI,CAACxI,EAAE;UACvE,IAAIqK,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBnL,WAAW,CAACoD,KAAK,CAAC8C,IAAI,CAACoD,IAAI;YAC3BnH,OAAO,CAACkB,GAAG,CAAC,WAAW;UACzB,OAAO;YACLlB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACA,MAAMiI,eAAc,GAAKxH,CAAC,IAAK;YAC7B3B,OAAO,CAACkB,GAAG,CAAC,eAAe,EAAE1D,WAAW,CAACyD,KAAK,EAAE,QAAQ,EAAEkG,IAAI,CAACxI,EAAE;YAEjE,IAAInB,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;cACtC;cACAjB,OAAO,CAACkB,GAAG,CAAC,WAAW;cACvBkI,UAAU,CAACjC,IAAI,CAACxI,EAAE;cAClB;cACA,IAAIgD,CAAC,CAAC0H,eAAe,EAAE;gBACrB1H,CAAC,CAAC0H,eAAe,CAAC;cACpB;YACF,OAAO;cACL;cACArJ,OAAO,CAACkB,GAAG,CAAC,mBAAmB;cAE/B,IAAI;gBACF;gBACA,MAAMY,MAAK,GAAIH,CAAC,CAACG,MAAK;gBACtB9B,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEY,MAAM;;gBAE/B;gBACAJ,UAAU,CAAC;kBAAEI;gBAAO,CAAC;cACvB,EAAE,OAAO/B,KAAK,EAAE;gBACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;cACpC;YACF;UACF;;UAEA;UACA0C,OAAO,CAACnB,EAAE,CAAC,OAAO,EAAE6H,eAAe;;UAEnC;UACApD,UAAU,CAAC,MAAM;YACftI,WAAW,CAACwD,KAAK,CAAC+E,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENhG,OAAO,CAACkB,GAAG,CAAC,OAAOiG,IAAI,CAACxI,EAAE,WAAW;QAEvC,OAAO;UACLqB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoH,IAAI,CAACxI,EAAE,EAAEoB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMqJ,UAAS,GAAKzK,EAAE,IAAK;MACzBJ,cAAc,CAAC0C,KAAI,GAAItC,EAAC;MACxB,MAAM8D,OAAM,GAAI3E,YAAY,CAACa,EAAE;MAC/B,IAAI8D,OAAO,EAAE;QACX;QACAA,OAAO,CAACC,UAAU,CAAC;UACjBuC,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACArH,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAAC0G,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACvK,EAAC,KAAMA,EAAE,EAAE;YACf,MAAM2K,YAAW,GAAIxL,YAAY,CAACoL,CAAC,CAACvK,EAAE;YACtC,IAAI2K,YAAY,EAAE;cAChBA,YAAY,CAAC5G,UAAU,CAAC;gBACtBuC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAMqE,UAAS,GAAI,MAAO5K,EAAE,IAAK;MAC/B,IAAI;QACFqB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE1B,MAAMyH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqB1H,EAAE,EAAE,EAAE;UACtD2H,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMvB,OAAM,GAAI3E,YAAY,CAACa,EAAE;UAC/B,IAAI8D,OAAO,EAAE;YACXhF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;YAChC,OAAO3E,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACoD,KAAI,GAAIpD,WAAW,CAACoD,KAAK,CAACuI,MAAM,CAACrC,IAAG,IAAKA,IAAI,CAACxI,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAAC0C,KAAI,KAAMtC,EAAE,EAAE;YAC/BJ,cAAc,CAAC0C,KAAI,GAAI,IAAG;UAC5B;UAEArE,SAAS,CAACoH,OAAO,CAAC,QAAQ;UAC1BhE,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAIqI,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM4F,QAAO,GAAKtC,IAAI,IAAK;MACzBzI,QAAQ,CAACuC,KAAI,GAAI;QAAE,GAAGkG;MAAK;MAC3B1I,iBAAiB,CAACwC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMyI,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACF1J,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAExC,QAAQ,CAACuC,KAAK,CAACtC,EAAE;QAEzC,MAAMyH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqB3H,QAAQ,CAACuC,KAAK,CAACtC,EAAE,EAAE,EAAE;UACrE2H,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnB9H,IAAI,EAAEF,QAAQ,CAACuC,KAAK,CAACrC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACuC,KAAK,CAACpC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACuC,KAAK,CAACnC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAACsH,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMmD,IAAG,GAAItJ,WAAW,CAACoD,KAAK,CAAC0I,IAAI,CAACT,CAAA,IAAKA,CAAC,CAACvK,EAAC,KAAMD,QAAQ,CAACuC,KAAK,CAACtC,EAAE;UACnE,IAAIwI,IAAI,EAAE;YACRA,IAAI,CAACvI,IAAG,GAAIF,QAAQ,CAACuC,KAAK,CAACrC,IAAG;YAC9BuI,IAAI,CAACtI,KAAI,GAAIH,QAAQ,CAACuC,KAAK,CAACpC,KAAI;YAChCsI,IAAI,CAACrI,WAAU,GAAIJ,QAAQ,CAACuC,KAAK,CAACnC,WAAU;;YAE5C;YACA,MAAM2D,OAAM,GAAI3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE;YACpC,IAAI8D,OAAO,EAAE;cACXA,OAAO,CAACC,UAAU,CAAC;gBACjBsC,WAAW,EAAE9E,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,CAACwB,KAAK;gBAC9C+E,SAAS,EAAEjF,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,CAACwB,KAAK;gBAC5CgF,WAAW,EAAE3E,iBAAiB,CAAC0G,IAAI,CAACtI,KAAK,CAAC,CAAC8B;cAC7C,CAAC;YACH;UACF;UAEA/D,SAAS,CAACoH,OAAO,CAAC,QAAQ;UAC1BhE,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,MAAM,CAACG,IAAI;QAErC,OAAO;UACL,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;MAC7C;MAEApF,iBAAiB,CAACwC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMgH,aAAY,GAAI,MAAAA,CAAO2B,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK/L,WAAW,CAACoD,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAMuC,OAAM,GAAIhM,WAAW,CAACoD,KAAK,CAACD,GAAG,CAACmG,IAAG,IAAKA,IAAI,CAACxI,EAAE;UAErDqB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE2I,OAAO;UAEjC,MAAMzD,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;YAChDC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACP,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cAAEoD,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAACzD,QAAQ,CAACS,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAACjD,OAAO,EAAE;YACnB,MAAM,IAAIgD,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,WAAW;UAC/C;UAEA7D,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE+F,MAAM,CAACG,IAAI;QACvC;;QAEA;QACA9E,MAAM,CAACC,MAAM,CAACzE,YAAY,CAAC,CAAC0E,OAAO,CAACC,OAAM,IAAK;UAC7C,IAAIhF,WAAW,CAACwD,KAAK,EAAE;YACrBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;UAClC;QACF,CAAC;;QAED;QACA5E,WAAW,CAACoD,KAAI,GAAI,EAAC;QACrBqB,MAAM,CAACyH,IAAI,CAACjM,YAAY,CAAC,CAAC0E,OAAO,CAACwH,GAAE,IAAK;UACvC,OAAOlM,YAAY,CAACkM,GAAG;QACzB,CAAC;QACDzL,cAAc,CAAC0C,KAAI,GAAI,IAAG;QAE1B,IAAI,CAAC2I,WAAW,EAAE;UAChBhN,SAAS,CAACoH,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOjE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAAC6J,WAAW,EAAE;UAChBhN,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAMoG,qBAAoB,GAAKC,MAAM,IAAK;MACxC1L,aAAa,CAACyC,KAAI,GAAIiJ,MAAK;;MAE3B;MACArM,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAAC2E,IAAG,IAAK;QAChC,MAAM1E,OAAM,GAAI3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE;QACpC,IAAI8D,OAAO,EAAE;UACX,IAAIyH,MAAM,CAACC,QAAQ,CAAChD,IAAI,CAACvI,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACrB,OAAO;UAC/B,OAAO;YACLhF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAM2H,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIvM,WAAW,CAACoD,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKzG,MAAM,CAACD,IAAI,CAAC2H,MAAM,CAAE;MACxCjL,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAAC2E,IAAG,IAAK;QAChC,MAAM1E,OAAM,GAAI3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE;QACpC,IAAI8D,OAAM,IAAKA,OAAO,CAACqF,SAAS,EAAE;UAChCD,MAAM,CAACwC,MAAM,CAAC5H,OAAO,CAACqF,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAACpI,QAAQ,EAAEwI,MAAM,EAAE;UAChCM,MAAM,CAACwC,MAAM,CAAClD,IAAI,CAACpI,QAAQ,CAACwI,MAAM;QACpC;MACF,CAAC;MAED9J,WAAW,CAACwD,KAAK,CAACqJ,SAAS,CAACzC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAM7F,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC7B,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE;QAAEU,GAAG;QAAEC,GAAG;QAAEpE,WAAW,EAAE,CAAC,CAACA,WAAW,CAACwD,KAAK;QAAEvD,OAAO,EAAEA,OAAO,CAACuD;MAAM,CAAC;MAC9F,IAAI,CAACvD,OAAO,CAACuD,KAAI,IAAK,CAACxD,WAAW,CAACwD,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMoJ,UAAS,GAAIvL,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI;;MAE7C;MACAtI,UAAU,CAACiC,KAAK,CAAC8C,IAAI,CAAC;QAAEnC,GAAG;QAAEC;MAAI,CAAC;MAClC7B,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAElC,UAAU,CAACiC,KAAK,CAACqG,MAAM;;MAEjD;MACA,MAAMpE,MAAK,GAAI,IAAI/B,IAAI,CAACgC,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACxB,GAAG,EAAEC,GAAG,CAAC;QACpBwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;wGAGuC6K,UAAU;;WAEvG,CAAC;UACF7G,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAM4G,UAAU,EAAE;QACzB3H,MAAM,EAAE,GAAE,CAAE;MACd,CAAC;MAED5C,OAAO,CAACkB,GAAG,CAAC,cAAc;MAC1BzD,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACZ,MAAM;MAC5BjE,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACb,MAAM;MAC7BlD,OAAO,CAACkB,GAAG,CAAC,eAAe,EAAEjC,WAAW,CAACgC,KAAK,CAACqG,MAAM;;MAErD;MACA,IAAItI,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;QAC/BkD,cAAc,CAAC;MACjB;MAEA5N,SAAS,CAACoH,OAAO,CAAC,SAASuG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC/M,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAIjC,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;MACzC;MAEA,MAAMyG,IAAG,GAAI1I,UAAU,CAACiC,KAAK,CAACD,GAAG,CAACyJ,CAAA,IAAK,CAACA,CAAC,CAAC7I,GAAG,EAAE6I,CAAC,CAAC5I,GAAG,CAAC;MAErD3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACuJ,QAAQ,CAAC;QACjChD,IAAI,EAAEA,IAAI;QACV1C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACf0F,WAAW,EAAE;MACf,CAAC;MAEDlN,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC5E,QAAQ,CAAC+B,KAAK;IACtC;;IAEA;IACA,MAAM2J,WAAU,GAAKC,KAAK,IAAK;MAC7B7L,UAAU,CAACiC,KAAK,CAAC6J,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB/L,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACoF,KAAK,EAAEoD,CAAC,KAAK;QACrCC,kBAAkB,CAACrD,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,EAAEmJ,CAAA,GAAI,CAAC;MAChD,CAAC;MAED,IAAIhM,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;QAC/BkD,cAAc,CAAC;MACjB,OAAO,IAAItL,QAAQ,CAAC+B,KAAK,EAAE;QACzBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;IACtB;IAEA,MAAMgK,kBAAiB,GAAIA,CAACrJ,GAAG,EAAEC,GAAG,EAAEgJ,KAAK,KAAK;MAC9C,MAAM1J,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,MAAM+B,MAAK,GAAI,IAAI/B,IAAI,CAACgC,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACxB,GAAG,EAAEC,GAAG,CAAC;QACpBwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;wGAGuCmL,KAAK;;WAElG,CAAC;UACFnH,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMkH,KAAK;MACpB,CAAC;MAEDpN,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACZ,MAAM;MAC5BjE,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAM6H,gBAAe,GAAIA,CAAA,KAAM;MAC7B9L,WAAW,CAACgC,KAAK,CAACuB,OAAO,CAACU,MAAK,IAAK;QAClCzF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChB,MAAM;MACjC,CAAC;MACDjE,WAAW,CAACgC,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAMiK,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAIlM,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;QAC/B1K,SAAS,CAACuO,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFnL,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE/B,iBAAiB,CAAC8B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK,CAACqG,MAAM;QAC7CtH,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAErD,WAAW,CAACoD,KAAK;QAErC,MAAMmK,UAAS,GAAIpM,UAAU,CAACiC,KAAK,CAAC,CAAC;QACrC,MAAMtD,YAAW,GAAIqB,UAAU,CAACiC,KAAK,CAACoK,KAAK,CAAC,CAAC,GAAE;;QAE/C;QACA,MAAMC,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVxJ,GAAG,EAAEwJ,UAAU,CAACxJ,GAAG;YACnBC,GAAG,EAAEuJ,UAAU,CAACvJ;UAClB,CAAC;UACDlE,YAAY,EAAEA,YAAY,CAACqD,GAAG,CAAC4G,KAAI,KAAM;YACvChG,GAAG,EAAEgG,KAAK,CAAChG,GAAG;YACdC,GAAG,EAAE+F,KAAK,CAAC/F;UACb,CAAC,CAAC,CAAC;UACH0J,SAAS,EAAEpM,iBAAiB,CAAC8B,KAAI,IAAK,OAAO;UAAE;UAC/C7B,cAAc,EAAEA,cAAc,CAAC6B,KAAK;UACpC5B,WAAW,EAAEA,WAAW,CAAC4B,KAAK;UAC9BpD,WAAW,EAAEA,WAAW,CAACoD,KAAI,IAAKpD,WAAW,CAACoD,KAAK,CAACqG,MAAK,GAAI,IAAIzJ,WAAW,CAACoD,KAAK,CAACD,GAAG,CAACmG,IAAG,KAAM;YAC9FxI,EAAE,EAAEwI,IAAI,CAACxI,EAAE;YACXC,IAAI,EAAEuI,IAAI,CAACvI,IAAI;YACfC,KAAK,EAAEsI,IAAI,CAACtI,KAAK;YACjB2M,aAAa,EAAErE,IAAI,CAACpI,QAAQ,EAAEH,IAAG,IAAKuI,IAAI,CAACqE,aAAa;YACxDC,aAAa,EAAEtE,IAAI,CAACpI,QAAO,IAAKoI,IAAI,CAACsE,aAAa;YAClD3M,WAAW,EAAEqI,IAAI,CAACrI;UACpB,CAAC,CAAC,IAAI;QACR;QAEAkB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAEoK,YAAY;;QAExC;QACA,MAAMlF,QAAO,GAAI,MAAMC,KAAK,CAAC,oBAAoB,EAAE;UACjDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC4E,YAAY;QACnC,CAAC;QAED,IAAI,CAAClF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC/G,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvB4G,MAAM,EAAEP,QAAQ,CAACO,MAAM;YACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;YAC/B7G,KAAK,EAAE+G;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWZ,QAAQ,CAACO,MAAM,MAAMG,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnClH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE+F,MAAM;QAE7B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAM;YAAEoD,IAAI;YAAEsE;UAAQ,IAAIzE,MAAK;;UAE/B;UACA3H,QAAQ,CAAC2B,KAAI,GAAI;YACf0K,QAAQ,EAAEC,IAAI,CAACC,KAAK,CAACzE,IAAI,CAACuE,QAAO,IAAKD,OAAO,EAAEI,aAAY,IAAK,CAAC,CAAC;YAClEC,QAAQ,EAAE3E,IAAI,CAAC4E,cAAa,IAAKN,OAAO,EAAEO,aAAY,IAAK,CAAC;YAC5DC,UAAU,EAAE9E,IAAI,CAAC+E,WAAW,EAAE7E,MAAK,IAAKoE,OAAO,EAAEU,aAAY,IAAK,CAAC;YACnEb,SAAS,EAAEnE,IAAI,CAACmE,SAAQ,IAAKtE,MAAM,CAACsE,SAAS;YAC7Cc,kBAAkB,EAAEjF,IAAI,CAACkF,oBAAmB,IAAKZ,OAAO,EAAEW,kBAAiB,IAAK,EAAE;YAClFE,WAAW,EAAEb,OAAO,EAAEa,WAAU,IAAK;UACvC;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACA,MAAMC,QAAO,GAAIrF,IAAI,CAAC+E,WAAU,IAAK/E,IAAI,CAACM,IAAG,IAAK,EAAC;UACnDgF,4BAA4B,CAACD,QAAQ,EAAE9O,YAAY,EAAE+N,OAAO,EAAEa,WAAW;UAEzE3P,SAAS,CAACoH,OAAO,CAAC,GAAG2I,gBAAgB,CAAC1F,MAAM,CAACsE,SAAS,CAAC,YAAY;UAEnE,MAAMqB,WAAU,GAAIxF,IAAI,CAACkF,oBAAoB,EAAEhF,MAAK,IAAKoE,OAAO,EAAEW,kBAAkB,EAAE/E,MAAK,IAAK;UAChG,IAAIsF,WAAU,GAAI,CAAC,EAAE;YACnBhQ,SAAS,CAACkI,IAAI,CAAC,QAAQ8H,WAAW,OAAO;UAC3C;;UAEA;UACA,IAAIlB,OAAO,EAAEa,WAAU,IAAKb,OAAO,CAACa,WAAW,CAACjF,MAAK,GAAI,CAAC,EAAE;YAC1D,MAAMuF,SAAQ,GAAInB,OAAO,CAACa,WAAW,CAACvL,GAAG,CAAC,CAAC8L,MAAM,EAAEjC,KAAK,KACtD,GAAGA,KAAI,GAAI,CAAC,KAAKiC,MAAM,CAACC,MAAM,CAACnL,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAKkJ,MAAM,CAACC,MAAM,CAAClL,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAGkJ,MAAM,CAACE,YAAW,GAAI,SAAQ,GAAI,EAAE,EACvH,CAAC,CAACC,IAAI,CAAC,IAAI;YAEXlH,UAAU,CAAC,MAAM;cACfnJ,SAAS,CAAC;gBACRiH,OAAO,EAAE,aAAagJ,SAAS,EAAE;gBACjCjO,IAAI,EAAE,MAAM;gBACZmN,QAAQ,EAAE,KAAK;gBACfmB,SAAS,EAAE;cACb,CAAC;YACH,CAAC,EAAE,IAAI;UACT;QAEF,OAAO;UACL,MAAM,IAAIlG,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BnD,SAAS,CAACmD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAAC8D,OAAO;MAC5C;IACF;;IAEA;IACA,MAAM8I,gBAAe,GAAKpB,SAAS,IAAK;MACtC,MAAM4B,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAAC5B,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMmB,4BAA2B,GAAIA,CAACc,WAAW,EAAEC,eAAe,EAAElB,WAAW,KAAK;MAClF,IAAI,CAAC9O,WAAW,CAACwD,KAAI,IAAK,CAACuM,WAAU,IAAKA,WAAW,CAAClG,MAAK,GAAI,CAAC,EAAE;MAElE,MAAMnG,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE;QACtBwM,UAAU,EAAEF,WAAW,CAAClG,MAAM;QAC9BqG,WAAW,EAAEF,eAAe,CAACnG,MAAM;QACnCiF,WAAW,EAAEA;MACf,CAAC;;MAED;MACA,MAAMqB,UAAS,GAAIJ,WAAW,CAACxM,GAAG,CAAC4G,KAAI,IAAK,CAACA,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;MAElE3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACuJ,QAAQ,CAAC;QACjChD,IAAI,EAAEkG,UAAU;QAChB5I,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACf0F,WAAW,EAAE,OAAO;QACpBzF,aAAa,EAAE;MACjB,CAAC;MAEDzH,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC5E,QAAQ,CAAC+B,KAAK;MAEpC,MAAM4M,OAAM,GAAI,EAAC;;MAEjB;MACA,MAAMC,WAAU,GAAI,IAAI3M,IAAI,CAACgC,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAACoK,WAAW,CAAC,CAAC,CAAC,CAAC5L,GAAG,EAAE4L,WAAW,CAAC,CAAC,CAAC,CAAC3L,GAAG,CAAC;QAClDwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFgE,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,IAAI;QACXf,MAAM,EAAE;MACV,CAAC;MAEDnF,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACgK,WAAW;MACjCD,OAAO,CAAC9J,IAAI,CAAC+J,WAAW;;MAExB;MACA,IAAIvB,WAAU,IAAKA,WAAW,CAACjF,MAAK,GAAI,CAAC,EAAE;QACzCiF,WAAW,CAAC/J,OAAO,CAAC,CAACsK,MAAM,EAAEjC,KAAK,KAAK;UACrC,MAAMkD,UAAS,GAAIlD,KAAI,GAAI;UAC3B,MAAMmD,UAAS,GAAIlB,MAAM,CAACE,YAAW;UACrC,MAAM/O,WAAU,GAAI6O,MAAM,CAAC7O,WAAU;;UAErC;UACA,IAAImC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAI4N,UAAU,EAAE;YACd,QAAQ/P,WAAW;cACjB,KAAK,KAAK;gBACRmC,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,QAAQ;gBACXA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,MAAM;gBACTA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,UAAU;gBACbA,KAAI,GAAI,SAAQ,EAAE;gBAClB;YACJ;UACF;UAEA,MAAM6N,YAAW,GAAI,IAAI9M,IAAI,CAACgC,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAAC0J,MAAM,CAACC,MAAM,CAACnL,GAAG,EAAEkL,MAAM,CAACC,MAAM,CAAClL,GAAG,CAAC;YAChDwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;yDAEZU,KAAK;2GAC6C2N,UAAU;oBACjGC,UAAS,GAAI,8EAA6E,GAAI,EAAE;;eAErG,CAAC;cACFtK,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAE,MAAMoK,UAAU,GAAGC,UAAS,GAAI,KAAK/P,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3E2E,MAAM,EAAE;UACV,CAAC;UAEDnF,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACmK,YAAY;UAClCJ,OAAO,CAAC9J,IAAI,CAACkK,YAAY;QAC3B,CAAC;MACH,OAAO;QACL;QACAR,eAAe,CAACjL,OAAO,CAAC,CAACsK,MAAM,EAAEjC,KAAK,KAAK;UACzC,MAAMqD,YAAW,GAAIrD,KAAI,GAAI;UAC7B,MAAMsD,YAAW,GAAItD,KAAI,KAAM4C,eAAe,CAACnG,MAAK,GAAI;UAExD,MAAM2G,YAAW,GAAI,IAAI9M,IAAI,CAACgC,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAAC0J,MAAM,CAAClL,GAAG,EAAEkL,MAAM,CAACjL,GAAG,CAAC;YAClCwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;yDAEZyO,YAAW,GAAI,SAAQ,GAAI,SAAS;2GACcA,YAAW,GAAI,GAAE,GAAID,YAAY;;eAE7H,CAAC;cACFxK,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAEwK,YAAW,GAAI,IAAG,GAAI,MAAMD,YAAY,EAAE;YACjDtL,MAAM,EAAE;UACV,CAAC;UAEDnF,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACmK,YAAY;UAClCJ,OAAO,CAAC9J,IAAI,CAACkK,YAAY;QAC3B,CAAC;MACH;MAEAhP,WAAW,CAACgC,KAAI,GAAI4M,OAAM;;MAE1B;MACA9H,UAAU,CAAC,MAAM;QACf,IAAI7G,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAAC+E,UAAU,CAAC,CAAC9G,QAAQ,CAAC+B,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;QAC1E;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMuL,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAItN,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA8J,gBAAgB,CAAC;IACnB;IAEA,MAAMqD,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAItC,aAAY,GAAI;MACpB,KAAK,IAAId,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAIhM,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE0D,CAAC,EAAE,EAAE;QACpD,MAAMqD,EAAC,GAAIrP,UAAU,CAACiC,KAAK,CAAC+J,CAAC;QAC7B,MAAMsD,EAAC,GAAItP,UAAU,CAACiC,KAAK,CAAC+J,CAAA,GAAI,CAAC;QACjCc,aAAY,IAAKyC,WAAW,CAACF,EAAE,CAACxM,GAAG,EAAEwM,EAAE,CAACzM,GAAG,EAAE0M,EAAE,CAACzM,GAAG,EAAEyM,EAAE,CAAC1M,GAAG;MAC7D;MACA,OAAOkK,aAAY;IACrB;IAEA,MAAMyC,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAI5C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIL,IAAG,GAAI9C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI5C,IAAI,CAACkD,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI7C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAItD,IAAI,CAACuD,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIpD,IAAI,CAACuD,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BpD,IAAI,CAACwD,GAAG,CAACP,EAAE,IAAIjD,IAAI,CAACwD,GAAG,CAACL,EAAE,IAC1BnD,IAAI,CAACuD,GAAG,CAACF,EAAE,GAAC,CAAC,IAAIrD,IAAI,CAACuD,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAIzD,IAAI,CAAC0D,KAAK,CAAC1D,IAAI,CAAC2D,IAAI,CAACL,CAAC,CAAC,EAAEtD,IAAI,CAAC2D,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAON,CAAA,GAAIS,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAM3S,YAAY,CAAC4S,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtB/Q,IAAI,EAAE;QACR,CAAC;QAEDhC,SAAS,CAACoH,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNpH,SAAS,CAACkI,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAM8K,QAAO,GAAIA,CAAA,KAAM;MACrB7E,gBAAgB,CAAC;MAEjB,IAAI7L,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;MAEAjC,UAAU,CAACiC,KAAI,GAAI,EAAC;MACpB3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;MAEpBrE,SAAS,CAACoH,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAM6L,uBAAsB,GAAKtE,SAAS,IAAK;MAC7CpM,iBAAiB,CAAC8B,KAAI,GAAIsK,SAAQ;IACpC;;IAEA;IACA,MAAMuE,oBAAmB,GAAKC,QAAQ,IAAK;MACzC3Q,cAAc,CAAC6B,KAAI,GAAI8O,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnC5Q,WAAW,CAAC4B,KAAI,GAAIgP,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIlR,UAAU,CAACiC,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAM8D,UAAS,GAAIpM,UAAU,CAACiC,KAAK,CAAC,CAAC;MACrCxD,WAAW,CAACwD,KAAK,CAACkP,SAAS,CAAC,CAAC/E,UAAU,CAACxJ,GAAG,EAAEwJ,UAAU,CAACvJ,GAAG,CAAC;MAC5DpE,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAIrR,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAMgJ,QAAO,GAAItR,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC;MAC7D7J,WAAW,CAACwD,KAAK,CAACkP,SAAS,CAAC,CAACG,QAAQ,CAAC1O,GAAG,EAAE0O,QAAQ,CAACzO,GAAG,CAAC;MACxDpE,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,iBAAgB,GAAKC,WAAW,IAAK;MACzC,IAAI,CAACA,WAAU,IAAKA,WAAW,CAAClJ,MAAK,KAAM,CAAC,EAAE;QAC5C1K,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,IAAI;QACF;QACA,MAAM0Q,SAAQ,GAAID,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE/I,KAAK,KAAK+I,GAAE,GAAI/I,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI4I,WAAW,CAAClJ,MAAK;QAC3F,MAAMsJ,SAAQ,GAAIJ,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE/I,KAAK,KAAK+I,GAAE,GAAI/I,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI4I,WAAW,CAAClJ,MAAK;QAE3FtH,OAAO,CAACkB,GAAG,CAAC,aAAauP,SAAS,KAAKG,SAAS,GAAG;;QAEnD;QACAnT,WAAW,CAACwD,KAAK,CAACkP,SAAS,CAAC,CAACM,SAAS,EAAEG,SAAS,CAAC;;QAElD;QACA,IAAIJ,WAAW,CAAClJ,MAAK,KAAM,CAAC,EAAE;UAC5B7J,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAAC,EAAE;QAC9B,OAAO;UACL;UACA,MAAMS,IAAG,GAAIL,WAAW,CAACxP,GAAG,CAACyJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMqG,IAAG,GAAIN,WAAW,CAACxP,GAAG,CAACyJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMsG,OAAM,GAAInF,IAAI,CAACoF,GAAG,CAAC,GAAGH,IAAI,IAAIjF,IAAI,CAACqF,GAAG,CAAC,GAAGJ,IAAI;UACpD,MAAMK,OAAM,GAAItF,IAAI,CAACoF,GAAG,CAAC,GAAGF,IAAI,IAAIlF,IAAI,CAACqF,GAAG,CAAC,GAAGH,IAAI;UACpD,MAAMK,OAAM,GAAIvF,IAAI,CAACoF,GAAG,CAACD,OAAO,EAAEG,OAAO;UAEzC,IAAIE,IAAG,GAAI,EAAC;UACZ,IAAID,OAAM,GAAI,IAAI,EAAEC,IAAG,GAAI,EAAC,MACvB,IAAID,OAAM,GAAI,GAAG,EAAEC,IAAG,GAAI,EAAC,MAC3B,IAAID,OAAM,GAAI,CAAC,EAAEC,IAAG,GAAI,EAAC,MACzBA,IAAG,GAAI;UAEZ3T,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAACgB,IAAI;QAChC;QAEAxU,SAAS,CAACoH,OAAO,CAAC,QAAQwM,WAAW,CAAClJ,MAAM,SAAS;MACvD,EAAE,OAAO+J,WAAW,EAAE;QACpBrR,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEsR,WAAW;QACrCzU,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMuR,SAAQ,GAAIA,CAAA,KAAM;MACtBtR,OAAO,CAACkB,GAAG,CAAC,sCAAsC,EAAElC,UAAU,CAACiC,KAAK,CAACqG,MAAM;MAE3E,IAAI,CAACtI,UAAU,CAACiC,KAAI,IAAKjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;QACtDtH,OAAO,CAACC,IAAI,CAAC,SAAS;QACtBrD,SAAS,CAACuO,OAAO,CAAC,UAAU;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,CAAC1N,WAAW,CAACwD,KAAK,EAAE;UACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS;UACvBnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;UACxB;QACF;;QAEA;QACA,IAAI,CAACqB,MAAM,CAACD,IAAG,IAAK,CAACC,MAAM,CAACD,IAAI,CAAC2H,MAAM,EAAE;UACvC9I,OAAO,CAACD,KAAK,CAAC,oBAAoB;UAClCnD,SAAS,CAACmD,KAAK,CAAC,YAAY;UAC5B;QACF;QAEAC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK;;QAEtC;QACA,MAAM4G,MAAK,GAAI,IAAIzG,MAAM,CAACD,IAAI,CAAC2H,MAAM,CAAC;;QAEtC;QACA,IAAIyI,gBAAe,GAAI;QACvB,MAAMf,WAAU,GAAI,EAAC;QAErBxR,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACoF,KAAK,EAAEiD,KAAK,KAAK;UACzC,IAAIjD,KAAI,IAAK,OAAOA,KAAK,CAAChG,GAAE,KAAM,QAAO,IAAK,OAAOgG,KAAK,CAAC/F,GAAE,KAAM,QAAO,IACtE,CAACuG,KAAK,CAACR,KAAK,CAAChG,GAAG,KAAK,CAACwG,KAAK,CAACR,KAAK,CAAC/F,GAAG,KACrC2P,QAAQ,CAAC5J,KAAK,CAAChG,GAAG,KAAK4P,QAAQ,CAAC5J,KAAK,CAAC/F,GAAG,KACzC+F,KAAK,CAAChG,GAAE,IAAK,CAAC,GAAE,IAAKgG,KAAK,CAAChG,GAAE,IAAK,GAAE,IACpCgG,KAAK,CAAC/F,GAAE,IAAK,CAAC,EAAC,IAAK+F,KAAK,CAAC/F,GAAE,IAAK,EAAE,EAAE;YAEvC;YACA,MAAMD,GAAE,GAAIyG,MAAM,CAACT,KAAK,CAAChG,GAAG;YAC5B,MAAMC,GAAE,GAAIwG,MAAM,CAACT,KAAK,CAAC/F,GAAG;YAE5B,IAAI,CAACuG,KAAK,CAACxG,GAAG,KAAK,CAACwG,KAAK,CAACvG,GAAG,KAAK2P,QAAQ,CAAC5P,GAAG,KAAK4P,QAAQ,CAAC3P,GAAG,CAAC,EAAE;cAChE2O,WAAW,CAACzM,IAAI,CAAC,CAACnC,GAAG,EAAEC,GAAG,CAAC;cAC3B0P,gBAAgB,EAAC;cACjBvR,OAAO,CAACkB,GAAG,CAAC,UAAU2J,KAAI,GAAI,CAAC,MAAMjJ,GAAG,KAAKC,GAAG,GAAG;YACrD,OAAO;cACL7B,OAAO,CAACC,IAAI,CAAC,UAAU4K,KAAI,GAAI,CAAC,GAAG,EAAEjD,KAAK;YAC5C;UACF,OAAO;YACL5H,OAAO,CAACC,IAAI,CAAC,SAAS4K,KAAI,GAAI,CAAC,GAAG,EAAEjD,KAAK;UAC3C;QACF,CAAC;QAED,IAAI2J,gBAAe,KAAM,CAAC,EAAE;UAC1BvR,OAAO,CAACD,KAAK,CAAC,UAAU;UACxBnD,SAAS,CAACmD,KAAK,CAAC,SAAS;UACzB;QACF;;QAEA;QACAyQ,WAAW,CAAChO,OAAO,CAAC,CAACiP,KAAK,EAAE5G,KAAK,KAAK;UACpC,IAAI;YACFhD,MAAM,CAACwC,MAAM,CAACoH,KAAK;YACnBzR,OAAO,CAACkB,GAAG,CAAC,WAAW2J,KAAI,GAAI,CAAC,MAAM4G,KAAK,CAAC,CAAC,CAAC,KAAKA,KAAK,CAAC,CAAC,CAAC,GAAG;UAChE,EAAE,OAAOC,WAAW,EAAE;YACpB1R,OAAO,CAACD,KAAK,CAAC,aAAa8K,KAAI,GAAI,CAAC,GAAG,EAAE4G,KAAK,EAAEC,WAAW;UAC7D;QACF,CAAC;;QAED;QACA,IAAIC,SAAS,EAAEC,SAAQ;QACvB,IAAI;UACFD,SAAQ,GAAI9J,MAAM,CAACE,YAAY,CAAC;UAChC6J,SAAQ,GAAI/J,MAAM,CAACG,YAAY,CAAC;QAClC,EAAE,OAAO6J,cAAc,EAAE;UACvB7R,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE8R,cAAc;UACzCjV,SAAS,CAACmD,KAAK,CAAC,UAAU;UAC1BwQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEAxQ,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE;UACnByQ,SAAS,EAAE,CAACA,SAAS,CAAC/P,GAAG,EAAE+P,SAAS,CAAC9P,GAAG,CAAC;UACzC+P,SAAS,EAAE,CAACA,SAAS,CAAChQ,GAAG,EAAEgQ,SAAS,CAAC/P,GAAG;QAC1C,CAAC;;QAED;QACA,IAAI,CAAC8P,SAAQ,IAAK,CAACC,SAAQ,IACvBxJ,KAAK,CAACuJ,SAAS,CAAC/P,GAAG,KAAKwG,KAAK,CAACuJ,SAAS,CAAC9P,GAAG,KAC3CuG,KAAK,CAACwJ,SAAS,CAAChQ,GAAG,KAAKwG,KAAK,CAACwJ,SAAS,CAAC/P,GAAG,KAC3C,CAAC2P,QAAQ,CAACG,SAAS,CAAC/P,GAAG,KAAK,CAAC4P,QAAQ,CAACG,SAAS,CAAC9P,GAAG,KACnD,CAAC2P,QAAQ,CAACI,SAAS,CAAChQ,GAAG,KAAK,CAAC4P,QAAQ,CAACI,SAAS,CAAC/P,GAAG,CAAC,EAAE;UACxD7B,OAAO,CAACD,KAAK,CAAC,YAAY;UAC1BnD,SAAS,CAACuO,OAAO,CAAC,gBAAgB;UAClCoF,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,MAAMO,OAAM,GAAInF,IAAI,CAACkG,GAAG,CAACF,SAAS,CAAChQ,GAAE,GAAI+P,SAAS,CAAC/P,GAAG;QACtD,MAAMsP,OAAM,GAAItF,IAAI,CAACkG,GAAG,CAACF,SAAS,CAAC/P,GAAE,GAAI8P,SAAS,CAAC9P,GAAG;QAEtD,IAAIkP,OAAM,GAAI,MAAK,IAAKG,OAAM,GAAI,MAAM,EAAE;UACxClR,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BsQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEA,IAAIO,OAAM,GAAI,GAAE,IAAKG,OAAM,GAAI,EAAE,EAAE;UACjClR,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BsQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,IAAI;UACF/S,WAAW,CAACwD,KAAK,CAACqJ,SAAS,CAACzC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;UAC7D7H,OAAO,CAACkB,GAAG,CAAC,UAAU;QACxB,EAAE,OAAO6Q,WAAW,EAAE;UACpB/R,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEgS,WAAW;UACtCnV,SAAS,CAACuO,OAAO,CAAC,gBAAgB;UAClCoF,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEAxQ,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEqQ,gBAAgB,EAAE,MAAM;QACnD3U,SAAS,CAACoH,OAAO,CAAC,QAAQuN,gBAAgB,SAAS;MAErD,EAAE,OAAOxR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK;QACrCnD,SAAS,CAACmD,KAAK,CAAC,YAAW,GAAIA,KAAK,CAAC8D,OAAO;MAC9C;IACF;;IAEA;;IAEA;IACA,MAAMmO,eAAc,GAAKtK,IAAI,IAAK;MAChC,IAAI,CAACjK,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,MAAMjC,QAAO,GAAI,IAAIkC,MAAM,CAACD,IAAI,CAACuJ,QAAQ,CAAC;UACxChD,IAAI,EAAEA,IAAI,CAACyE,WAAW,CAACnL,GAAG,CAAC4G,KAAI,IAAK,CAACA,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC,CAAC;UAC3DmD,WAAW,EAAE0C,IAAI,CAACtH,KAAI,IAAK,SAAS;UACpC6E,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,GAAG;UAClByF,WAAW,EAAE,OAAO;UACpBsH,OAAO,EAAE,IAAI;UACbC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QAC3B,CAAC;;QAED;QACA,MAAM9G,UAAS,GAAI1D,IAAI,CAACyE,WAAW,CAAC,CAAC;QACrC,MAAMmE,QAAO,GAAI5I,IAAI,CAACyE,WAAW,CAACzE,IAAI,CAACyE,WAAW,CAAC7E,MAAK,GAAI,CAAC;QAE7D,MAAMwG,WAAU,GAAI,IAAI1M,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;UACzCC,QAAQ,EAAE,CAACgI,UAAU,CAACxJ,GAAG,EAAEwJ,UAAU,CAACvJ,GAAG,CAAC;UAC1CwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;uDAEL4H,IAAI,CAACtH,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJsD,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG+D,IAAI,CAACvK,IAAI,OAAO;UAC1ByF,MAAM,EAAE;QACV,CAAC;QAED,MAAMuP,SAAQ,GAAI,IAAI/Q,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;UACvCC,QAAQ,EAAE,CAACkN,QAAQ,CAAC1O,GAAG,EAAE0O,QAAQ,CAACzO,GAAG,CAAC;UACtCwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;uDAEL4H,IAAI,CAACtH,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJsD,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG+D,IAAI,CAACvK,IAAI,OAAO;UAC1ByF,MAAM,EAAE;QACV,CAAC;;QAED;QACApD,mBAAmB,CAACkI,IAAI,CAAC/I,EAAE,IAAI;UAC7BO,QAAQ;UACR4O,WAAW;UACXqE;QACF;;QAEA;QACA1U,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC,CAAC5E,QAAQ,EAAE4O,WAAW,EAAEqE,SAAS,CAAC;QAExDvV,SAAS,CAACoH,OAAO,CAAC,UAAU0D,IAAI,CAACvK,IAAI,EAAE;MACzC,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMqS,eAAc,GAAK1K,IAAI,IAAK;MAChC,IAAI,CAACjK,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAM2E,QAAO,GAAIpG,mBAAmB,CAACkI,IAAI,CAAC/I,EAAE;MAC5C,IAAIiH,QAAQ,EAAE;QACZnI,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAC,CAAC0B,QAAQ,CAAC1G,QAAQ,EAAE0G,QAAQ,CAACkI,WAAW,EAAElI,QAAQ,CAACuM,SAAS,CAAC;QACtF,OAAO3S,mBAAmB,CAACkI,IAAI,CAAC/I,EAAE;QAClC/B,SAAS,CAACkI,IAAI,CAAC,UAAU4C,IAAI,CAACvK,IAAI,EAAE;MACtC;IACF;;IAEA;IACA,MAAMkV,mBAAkB,GAAKC,KAAK,IAAK;MACrCA,KAAK,CAAC9P,OAAO,CAACkF,IAAG,IAAK;QACpB,IAAI,CAACnI,oBAAoB,CAAC0B,KAAK,CAACkJ,QAAQ,CAACzC,IAAI,CAAC/I,EAAE,CAAC,EAAE;UACjDqT,eAAe,CAACtK,IAAI;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAM6K,mBAAkB,GAAIA,CAAA,KAAM;MAChCjQ,MAAM,CAACyH,IAAI,CAACvK,mBAAmB,CAAC,CAACgD,OAAO,CAACgQ,MAAK,IAAK;QACjD,MAAM5M,QAAO,GAAIpG,mBAAmB,CAACgT,MAAM;QAC3C,IAAI5M,QAAO,IAAKnI,WAAW,CAACwD,KAAK,EAAE;UACjCxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAC,CAAC0B,QAAQ,CAAC1G,QAAQ,EAAE0G,QAAQ,CAACkI,WAAW,EAAElI,QAAQ,CAACuM,SAAS,CAAC;QACxF;MACF,CAAC;MACD;MACA7P,MAAM,CAACyH,IAAI,CAACvK,mBAAmB,CAAC,CAACgD,OAAO,CAACwH,GAAE,IAAK,OAAOxK,mBAAmB,CAACwK,GAAG,CAAC;MAC/EpN,SAAS,CAACkI,IAAI,CAAC,WAAW;IAC5B;;IAEA;IACA,MAAM2N,mBAAkB,GAAK/K,IAAI,IAAK;MACpC,IAAI,CAACjK,WAAW,CAACwD,KAAI,IAAK,CAACyG,IAAI,CAACyE,WAAU,IAAKzE,IAAI,CAACyE,WAAW,CAAC7E,MAAK,KAAM,CAAC,EAAE;MAE9E,IAAI;QACF,MAAMO,MAAK,GAAI,IAAIzG,MAAM,CAACD,IAAI,CAAC2H,MAAM,CAAC;QACtCpB,IAAI,CAACyE,WAAW,CAAC3J,OAAO,CAACoF,KAAI,IAAK;UAChCC,MAAM,CAACwC,MAAM,CAAC,CAACzC,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;QACtC,CAAC;QACDpE,WAAW,CAACwD,KAAK,CAACqJ,SAAS,CAACzC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3DjL,SAAS,CAACoH,OAAO,CAAC,YAAY0D,IAAI,CAACvK,IAAI,EAAE;MAC3C,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAM2S,oBAAmB,GAAKhL,IAAI,IAAK;MACrC;MACAkI,QAAQ,CAAC;;MAET;MACA5Q,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGyG,IAAI,CAACyE,WAAW;MACvChN,iBAAiB,CAAC8B,KAAI,GAAIyG,IAAI,CAAC6D,SAAQ,IAAK,OAAM;MAClDnM,cAAc,CAAC6B,KAAI,GAAIyG,IAAI,CAACiL,eAAc,IAAK,GAAE;MACjDtT,WAAW,CAAC4B,KAAI,GAAIyG,IAAI,CAACkL,YAAW,IAAK,EAAC;;MAE1C;MACApV,WAAW,CAACyD,KAAI,GAAI,cAAa;;MAEjC;MACA4R,iBAAiB,CAAC;MAElBjW,SAAS,CAACoH,OAAO,CAAC,UAAU0D,IAAI,CAACvK,IAAI,SAAS;IAChD;;IAEA;IACA,MAAM2V,0BAAyB,GAAKC,OAAO,IAAK;MAC9CxT,oBAAoB,CAAC0B,KAAI,GAAI8R,OAAM;IACrC;;IAEA;IACA,MAAMF,iBAAgB,GAAIA,CAACG,aAAY,GAAI,KAAK,KAAK;MACnD,IAAI,CAACvV,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIlC,WAAW,CAACgC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;UAChC7J,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACjF,WAAW,CAACgC,KAAK;UAC1ChC,WAAW,CAACgC,KAAI,GAAI,EAAC;QACvB;QAEA,IAAI/B,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;UACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;QACtB;QAEA,IAAIjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;QAEnC,IAAI0L,aAAa,EAAE;UACjB;UACA,MAAM5H,UAAS,GAAIpM,UAAU,CAACiC,KAAK,CAAC,CAAC;UACrC,MAAMqP,QAAO,GAAItR,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC;;UAE7D;UACA,IAAI8D,UAAS,IAAK,OAAOA,UAAU,CAACxJ,GAAE,KAAM,QAAO,IAAK,OAAOwJ,UAAU,CAACvJ,GAAE,KAAM,QAAO,IACrF,CAACuG,KAAK,CAACgD,UAAU,CAACxJ,GAAG,KAAK,CAACwG,KAAK,CAACgD,UAAU,CAACvJ,GAAG,CAAC,EAAE;YACpD,MAAMiM,WAAU,GAAI,IAAI1M,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;cACzCC,QAAQ,EAAE,CAACgI,UAAU,CAACxJ,GAAG,EAAEwJ,UAAU,CAACvJ,GAAG,CAAC;cAC1CwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJ4D,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQyH,UAAU,CAACxJ,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAKwH,UAAU,CAACvJ,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAG;cACzEhB,MAAM,EAAE;YACV,CAAC;YACD3D,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAAC+J,WAAW;UACpC;;UAEA;UACA,IAAIwC,QAAO,IAAK,OAAOA,QAAQ,CAAC1O,GAAE,KAAM,QAAO,IAAK,OAAO0O,QAAQ,CAACzO,GAAE,KAAM,QAAO,IAC/E,CAACuG,KAAK,CAACkI,QAAQ,CAAC1O,GAAG,KAAK,CAACwG,KAAK,CAACkI,QAAQ,CAACzO,GAAG,MAC1CyO,QAAQ,CAAC1O,GAAE,KAAMwJ,UAAU,CAACxJ,GAAE,IAAK0O,QAAQ,CAACzO,GAAE,KAAMuJ,UAAU,CAACvJ,GAAG,CAAC,EAAE;YACxE,MAAMsQ,SAAQ,GAAI,IAAI/Q,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;cACvCC,QAAQ,EAAE,CAACkN,QAAQ,CAAC1O,GAAG,EAAE0O,QAAQ,CAACzO,GAAG,CAAC;cACtCwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJ4D,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQ2M,QAAQ,CAAC1O,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK0M,QAAQ,CAACzO,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAG;cACrEhB,MAAM,EAAE;YACV,CAAC;YACD3D,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACoO,SAAS;UAClC;QACF,OAAO;UACL;UACAnT,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACoF,KAAK,EAAEiD,KAAK,KAAK;YACzC;YACA,IAAI,CAACjD,KAAI,IAAK,OAAOA,KAAK,CAAChG,GAAE,KAAM,QAAO,IAAK,OAAOgG,KAAK,CAAC/F,GAAE,KAAM,QAAO,IACvEuG,KAAK,CAACR,KAAK,CAAChG,GAAG,KAAKwG,KAAK,CAACR,KAAK,CAAC/F,GAAG,CAAC,EAAE;cACxC7B,OAAO,CAACC,IAAI,CAAC,YAAY4K,KAAK,GAAG,EAAEjD,KAAK;cACxC;YACF;YAEA,MAAMqL,OAAM,GAAIpI,KAAI,KAAM;YAC1B,MAAMqI,KAAI,GAAIrI,KAAI,KAAM7L,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI;;YAElD;YACA,MAAMpE,MAAK,GAAI,IAAI9B,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;cACpCC,QAAQ,EAAE,CAACwE,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;cAChCwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAACyP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE,CAAC;gBAChExP,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;mEACGmT,OAAM,GAAI,EAAC,GAAI,EAAE,aAAaA,OAAM,GAAI,EAAC,GAAI,EAAE;2DACvDA,OAAM,GAAI,SAAQ,GAAKC,KAAI,GAAI,SAAQ,GAAI,SAAU;8GACFD,OAAM,GAAI,GAAE,GAAKC,KAAI,GAAI,GAAE,GAAIrI,KAAM;;iBAElI,CAAC,EAAE;gBACJnH,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAACyP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE;cACtE,CAAC,CAAC;cACFtP,KAAK,EAAE,GAAGsP,OAAM,GAAI,IAAG,GAAKC,KAAI,GAAI,IAAG,GAAI,MAAMrI,KAAK,EAAG,MAAMjD,KAAK,CAAChG,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAKgE,KAAK,CAAC/F,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAG;cAC/GhB,MAAM,EAAE;YACV,CAAC;YAED3D,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACb,MAAM;UAC/B,CAAC;QACH;;QAEA;QACA,IAAIjE,WAAW,CAACgC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;UAChC7J,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC7E,WAAW,CAACgC,KAAK;QACzC;;QAEA;QACA,IAAI3B,QAAQ,CAAC2B,KAAI,IAAK3B,QAAQ,CAAC2B,KAAK,CAACyG,IAAI,EAAE;UACzC,IAAI+E,QAAO,GAAInN,QAAQ,CAAC2B,KAAK,CAACyG,IAAG;;UAEjC;UACA,IAAI,OAAO+E,QAAO,KAAM,QAAQ,EAAE;YAChC,IAAI;cACFA,QAAO,GAAIhG,IAAI,CAAC0M,KAAK,CAAC1G,QAAQ;YAChC,EAAE,OAAO9K,CAAC,EAAE;cACV3B,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE4B,CAAC;cAC5B8K,QAAO,GAAI,EAAC;YACd;UACF;UAEA,IAAIvE,KAAK,CAACC,OAAO,CAACsE,QAAQ,KAAKA,QAAQ,CAACnF,MAAK,GAAI,CAAC,EAAE;YAClD;YACA,MAAMsG,UAAS,GAAInB,QAAQ,CAACzL,GAAG,CAAC4G,KAAI,IAAK;cACvC,IAAI,OAAOA,KAAI,KAAM,QAAO,IAAKA,KAAK,CAAChG,GAAE,KAAMwR,SAAQ,IAAKxL,KAAK,CAAC/F,GAAE,KAAMuR,SAAS,EAAE;gBACnF,MAAMxR,GAAE,GAAIyR,UAAU,CAACzL,KAAK,CAAChG,GAAG;gBAChC,MAAMC,GAAE,GAAIwR,UAAU,CAACzL,KAAK,CAAC/F,GAAG;gBAChC,IAAI,CAACuG,KAAK,CAACxG,GAAG,KAAK,CAACwG,KAAK,CAACvG,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF,OAAO,IAAIqG,KAAK,CAACC,OAAO,CAACP,KAAK,KAAKA,KAAK,CAACN,MAAK,IAAK,CAAC,EAAE;gBACpD,MAAM1F,GAAE,GAAIyR,UAAU,CAACzL,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAM/F,GAAE,GAAIwR,UAAU,CAACzL,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAACQ,KAAK,CAACxG,GAAG,KAAK,CAACwG,KAAK,CAACvG,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF;cACA7B,OAAO,CAACC,IAAI,CAAC,WAAW,EAAE2H,KAAK;cAC/B,OAAO,IAAG;YACZ,CAAC,CAAC,CAAC4B,MAAM,CAACiI,KAAI,IAAKA,KAAI,KAAM,IAAI;YAEjCzR,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAE0M,UAAU,CAACtG,MAAM;YAE1C,IAAIsG,UAAU,CAACtG,MAAK,GAAI,CAAC,EAAE;cACzB,MAAMgM,WAAU,GAAI,IAAIlS,MAAM,CAACD,IAAI,CAACuJ,QAAQ,CAAC;gBAC3ChD,IAAI,EAAEkG,UAAU;gBAChB5I,WAAW,EAAE,SAAS;gBACtBC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE,GAAG;gBAClByF,WAAW,EAAE,OAAO;gBACpBsH,OAAO,EAAE;cACX,CAAC;cAED/S,QAAQ,CAAC+B,KAAI,GAAIqS,WAAU;cAC3B7V,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACwP,WAAW;YACnC;UACF;QACF;MAEF,EAAE,OAAOvT,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;MACjC;IACF;;IAEA;IACA,MAAMwT,yBAAwB,GAAKC,WAAW,IAAK;MACjD,IAAI;QACF;QACA5D,QAAQ,CAAC;;QAET;QACA5Q,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGuS,WAAW,CAACxU,UAAU;;QAE7C;QACAG,iBAAiB,CAAC8B,KAAI,GAAIuS,WAAW,CAACjI,SAAQ;QAC9CnM,cAAc,CAAC6B,KAAI,GAAIuS,WAAW,CAACpU,cAAa;QAChDC,WAAW,CAAC4B,KAAI,GAAIuS,WAAW,CAACnU,WAAU;;QAE1C;QACAC,QAAQ,CAAC2B,KAAI,GAAIuS,WAAW,CAAClU,QAAO;;QAEpC;QACAuT,iBAAiB,CAAC,IAAI;;QAEtB;QACA9M,UAAU,CAAC,MAAM;UACfuL,SAAS,CAAC;QACZ,CAAC,EAAE,GAAG;QAENtR,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEsS,WAAW;MAEtC,EAAE,OAAOzT,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;MAC5B;IACF;IAEAxD,SAAS,CAAC,MAAM;MACd;MACAyD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACL3D,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZE,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MACRC,oBAAoB;MAEpB2C,cAAc;MACdnB,WAAW;MACXW,UAAU;MACVsB,aAAa;MACbiB,YAAY;MACZhB,aAAa;MACbkB,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBE,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACXwE,UAAU;MACVG,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdzB,aAAa;MACbgC,qBAAqB;MACrBG,UAAU;MACVQ,WAAW;MACXM,QAAQ;MACRsE,WAAW;MACXI,QAAQ;MACRC,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXiB,SAAS;MACTf,iBAAiB;MAEjB;MACAyB,eAAe;MACfI,eAAe;MACfC,mBAAmB;MACnBE,mBAAmB;MACnBE,mBAAmB;MACnBC,oBAAoB;MACpBI,0BAA0B;MAC1BS,yBAAyB;MACzBV,iBAAiB;MAEjB;MACAY,iBAAiB,EAAG7U,IAAI,IAAKsB,gBAAgB,CAACtB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnEuW,kBAAkB,EAAG7U,KAAK,IAAK4B,iBAAiB,CAAC5B,KAAK,CAAC,EAAE1B,IAAG,IAAK;IACnE;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15ff904fdb335f2ca5b34c2afde34ea94ea84524057e942e8814d9e523db87a8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15ff904fdb335f2ca5b34c2afde34ea94ea84524057e942e8814d9e523db87a8.json
new file mode 100644
index 00000000..d43a9111
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15ff904fdb335f2ca5b34c2afde34ea94ea84524057e942e8814d9e523db87a8.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/183235c5d52f61a6f9c5676513a78d133025ae5def45a831e5d28880f1686f84.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/183235c5d52f61a6f9c5676513a78d133025ae5def45a831e5d28880f1686f84.json
new file mode 100644
index 00000000..5de2d80f
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/183235c5d52f61a6f9c5676513a78d133025ae5def45a831e5d28880f1686f84.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_path_history_panel","_ctx","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/18c55f393430e5e643c823b52f776bc6d5e84b906b9d75313338c0eb6a7fe510.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/18c55f393430e5e643c823b52f776bc6d5e84b906b9d75313338c0eb6a7fe510.json
new file mode 100644
index 00000000..5d34f934
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/18c55f393430e5e643c823b52f776bc6d5e84b906b9d75313338c0eb6a7fe510.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n\n // 创建路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n\n // 添加标记到地图\n mapInstance.value.add(pathMarkers.value);\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isNaN","isStart","parse","Array","isArray","undefined","parseFloat","coord","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAoKA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAI,QAAS,KAAI;AAC5D,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAS,EAAEC,YAAW,QAAS,cAAa;AACrD,OAAOC,SAAQ,MAAO,6BAA4B;AAClD,OAAOC,aAAY,MAAO,4CAA2C;AACrE,OAAOC,eAAc,MAAO,8CAA6C;AACzE,OAAOC,iBAAgB,MAAO,gDAA+C;AAC7E,OAAOC,gBAAe,MAAO,+CAA8C;AAE3E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVN,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIX,QAAQ,CAAC;IACvB,MAAMY,YAAW,GAAIjB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMmB,WAAU,GAAInB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMoB,OAAM,GAAIpB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMqB,YAAW,GAAIrB,GAAG,CAAC,EAAE;IAC3B,MAAMsB,aAAY,GAAItB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMuB,WAAU,GAAIvB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMwB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIzB,GAAG,CAAC,IAAI;IACzB,MAAM0B,iBAAgB,GAAI1B,GAAG,CAAC,OAAO;IACrC,MAAM2B,WAAU,GAAI3B,GAAG,CAAC,QAAQ;IAChC,MAAM4B,YAAW,GAAI5B,GAAG,CAAC,IAAI;IAC7B,MAAM6B,iBAAgB,GAAI7B,GAAG,CAAC,EAAE;IAChC,MAAM8B,eAAc,GAAI9B,GAAG,CAAC,CAAC,IAAI+B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIjC,GAAG,CAAC,IAAI;IAC/B,MAAMkC,aAAY,GAAIlC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMmC,iBAAgB,GAAInC,GAAG,CAAC,KAAK;IACnC,MAAMoC,QAAO,GAAIpC,GAAG,CAAC;MACnBqC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAI1C,GAAG,CAAC,EAAE;IACzB,MAAM2C,WAAU,GAAI3C,GAAG,CAAC,EAAE;IAC1B,MAAM4C,QAAO,GAAI5C,GAAG,CAAC,IAAI;IACzB,MAAM6C,iBAAgB,GAAI7C,GAAG,CAAC,OAAO;IACrC,MAAM8C,cAAa,GAAI9C,GAAG,CAAC,GAAG;IAC9B,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMiD,oBAAmB,GAAIjD,GAAG,CAAC,EAAE;IACnC,MAAMkD,mBAAkB,GAAI,CAAC,GAAG;;IAEhC;IACA,MAAMC,SAAQ,GAAInD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMoD,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,gBAAe,GAAI;MACvBC,KAAK,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAEpD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAErD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEzD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAE1D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAE3D,IAAI,EAAE,MAAM;QAAEwD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BvD,WAAW,CAACwD,KAAI,GAAID,GAAE;MACtBhB,OAAO,CAACkB,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACF1B,SAAS,CAACwB,KAAI,GAAI,IAAIE,IAAI,CAACE,SAAS,CAACL,GAAG;UACxCvB,SAAS,CAACwB,KAAK,CAACK,EAAE,CAAC,MAAM,EAAEC,cAAc;UACzCvB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;QAC9B,EAAE,OAAOnB,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK;QACxC;MACF;;MAEA;MACAyB,WAAW,CAAC;IACd;;IAEA;IACA,MAAMA,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACFxB,OAAO,CAACkB,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMO,eAAe,CAAC;QAEtBzB,OAAO,CAACkB,GAAG,CAAC,UAAU;MAExB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM2B,UAAS,GAAKC,CAAC,IAAK;MACxB,MAAM;QAAEC,GAAG;QAAEC;MAAI,IAAIF,CAAC,CAACG,MAAK;MAE5B,IAAItE,WAAW,CAACyD,KAAI,KAAM,UAAS,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAIrE,WAAW,CAACyD,KAAI,KAAM,cAAa,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QAChE;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQzE,WAAW,CAACyD,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAQ,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA;MACJ;IACF;;IAEA;IACA,MAAMS,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACAxE,OAAO,CAACuD,KAAI,GAAI,KAAI;MACpBlD,QAAQ,CAACkD,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAF,uBAAuB,CAAC;IAC1B;;IAEA;;IAEA;IACA,MAAMG,aAAY,GAAIA,CAAA,KAAM;MAC1B1E,OAAO,CAACuD,KAAI,GAAI,CAACvD,OAAO,CAACuD,KAAI;MAC7B;MACA,IAAIzD,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;QACtClD,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;UACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;;IAIA;IACA,MAAME,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI7E,WAAW,CAACyD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIzD,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C,OAAO,WAAU;MACnB;MACA,OAAO,EAAC;IACV;;IAEA;;IAEA;IACA,MAAMc,cAAa,GAAIA,CAACH,GAAG,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACpE,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAMmB,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFoD,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,WAAWnB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAV,MAAM,CAAChB,EAAE,CAAC,OAAO,EAAE,MAAM;QACvB1E,SAAS,CAAC;UACRqG,OAAO,EAAE,UAAUrB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDpE,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5B1E,aAAa,CAACqD,KAAK,CAACkC,IAAI,CAACb,MAAM;MAC/B3E,YAAY,CAACsD,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;MAEpCjF,SAAS,CAACwG,OAAO,CAAC,WAAWxB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMK,YAAW,GAAIA,CAAA,KAAM;MACzBzF,aAAa,CAACqD,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QACpC7E,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACD1E,aAAa,CAACqD,KAAI,GAAI,EAAC;MACvBtD,YAAY,CAACsD,KAAI,GAAI,EAAC;MACtBrE,SAAS,CAACwG,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMI,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIzF,QAAQ,CAACkD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMwC,sBAAqB,GAAK7E,IAAI,IAAK;MACvCZ,iBAAiB,CAACiD,KAAI,GAAIrC,IAAG;IAC/B;;IAEA;IACA,MAAM8E,uBAAsB,GAAK7E,KAAK,IAAK;MACzCZ,WAAW,CAACgD,KAAI,GAAIpC,KAAI;IAC1B;;IAEA;IACA,MAAM8E,kBAAiB,GAAKC,MAAM,IAAK;MACrC1F,YAAY,CAAC+C,KAAI,GAAI2C,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxC3F,iBAAiB,CAAC8C,KAAI,GAAI6C,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvC5F,eAAe,CAAC6C,KAAI,GAAI+C,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACzE,SAAS,CAACwB,KAAK,EAAE;QACpBrE,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIhC,QAAQ,CAACkD,KAAI,KAAMiD,IAAI,EAAE;QAC3B;QACAnG,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAI;UACFxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOpC,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAnD,SAAS,CAACuH,IAAI,CAAC,SAAS;QACxB;MACF;MAEApG,QAAQ,CAACkD,KAAI,GAAIiD,IAAG;MACpBxG,OAAO,CAACuD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAMmD,OAAM,GAAI;QACdC,WAAW,EAAEnE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC5DkE,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEtE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC1DqE,WAAW,EAAEhE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;MACpD;MAEA,IAAI;QACFX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEgD,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACXzE,SAAS,CAACwB,KAAK,CAACyD,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZ3E,SAAS,CAACwB,KAAK,CAAC0D,OAAO,CAACP,OAAO;YAC/B;UACF,KAAK,WAAW;YACd3E,SAAS,CAACwB,KAAK,CAAC2D,SAAS,CAACR,OAAO;YACjC;QACJ;QAEAxH,SAAS,CAACuH,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOzD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1BhC,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOsD,KAAK,IAAK;MACtC;MACA,MAAMC,OAAM,GAAIpI,KAAK,CAACmI,KAAK,CAACE,GAAG;MAE/B/E,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE4D,OAAO;MACjC9E,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAE4D,OAAO,CAACE,SAAQ,IAAKF,OAAO,CAACG,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAIzH,WAAW,CAACwD,KAAK,CAACkE,cAAc,CAAC,SAAS;QAC3DnF,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEgE,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC5DkE,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEtE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkE,YAAY;QACnCN,OAAO,CAACO,UAAU,CAACD,YAAY;;QAE/B;QACAE,UAAU,CAAC,MAAM;UACf7H,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAENvF,OAAO,CAACkB,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMhB,QAAO,GAAIyG,sBAAsB,CAACV,OAAO;;MAE/C;MACA,IAAI,CAAC9G,iBAAiB,CAACiD,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE/B,iBAAiB,CAACiD,KAAK;QAChDrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC9B,WAAW,CAACgD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE9B,WAAW,CAACgD,KAAK;QAC1CrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChB,QAAQ,EAAE;QACbiB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBnD,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAM0F,QAAO,GAAI;QACf7G,IAAI,EAAEZ,iBAAiB,CAACiD,KAAK;QAC7BpC,KAAK,EAAEZ,WAAW,CAACgD,KAAK;QACxBnC,WAAW,EAAEX,iBAAiB,CAAC8C,KAAI,IAAK,EAAE;QAC1CyE,SAAS,EAAE,CAAC,GAAGtH,eAAe,CAAC6C,KAAK,CAAC;QAAE;QACvClC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFiB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuE,QAAQ;QAClCzF,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAElD,iBAAiB,CAACiD,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEjD,WAAW,CAACgD,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE/C,iBAAiB,CAAC8C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEnC,QAAQ;;QAE7B;QACA,MAAM4G,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;UAChDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,QAAQ;QAC/B,CAAC;QAEDzF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE5D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEsG,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsF,MAAM;QAE9B,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClB,MAAMsD,IAAG,GAAIF,MAAM,CAACG,IAAG;;UAEvB;UACAlJ,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;;UAEhC;UACA8B,qBAAqB,CAACF,IAAI;UAE1B9J,SAAS,CAACwG,OAAO,CAAC,MAAMlD,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAAC9D,IAAI,IAAI;UAC1E6C,OAAO,CAACkB,GAAG,CAAC,kBAAkB,EAAEwF,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;;QAE3C;QACAxF,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;MAClC;;MAEA;MACA/G,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAnC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErD,WAAW,CAACoD,KAAK,CAAC4F,MAAM;IAClD;IAEA,MAAMrB,sBAAqB,GAAKV,OAAO,IAAK;MAC1C9E,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE4D,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MAEjE,IAAI;QACF,IAAIF,OAAO,CAACG,UAAS,KAAM,aAAY,IAAKH,OAAO,CAACE,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM8B,MAAK,GAAIhC,OAAO,CAACiC,SAAS,CAAC;UACjC,MAAMnD,MAAK,GAAIkB,OAAO,CAACkC,SAAS,CAAC;UACjChH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;YAAE4F,MAAM;YAAElD;UAAO,CAAC;UACzC,OAAO;YACLhF,IAAI,EAAE,QAAQ;YACdkI,MAAM,EAAE,CAACA,MAAM,CAAClF,GAAG,EAAEkF,MAAM,CAACjF,GAAG,CAAC;YAChC+B,MAAM,EAAEA;UACV;QACF,OAAO,IAAIkB,OAAO,CAACG,UAAS,KAAM,cAAa,IAAKH,OAAO,CAACE,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAMiC,IAAG,GAAInC,OAAO,CAACoC,OAAO,CAAC;UAC7BlH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,IAAI;UAC5B,OAAO;YACLrI,IAAI,EAAE,SAAS;YACfqI,IAAI,EAAEA,IAAI,CAACjG,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;UAChD;QACF,OAAO,IAAIiD,OAAO,CAACG,UAAS,KAAM,gBAAe,IAAKH,OAAO,CAACE,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMoC,MAAK,GAAItC,OAAO,CAACuC,SAAS,CAAC;UACjCrH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkG,MAAM;UAC7B,OAAO;YACLxI,IAAI,EAAE,WAAW;YACjBwI,MAAM,EAAE,CAACA,MAAM,CAACE,YAAY,CAAC,CAAC,CAAC1F,GAAG,EAAEwF,MAAM,CAACE,YAAY,CAAC,CAAC,CAACzF,GAAG,EACrDuF,MAAM,CAACG,YAAY,CAAC,CAAC,CAAC3F,GAAG,EAAEwF,MAAM,CAACG,YAAY,CAAC,CAAC,CAAC1F,GAAG;UAC9D;QACF;MACF,EAAE,OAAO9B,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE+E,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAMvD,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFzB,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,0BAA0B;QAEtC,MAAMyE,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChD5F,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE9D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEsG,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEsF,MAAM;QAEhC,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClBpD,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEsF,MAAM,CAACG,IAAI;;UAEtC;UACAa,aAAa,CAAC,IAAI;;UAElB;UACAhB,MAAM,CAACG,IAAI,CAACrD,OAAO,CAACoD,IAAG,IAAK;YAC1BE,qBAAqB,CAACF,IAAI;UAC5B,CAAC;UAED1G,OAAO,CAACkB,GAAG,CAAC,QAAQsF,MAAM,CAACG,IAAI,CAACE,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAIN,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM2D,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAACjJ,WAAW,CAACwD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;MAEA,IAAI;QACFC,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEwF,IAAI;QAE/B,MAAMvF,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAI2D,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAMM,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC5DkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC7H,KAAK,CAAC,EAAE8B,OAAM,IAAK;QACzD;QAEAX,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEkE,YAAY;QACpCpF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ;;QAErC;QACA,IAAI2H,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnCoB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,EAAEJ,IAAI,CAAC3H,QAAQ,CAAC6E,MAAM;UAClEkB,OAAM,GAAI,IAAI3D,IAAI,CAACsG,MAAM,CAAC;YACxBX,MAAM,EAAE,IAAI3F,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,CAAC,CAAC,CAAC,EAAEJ,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,CAAC,CAAC,CAAC,CAAC;YACzElD,MAAM,EAAE8C,IAAI,CAAC3H,QAAQ,CAAC6E,MAAM;YAC5B,GAAGwB;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3CoB,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEwF,IAAI,CAAC3H,QAAQ,CAACkI,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAAC3H,QAAQ,CAACkI,IAAI,CAACjG,GAAG,CAACmG,KAAI,IAAK,IAAIhG,IAAI,CAACuG,MAAM,CAACP,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;UAChFrC,OAAM,GAAI,IAAI3D,IAAI,CAACwG,OAAO,CAAC;YACzBV,IAAI,EAAEA,IAAI;YACV,GAAG7B;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7CoB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ,CAACqI,MAAM;UAC5C,MAAMA,MAAK,GAAI,IAAIjG,IAAI,CAACyG,MAAM,CAC5B,IAAIzG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,IAAIjG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,CAClE;UACAtC,OAAM,GAAI,IAAI3D,IAAI,CAAC0G,SAAS,CAAC;YAC3BT,MAAM,EAAEA,MAAM;YACd,GAAGhC;UACL,CAAC;QACH;QAEA,IAAIN,OAAO,EAAE;UACX9E,OAAO,CAACkB,GAAG,CAAC,kBAAkB;;UAE9B;UACAzD,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;;UAE7B;UACAhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE,IAAImG,OAAM;;UAE9B;UACA,MAAMgD,aAAY,GAAIjK,WAAW,CAACoD,KAAK,CAAC8G,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACrJ,EAAC,KAAM+H,IAAI,CAAC/H,EAAE;UACvE,IAAImJ,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBjK,WAAW,CAACoD,KAAK,CAACkC,IAAI,CAACuD,IAAI;YAC3B1G,OAAO,CAACkB,GAAG,CAAC,WAAW;UACzB,OAAO;YACLlB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACA4D,OAAO,CAACxD,EAAE,CAAC,OAAO,EAAE,MAAM;YACxBtB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEwF,IAAI,CAAC/H,EAAE;YAC9BsJ,UAAU,CAACvB,IAAI,CAAC/H,EAAE;UACpB,CAAC;;UAED;UACA2G,UAAU,CAAC,MAAM;YACf7H,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENvF,OAAO,CAACkB,GAAG,CAAC,OAAOwF,IAAI,CAAC/H,EAAE,WAAW;QAEvC,OAAO;UACLqB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE2G,IAAI,CAAC/H,EAAE,EAAEoB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMkI,UAAS,GAAKtJ,EAAE,IAAK;MACzBJ,cAAc,CAAC0C,KAAI,GAAItC,EAAC;MACxB,MAAMmG,OAAM,GAAIhH,YAAY,CAACa,EAAE;MAC/B,IAAImG,OAAO,EAAE;QACX;QACAA,OAAO,CAACO,UAAU,CAAC;UACjBf,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACA1G,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAAC0E,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACrJ,EAAC,KAAMA,EAAE,EAAE;YACf,MAAMuJ,YAAW,GAAIpK,YAAY,CAACkK,CAAC,CAACrJ,EAAE;YACtC,IAAIuJ,YAAY,EAAE;cAChBA,YAAY,CAAC7C,UAAU,CAAC;gBACtBf,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAM4D,UAAS,GAAI,MAAOxJ,EAAE,IAAK;MAC/B,IAAI;QACFqB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE1B,MAAMgH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBjH,EAAE,EAAE,EAAE;UACtDkH,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACpD,OAAO,EAAE;UAClB;UACA,MAAM0B,OAAM,GAAIhH,YAAY,CAACa,EAAE;UAC/B,IAAImG,OAAO,EAAE;YACXrH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;YAChC,OAAOhH,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACoD,KAAI,GAAIpD,WAAW,CAACoD,KAAK,CAACmH,MAAM,CAAC1B,IAAG,IAAKA,IAAI,CAAC/H,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAAC0C,KAAI,KAAMtC,EAAE,EAAE;YAC/BJ,cAAc,CAAC0C,KAAI,GAAI,IAAG;UAC5B;UAEArE,SAAS,CAACwG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAI4H,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMoF,QAAO,GAAK3B,IAAI,IAAK;MACzBhI,QAAQ,CAACuC,KAAI,GAAI;QAAE,GAAGyF;MAAK;MAC3BjI,iBAAiB,CAACwC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMqH,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFtI,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAExC,QAAQ,CAACuC,KAAK,CAACtC,EAAE;QAEzC,MAAMgH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBlH,QAAQ,CAACuC,KAAK,CAACtC,EAAE,EAAE,EAAE;UACrEkH,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBrH,IAAI,EAAEF,QAAQ,CAACuC,KAAK,CAACrC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACuC,KAAK,CAACpC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACuC,KAAK,CAACnC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC6G,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACpD,OAAO,EAAE;UAClB;UACA,MAAMsD,IAAG,GAAI7I,WAAW,CAACoD,KAAK,CAACsH,IAAI,CAACP,CAAA,IAAKA,CAAC,CAACrJ,EAAC,KAAMD,QAAQ,CAACuC,KAAK,CAACtC,EAAE;UACnE,IAAI+H,IAAI,EAAE;YACRA,IAAI,CAAC9H,IAAG,GAAIF,QAAQ,CAACuC,KAAK,CAACrC,IAAG;YAC9B8H,IAAI,CAAC7H,KAAI,GAAIH,QAAQ,CAACuC,KAAK,CAACpC,KAAI;YAChC6H,IAAI,CAAC5H,WAAU,GAAIJ,QAAQ,CAACuC,KAAK,CAACnC,WAAU;;YAE5C;YACA,MAAMgG,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;YACpC,IAAImG,OAAO,EAAE;cACXA,OAAO,CAACO,UAAU,CAAC;gBACjBhB,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,CAACwB,KAAK;gBAC9CoE,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,CAACwB,KAAK;gBAC5CqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC7H,KAAK,CAAC,CAAC8B;cAC7C,CAAC;YACH;UACF;UAEA/D,SAAS,CAACwG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsF,MAAM,CAACG,IAAI;QAErC,OAAO;UACL,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;MAEAxE,iBAAiB,CAACwC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMuG,aAAY,GAAI,MAAAA,CAAOgB,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK3K,WAAW,CAACoD,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAM4B,OAAM,GAAI5K,WAAW,CAACoD,KAAK,CAACD,GAAG,CAAC0F,IAAG,IAAKA,IAAI,CAAC/H,EAAE;UAErDqB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuH,OAAO;UAEjC,MAAM9C,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;YAChDC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACP,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cAAEyC,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAAC9C,QAAQ,CAACS,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAACpD,OAAO,EAAE;YACnB,MAAM,IAAImD,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,WAAW;UAC/C;UAEAjD,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEsF,MAAM,CAACG,IAAI;QACvC;;QAEA;QACAgC,MAAM,CAACC,MAAM,CAAC9K,YAAY,CAAC,CAACwF,OAAO,CAACwB,OAAM,IAAK;UAC7C,IAAIrH,WAAW,CAACwD,KAAK,EAAE;YACrBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF,CAAC;;QAED;QACAjH,WAAW,CAACoD,KAAI,GAAI,EAAC;QACrB0H,MAAM,CAACE,IAAI,CAAC/K,YAAY,CAAC,CAACwF,OAAO,CAACwF,GAAE,IAAK;UACvC,OAAOhL,YAAY,CAACgL,GAAG;QACzB,CAAC;QACDvK,cAAc,CAAC0C,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACuH,WAAW,EAAE;UAChB5L,SAAS,CAACwG,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOrD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAACyI,WAAW,EAAE;UAChB5L,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAM8F,qBAAoB,GAAKC,MAAM,IAAK;MACxCxK,aAAa,CAACyC,KAAI,GAAI+H,MAAK;;MAE3B;MACAnL,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;QACpC,IAAImG,OAAO,EAAE;UACX,IAAIkE,MAAM,CAACC,QAAQ,CAACvC,IAAI,CAAC9H,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;UAC/B,OAAO;YACLrH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAMoE,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIrL,WAAW,CAACoD,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAE;MACxC/J,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;QACpC,IAAImG,OAAM,IAAKA,OAAO,CAACuC,SAAS,EAAE;UAChCD,MAAM,CAAC+B,MAAM,CAACrE,OAAO,CAACuC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAAC3H,QAAQ,EAAE+H,MAAM,EAAE;UAChCM,MAAM,CAAC+B,MAAM,CAACzC,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM;QACpC;MACF,CAAC;MAEDrJ,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAMpF,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACnE,OAAO,CAACuD,KAAI,IAAK,CAACxD,WAAW,CAACwD,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMkI,UAAS,GAAIrK,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI;;MAE7C;MACA7H,UAAU,CAACiC,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;;MAElC;MACA,MAAMS,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;wGAGuC2J,UAAU;;WAEvG,CAAC;UACFvG,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMsG,UAAU;MACzB,CAAC;MAED5L,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BrD,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;;MAE7B;MACA,IAAItD,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB;MAEA1M,SAAS,CAACwG,OAAO,CAAC,SAASiG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC7L,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAIjC,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;MACzC;MAEA,MAAMgG,IAAG,GAAIjI,UAAU,CAACiC,KAAK,CAACD,GAAG,CAACuI,CAAA,IAAK,CAACA,CAAC,CAAC3H,GAAG,EAAE2H,CAAC,CAAC1H,GAAG,CAAC;MAErD3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEA,IAAI;QACV5C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE;MACf,CAAC;MAEDhM,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAChE,QAAQ,CAAC+B,KAAK;IACtC;;IAEA;IACA,MAAMyI,WAAU,GAAKC,KAAK,IAAK;MAC7B3K,UAAU,CAACiC,KAAK,CAAC2I,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB7K,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAE2C,CAAC,KAAK;QACrCC,kBAAkB,CAAC5C,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,EAAEiI,CAAA,GAAI,CAAC;MAChD,CAAC;MAED,IAAI9K,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB,OAAO,IAAIpK,QAAQ,CAAC+B,KAAK,EAAE;QACzBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;IACtB;IAEA,MAAM8I,kBAAiB,GAAIA,CAACnI,GAAG,EAAEC,GAAG,EAAE8H,KAAK,KAAK;MAC9C,MAAMxI,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,MAAMmB,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;wGAGuCiK,KAAK;;WAElG,CAAC;UACF7G,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAM4G,KAAK;MACpB,CAAC;MAEDlM,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BrD,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAMuH,gBAAe,GAAIA,CAAA,KAAM;MAC7B5K,WAAW,CAACgC,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QAClC7E,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACDrD,WAAW,CAACgC,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM+I,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAIhL,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/BjK,SAAS,CAACqN,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFjK,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE/B,iBAAiB,CAAC8B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK,CAAC4F,MAAM;QAC7C7G,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAErD,WAAW,CAACoD,KAAK;QAErC,MAAMiJ,UAAS,GAAIlL,UAAU,CAACiC,KAAK,CAAC,CAAC;QACrC,MAAMtD,YAAW,GAAIqB,UAAU,CAACiC,KAAK,CAACkJ,KAAK,CAAC,CAAC,GAAE;;QAE/C;QACA,MAAMC,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVtI,GAAG,EAAEsI,UAAU,CAACtI,GAAG;YACnBC,GAAG,EAAEqI,UAAU,CAACrI;UAClB,CAAC;UACDlE,YAAY,EAAEA,YAAY,CAACqD,GAAG,CAACmG,KAAI,KAAM;YACvCvF,GAAG,EAAEuF,KAAK,CAACvF,GAAG;YACdC,GAAG,EAAEsF,KAAK,CAACtF;UACb,CAAC,CAAC,CAAC;UACHwI,SAAS,EAAElL,iBAAiB,CAAC8B,KAAI,IAAK,OAAO;UAAE;UAC/C7B,cAAc,EAAEA,cAAc,CAAC6B,KAAK;UACpC5B,WAAW,EAAEA,WAAW,CAAC4B,KAAK;UAC9BpD,WAAW,EAAEA,WAAW,CAACoD,KAAI,IAAKpD,WAAW,CAACoD,KAAK,CAAC4F,MAAK,GAAI,IAAIhJ,WAAW,CAACoD,KAAK,CAACD,GAAG,CAAC0F,IAAG,KAAM;YAC9F/H,EAAE,EAAE+H,IAAI,CAAC/H,EAAE;YACXC,IAAI,EAAE8H,IAAI,CAAC9H,IAAI;YACfC,KAAK,EAAE6H,IAAI,CAAC7H,KAAK;YACjByL,aAAa,EAAE5D,IAAI,CAAC3H,QAAQ,EAAEH,IAAG,IAAK8H,IAAI,CAAC4D,aAAa;YACxDC,aAAa,EAAE7D,IAAI,CAAC3H,QAAO,IAAK2H,IAAI,CAAC6D,aAAa;YAClDzL,WAAW,EAAE4H,IAAI,CAAC5H;UACpB,CAAC,CAAC,IAAI;QACR;QAEAkB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAEkJ,YAAY;;QAExC;QACA,MAAMzE,QAAO,GAAI,MAAMC,KAAK,CAAC,oBAAoB,EAAE;UACjDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACmE,YAAY;QACnC,CAAC;QAED,IAAI,CAACzE,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvBmG,MAAM,EAAEP,QAAQ,CAACO,MAAM;YACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;YAC/BpG,KAAK,EAAEsG;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWZ,QAAQ,CAACO,MAAM,MAAMG,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEsF,MAAM;QAE7B,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClB,MAAM;YAAEuD,IAAI;YAAE6D;UAAQ,IAAIhE,MAAK;;UAE/B;UACAlH,QAAQ,CAAC2B,KAAI,GAAI;YACfwJ,QAAQ,EAAEC,IAAI,CAACC,KAAK,CAAChE,IAAI,CAAC8D,QAAO,IAAKD,OAAO,EAAEI,aAAY,IAAK,CAAC,CAAC;YAClEC,QAAQ,EAAElE,IAAI,CAACmE,cAAa,IAAKN,OAAO,EAAEO,aAAY,IAAK,CAAC;YAC5DC,UAAU,EAAErE,IAAI,CAACsE,WAAW,EAAEpE,MAAK,IAAK2D,OAAO,EAAEU,aAAY,IAAK,CAAC;YACnEb,SAAS,EAAE1D,IAAI,CAAC0D,SAAQ,IAAK7D,MAAM,CAAC6D,SAAS;YAC7Cc,kBAAkB,EAAExE,IAAI,CAACyE,oBAAmB,IAAKZ,OAAO,EAAEW,kBAAiB,IAAK,EAAE;YAClFE,WAAW,EAAEb,OAAO,EAAEa,WAAU,IAAK;UACvC;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACA,MAAMC,QAAO,GAAI5E,IAAI,CAACsE,WAAU,IAAKtE,IAAI,CAACM,IAAG,IAAK,EAAC;UACnDuE,4BAA4B,CAACD,QAAQ,EAAE5N,YAAY,EAAE6M,OAAO,EAAEa,WAAW;UAEzEzO,SAAS,CAACwG,OAAO,CAAC,GAAGqI,gBAAgB,CAACjF,MAAM,CAAC6D,SAAS,CAAC,YAAY;UAEnE,MAAMqB,WAAU,GAAI/E,IAAI,CAACyE,oBAAoB,EAAEvE,MAAK,IAAK2D,OAAO,EAAEW,kBAAkB,EAAEtE,MAAK,IAAK;UAChG,IAAI6E,WAAU,GAAI,CAAC,EAAE;YACnB9O,SAAS,CAACuH,IAAI,CAAC,QAAQuH,WAAW,OAAO;UAC3C;;UAEA;UACA,IAAIlB,OAAO,EAAEa,WAAU,IAAKb,OAAO,CAACa,WAAW,CAACxE,MAAK,GAAI,CAAC,EAAE;YAC1D,MAAM8E,SAAQ,GAAInB,OAAO,CAACa,WAAW,CAACrK,GAAG,CAAC,CAAC4K,MAAM,EAAEjC,KAAK,KACtD,GAAGA,KAAI,GAAI,CAAC,KAAKiC,MAAM,CAACC,MAAM,CAACjK,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAK4I,MAAM,CAACC,MAAM,CAAChK,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,GAAG4I,MAAM,CAACE,YAAW,GAAI,SAAQ,GAAI,EAAE,EACvH,CAAC,CAACC,IAAI,CAAC,IAAI;YAEXzG,UAAU,CAAC,MAAM;cACf1I,SAAS,CAAC;gBACRqG,OAAO,EAAE,aAAa0I,SAAS,EAAE;gBACjC/M,IAAI,EAAE,MAAM;gBACZiM,QAAQ,EAAE,KAAK;gBACfmB,SAAS,EAAE;cACb,CAAC;YACH,CAAC,EAAE,IAAI;UACT;QAEF,OAAO;UACL,MAAM,IAAIzF,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BnD,SAAS,CAACmD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAACkD,OAAO;MAC5C;IACF;;IAEA;IACA,MAAMwI,gBAAe,GAAKpB,SAAS,IAAK;MACtC,MAAM4B,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAAC5B,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMmB,4BAA2B,GAAIA,CAACc,WAAW,EAAEC,eAAe,EAAElB,WAAW,KAAK;MAClF,IAAI,CAAC5N,WAAW,CAACwD,KAAI,IAAK,CAACqL,WAAU,IAAKA,WAAW,CAACzF,MAAK,GAAI,CAAC,EAAE;MAElE,MAAM1F,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE;QACtBsL,UAAU,EAAEF,WAAW,CAACzF,MAAM;QAC9B4F,WAAW,EAAEF,eAAe,CAAC1F,MAAM;QACnCwE,WAAW,EAAEA;MACf,CAAC;;MAED;MACA,MAAMqB,UAAS,GAAIJ,WAAW,CAACtL,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;MAElE3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEyF,UAAU;QAChBrI,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE,OAAO;QACpBlF,aAAa,EAAE;MACjB,CAAC;MAED9G,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAChE,QAAQ,CAAC+B,KAAK;MAEpC,MAAM0L,OAAM,GAAI,EAAC;;MAEjB;MACA,MAAMC,WAAU,GAAI,IAAIzL,IAAI,CAACoB,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAAC8J,WAAW,CAAC,CAAC,CAAC,CAAC1K,GAAG,EAAE0K,WAAW,CAAC,CAAC,CAAC,CAACzK,GAAG,CAAC;QAClDY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFoD,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,IAAI;QACX8J,MAAM,EAAE;MACV,CAAC;MAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC0J,WAAW;MACjCD,OAAO,CAACxJ,IAAI,CAACyJ,WAAW;;MAExB;MACA,IAAIvB,WAAU,IAAKA,WAAW,CAACxE,MAAK,GAAI,CAAC,EAAE;QACzCwE,WAAW,CAAC/H,OAAO,CAAC,CAACsI,MAAM,EAAEjC,KAAK,KAAK;UACrC,MAAMmD,UAAS,GAAInD,KAAI,GAAI;UAC3B,MAAMoD,UAAS,GAAInB,MAAM,CAACE,YAAW;UACrC,MAAM7N,WAAU,GAAI2N,MAAM,CAAC3N,WAAU;;UAErC;UACA,IAAImC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAI2M,UAAU,EAAE;YACd,QAAQ9O,WAAW;cACjB,KAAK,KAAK;gBACRmC,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,QAAQ;gBACXA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,MAAM;gBACTA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,UAAU;gBACbA,KAAI,GAAI,SAAQ,EAAE;gBAClB;YACJ;UACF;UAEA,MAAM4M,YAAW,GAAI,IAAI7L,IAAI,CAACoB,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAACC,MAAM,CAACjK,GAAG,EAAEgK,MAAM,CAACC,MAAM,CAAChK,GAAG,CAAC;YAChDY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;yDAEZU,KAAK;2GAC6C0M,UAAU;oBACjGC,UAAS,GAAI,8EAA6E,GAAI,EAAE;;eAErG,CAAC;cACFjK,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAE,MAAM+J,UAAU,GAAGC,UAAS,GAAI,KAAK9O,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3E4O,MAAM,EAAE;UACV,CAAC;UAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC8J,YAAY;UAClCL,OAAO,CAACxJ,IAAI,CAAC6J,YAAY;QAC3B,CAAC;MACH,OAAO;QACL;QACAT,eAAe,CAACjJ,OAAO,CAAC,CAACsI,MAAM,EAAEjC,KAAK,KAAK;UACzC,MAAMsD,YAAW,GAAItD,KAAI,GAAI;UAC7B,MAAMuD,YAAW,GAAIvD,KAAI,KAAM4C,eAAe,CAAC1F,MAAK,GAAI;UAExD,MAAMmG,YAAW,GAAI,IAAI7L,IAAI,CAACoB,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAAChK,GAAG,EAAEgK,MAAM,CAAC/J,GAAG,CAAC;YAClCY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;yDAEZwN,YAAW,GAAI,SAAQ,GAAI,SAAS;2GACcA,YAAW,GAAI,GAAE,GAAID,YAAY;;eAE7H,CAAC;cACFnK,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAEmK,YAAW,GAAI,IAAG,GAAI,MAAMD,YAAY,EAAE;YACjDJ,MAAM,EAAE;UACV,CAAC;UAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC8J,YAAY;UAClCL,OAAO,CAACxJ,IAAI,CAAC6J,YAAY;QAC3B,CAAC;MACH;MAEA/N,WAAW,CAACgC,KAAI,GAAI0L,OAAM;;MAE1B;MACArH,UAAU,CAAC,MAAM;QACf,IAAIpG,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC,CAACrG,QAAQ,CAAC+B,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;QAC1E;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMqK,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAIpM,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA4I,gBAAgB,CAAC;IACnB;IAEA,MAAMsD,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAIvC,aAAY,GAAI;MACpB,KAAK,IAAId,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAI9K,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAEiD,CAAC,EAAE,EAAE;QACpD,MAAMsD,EAAC,GAAIpO,UAAU,CAACiC,KAAK,CAAC6I,CAAC;QAC7B,MAAMuD,EAAC,GAAIrO,UAAU,CAACiC,KAAK,CAAC6I,CAAA,GAAI,CAAC;QACjCc,aAAY,IAAK0C,WAAW,CAACF,EAAE,CAACvL,GAAG,EAAEuL,EAAE,CAACxL,GAAG,EAAEyL,EAAE,CAACxL,GAAG,EAAEwL,EAAE,CAACzL,GAAG;MAC7D;MACA,OAAOgJ,aAAY;IACrB;IAEA,MAAM0C,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAI7C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIL,IAAG,GAAI/C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI7C,IAAI,CAACmD,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI9C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAIvD,IAAI,CAACwD,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIrD,IAAI,CAACwD,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BrD,IAAI,CAACyD,GAAG,CAACP,EAAE,IAAIlD,IAAI,CAACyD,GAAG,CAACL,EAAE,IAC1BpD,IAAI,CAACwD,GAAG,CAACF,EAAE,GAAC,CAAC,IAAItD,IAAI,CAACwD,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAI1D,IAAI,CAAC2D,KAAK,CAAC3D,IAAI,CAAC4D,IAAI,CAACL,CAAC,CAAC,EAAEvD,IAAI,CAAC4D,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAON,CAAA,GAAIS,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAM1R,YAAY,CAAC2R,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtB9P,IAAI,EAAE;QACR,CAAC;QAEDhC,SAAS,CAACwG,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNxG,SAAS,CAACuH,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAMwK,QAAO,GAAIA,CAAA,KAAM;MACrB9E,gBAAgB,CAAC;MAEjB,IAAI3K,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;MAEAjC,UAAU,CAACiC,KAAI,GAAI,EAAC;MACpB3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;MAEpBrE,SAAS,CAACwG,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAMwL,uBAAsB,GAAKvE,SAAS,IAAK;MAC7ClL,iBAAiB,CAAC8B,KAAI,GAAIoJ,SAAQ;IACpC;;IAEA;IACA,MAAMwE,oBAAmB,GAAKC,QAAQ,IAAK;MACzC1P,cAAc,CAAC6B,KAAI,GAAI6N,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnC3P,WAAW,CAAC4B,KAAI,GAAI+N,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIjQ,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMqD,UAAS,GAAIlL,UAAU,CAACiC,KAAK,CAAC,CAAC;MACrCxD,WAAW,CAACwD,KAAK,CAACiO,SAAS,CAAC,CAAChF,UAAU,CAACtI,GAAG,EAAEsI,UAAU,CAACrI,GAAG,CAAC;MAC5DpE,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAIpQ,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAMwI,QAAO,GAAIrQ,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC;MAC7DpJ,WAAW,CAACwD,KAAK,CAACiO,SAAS,CAAC,CAACG,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;MACxDpE,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,SAAQ,GAAIA,CAAA,KAAM;MACtBtP,OAAO,CAACkB,GAAG,CAAC,sCAAsC,EAAElC,UAAU,CAACiC,KAAK,CAAC4F,MAAM;MAE3E,IAAI,CAAC7H,UAAU,CAACiC,KAAI,IAAKjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;QACtD7G,OAAO,CAACC,IAAI,CAAC,SAAS;QACtBrD,SAAS,CAACqN,OAAO,CAAC,UAAU;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,CAACxM,WAAW,CAACwD,KAAK,EAAE;UACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS;UACvBnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;UACxB;QACF;;QAEA;QACA,IAAI,CAACqB,MAAM,CAACD,IAAG,IAAK,CAACC,MAAM,CAACD,IAAI,CAACyG,MAAM,EAAE;UACvC5H,OAAO,CAACD,KAAK,CAAC,oBAAoB;UAClCnD,SAAS,CAACmD,KAAK,CAAC,YAAY;UAC5B;QACF;QAEAC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK;;QAEtC;QACA,MAAMmG,MAAK,GAAI,IAAIhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAC;;QAEtC;QACA,IAAI2H,gBAAe,GAAI;QACvBvQ,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAEwC,KAAK,KAAK;UACzC,IAAIxC,KAAI,IAAK,OAAOA,KAAK,CAACvF,GAAE,KAAM,QAAO,IAAK,OAAOuF,KAAK,CAACtF,GAAE,KAAM,QAAQ,EAAE;YAC3EuF,MAAM,CAAC+B,MAAM,CAAC,CAAChC,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;YACpC0N,gBAAgB,EAAC;YACjBvP,OAAO,CAACkB,GAAG,CAAC,QAAQyI,KAAI,GAAI,CAAC,MAAMxC,KAAK,CAACvF,GAAG,KAAKuF,KAAK,CAACtF,GAAG,GAAG;UAC/D,OAAO;YACL7B,OAAO,CAACC,IAAI,CAAC,SAAS0J,KAAI,GAAI,CAAC,GAAG,EAAExC,KAAK;UAC3C;QACF,CAAC;QAED,IAAIoI,gBAAe,KAAM,CAAC,EAAE;UAC1BvP,OAAO,CAACD,KAAK,CAAC,UAAU;UACxBnD,SAAS,CAACmD,KAAK,CAAC,SAAS;UACzB;QACF;;QAEA;QACAtC,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;;QAE7DpH,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEqO,gBAAgB,EAAE,MAAM;QACnD3S,SAAS,CAACwG,OAAO,CAAC,QAAQmM,gBAAgB,SAAS;MAErD,EAAE,OAAOxP,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK;QACrCnD,SAAS,CAACmD,KAAK,CAAC,YAAW,GAAIA,KAAK,CAACkD,OAAO;MAC9C;IACF;;IAEA;;IAEA;IACA,MAAMuM,eAAc,GAAKvI,IAAI,IAAK;MAChC,IAAI,CAACxJ,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,MAAMjC,QAAO,GAAI,IAAIkC,MAAM,CAACD,IAAI,CAACqI,QAAQ,CAAC;UACxCvC,IAAI,EAAEA,IAAI,CAACgE,WAAW,CAACjK,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC,CAAC;UAC3DwC,WAAW,EAAE4C,IAAI,CAAC7G,KAAI,IAAK,SAAS;UACpCkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,GAAG;UAClBkF,WAAW,EAAE,OAAO;UACpBgG,OAAO,EAAE,IAAI;UACbC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QAC3B,CAAC;;QAED;QACA,MAAMxF,UAAS,GAAIjD,IAAI,CAACgE,WAAW,CAAC,CAAC;QACrC,MAAMoE,QAAO,GAAIpI,IAAI,CAACgE,WAAW,CAAChE,IAAI,CAACgE,WAAW,CAACpE,MAAK,GAAI,CAAC;QAE7D,MAAM+F,WAAU,GAAI,IAAIxL,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;UACzCC,QAAQ,EAAE,CAAC0H,UAAU,CAACtI,GAAG,EAAEsI,UAAU,CAACrI,GAAG,CAAC;UAC1CY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;uDAEZuH,IAAI,CAAC7G,KAAI,IAAK,SAAS;;;aAGjE,CAAC;YACF0C,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAGkE,IAAI,CAAC9J,IAAI,OAAO;UAC1B0P,MAAM,EAAE;QACV,CAAC;QAED,MAAM8C,SAAQ,GAAI,IAAIvO,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;UACvCC,QAAQ,EAAE,CAAC6M,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;UACtCY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;uDAEZuH,IAAI,CAAC7G,KAAI,IAAK,SAAS;;;aAGjE,CAAC;YACF0C,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAGkE,IAAI,CAAC9J,IAAI,OAAO;UAC1B0P,MAAM,EAAE;QACV,CAAC;;QAED;QACArN,mBAAmB,CAACyH,IAAI,CAACtI,EAAE,IAAI;UAC7BO,QAAQ;UACR0N,WAAW;UACX+C;QACF;;QAEA;QACAlS,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC,CAAChE,QAAQ,EAAE0N,WAAW,EAAE+C,SAAS,CAAC;QAExD/S,SAAS,CAACwG,OAAO,CAAC,UAAU6D,IAAI,CAAC9J,IAAI,EAAE;MACzC,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAM6P,eAAc,GAAK3I,IAAI,IAAK;MAChC,IAAI,CAACxJ,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAMiE,QAAO,GAAI1F,mBAAmB,CAACyH,IAAI,CAACtI,EAAE;MAC5C,IAAIuG,QAAQ,EAAE;QACZzH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAAC,CAAC2B,QAAQ,CAAChG,QAAQ,EAAEgG,QAAQ,CAAC0H,WAAW,EAAE1H,QAAQ,CAACyK,SAAS,CAAC;QACtF,OAAOnQ,mBAAmB,CAACyH,IAAI,CAACtI,EAAE;QAClC/B,SAAS,CAACuH,IAAI,CAAC,UAAU8C,IAAI,CAAC9J,IAAI,EAAE;MACtC;IACF;;IAEA;IACA,MAAM0S,mBAAkB,GAAKC,KAAK,IAAK;MACrCA,KAAK,CAACxM,OAAO,CAAC2D,IAAG,IAAK;QACpB,IAAI,CAAC1H,oBAAoB,CAAC0B,KAAK,CAACgI,QAAQ,CAAChC,IAAI,CAACtI,EAAE,CAAC,EAAE;UACjD6Q,eAAe,CAACvI,IAAI;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAM8I,mBAAkB,GAAIA,CAAA,KAAM;MAChCpH,MAAM,CAACE,IAAI,CAACrJ,mBAAmB,CAAC,CAAC8D,OAAO,CAAC0M,MAAK,IAAK;QACjD,MAAM9K,QAAO,GAAI1F,mBAAmB,CAACwQ,MAAM;QAC3C,IAAI9K,QAAO,IAAKzH,WAAW,CAACwD,KAAK,EAAE;UACjCxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAAC,CAAC2B,QAAQ,CAAChG,QAAQ,EAAEgG,QAAQ,CAAC0H,WAAW,EAAE1H,QAAQ,CAACyK,SAAS,CAAC;QACxF;MACF,CAAC;MACD;MACAhH,MAAM,CAACE,IAAI,CAACrJ,mBAAmB,CAAC,CAAC8D,OAAO,CAACwF,GAAE,IAAK,OAAOtJ,mBAAmB,CAACsJ,GAAG,CAAC;MAC/ElM,SAAS,CAACuH,IAAI,CAAC,WAAW;IAC5B;;IAEA;IACA,MAAM8L,mBAAkB,GAAKhJ,IAAI,IAAK;MACpC,IAAI,CAACxJ,WAAW,CAACwD,KAAI,IAAK,CAACgG,IAAI,CAACgE,WAAU,IAAKhE,IAAI,CAACgE,WAAW,CAACpE,MAAK,KAAM,CAAC,EAAE;MAE9E,IAAI;QACF,MAAMO,MAAK,GAAI,IAAIhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAC;QACtCX,IAAI,CAACgE,WAAW,CAAC3H,OAAO,CAAC6D,KAAI,IAAK;UAChCC,MAAM,CAAC+B,MAAM,CAAC,CAAChC,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;QACtC,CAAC;QACDpE,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3DxK,SAAS,CAACwG,OAAO,CAAC,YAAY6D,IAAI,CAAC9J,IAAI,EAAE;MAC3C,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMmQ,oBAAmB,GAAKjJ,IAAI,IAAK;MACrC;MACA0H,QAAQ,CAAC;;MAET;MACA3P,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGgG,IAAI,CAACgE,WAAW;MACvC9L,iBAAiB,CAAC8B,KAAI,GAAIgG,IAAI,CAACoD,SAAQ,IAAK,OAAM;MAClDjL,cAAc,CAAC6B,KAAI,GAAIgG,IAAI,CAACkJ,eAAc,IAAK,GAAE;MACjD9Q,WAAW,CAAC4B,KAAI,GAAIgG,IAAI,CAACmJ,YAAW,IAAK,EAAC;;MAE1C;MACA5S,WAAW,CAACyD,KAAI,GAAI,cAAa;;MAEjC;MACAoP,iBAAiB,CAAC;MAElBzT,SAAS,CAACwG,OAAO,CAAC,UAAU6D,IAAI,CAAC9J,IAAI,SAAS;IAChD;;IAEA;IACA,MAAMmT,0BAAyB,GAAKC,OAAO,IAAK;MAC9ChR,oBAAoB,CAAC0B,KAAI,GAAIsP,OAAM;IACrC;;IAEA;IACA,MAAMF,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAI,CAAC5S,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIlC,WAAW,CAACgC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChCpJ,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACtE,WAAW,CAACgC,KAAK;UAC1ChC,WAAW,CAACgC,KAAI,GAAI,EAAC;QACvB;QAEA,IAAI/B,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;UACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;QACtB;QAEA,IAAIjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;;QAEnC;QACA7H,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAEwC,KAAK,KAAK;UACzC;UACA,IAAI,CAACxC,KAAI,IAAK,OAAOA,KAAK,CAACvF,GAAE,KAAM,QAAO,IAAK,OAAOuF,KAAK,CAACtF,GAAE,KAAM,QAAO,IACvE2O,KAAK,CAACrJ,KAAK,CAACvF,GAAG,KAAK4O,KAAK,CAACrJ,KAAK,CAACtF,GAAG,CAAC,EAAE;YACxC7B,OAAO,CAACC,IAAI,CAAC,YAAY0J,KAAK,GAAG,EAAExC,KAAK;YACxC;UACF;UAEA,MAAMsJ,OAAM,GAAI9G,KAAI,KAAM;;UAE1B;UACA,MAAMrH,MAAK,GAAI,IAAIlB,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;YACpCC,QAAQ,EAAE,CAAC2E,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;YAChCY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;cACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC6N,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE,CAAC;cAChE5N,KAAK,EAAE,sBAAsB/C,kBAAkB,CAAC;iEACG2Q,OAAM,GAAI,EAAC,GAAI,EAAE,aAAaA,OAAM,GAAI,EAAC,GAAI,EAAE;yDACvDA,OAAM,GAAI,SAAQ,GAAI,SAAS;4GACoBA,OAAM,GAAI,GAAE,GAAI9G,KAAK;;eAElH,CAAC,EAAE;cACJ7G,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC6N,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE;YACtE,CAAC,CAAC;YACF1N,KAAK,EAAE,GAAG0N,OAAM,GAAI,IAAG,GAAI,MAAM9G,KAAK,EAAE,MAAMxC,KAAK,CAACvF,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKmE,KAAK,CAACtF,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,GAAG;YAC9F6J,MAAM,EAAE;UACV,CAAC;UAED5N,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;QAC/B,CAAC;;QAED;QACA7E,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACjE,WAAW,CAACgC,KAAK;;QAEvC;QACA,IAAI3B,QAAQ,CAAC2B,KAAI,IAAK3B,QAAQ,CAAC2B,KAAK,CAACgG,IAAI,EAAE;UACzC,IAAIsE,QAAO,GAAIjM,QAAQ,CAAC2B,KAAK,CAACgG,IAAG;;UAEjC;UACA,IAAI,OAAOsE,QAAO,KAAM,QAAQ,EAAE;YAChC,IAAI;cACFA,QAAO,GAAIvF,IAAI,CAAC0K,KAAK,CAACnF,QAAQ;YAChC,EAAE,OAAO5J,CAAC,EAAE;cACV3B,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE4B,CAAC;cAC5B4J,QAAO,GAAI,EAAC;YACd;UACF;UAEA,IAAIoF,KAAK,CAACC,OAAO,CAACrF,QAAQ,KAAKA,QAAQ,CAAC1E,MAAK,GAAI,CAAC,EAAE;YAClD;YACA,MAAM6F,UAAS,GAAInB,QAAQ,CAACvK,GAAG,CAACmG,KAAI,IAAK;cACvC,IAAI,OAAOA,KAAI,KAAM,QAAO,IAAKA,KAAK,CAACvF,GAAE,KAAMiP,SAAQ,IAAK1J,KAAK,CAACtF,GAAE,KAAMgP,SAAS,EAAE;gBACnF,MAAMjP,GAAE,GAAIkP,UAAU,CAAC3J,KAAK,CAACvF,GAAG;gBAChC,MAAMC,GAAE,GAAIiP,UAAU,CAAC3J,KAAK,CAACtF,GAAG;gBAChC,IAAI,CAAC2O,KAAK,CAAC5O,GAAG,KAAK,CAAC4O,KAAK,CAAC3O,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF,OAAO,IAAI8O,KAAK,CAACC,OAAO,CAACzJ,KAAK,KAAKA,KAAK,CAACN,MAAK,IAAK,CAAC,EAAE;gBACpD,MAAMjF,GAAE,GAAIkP,UAAU,CAAC3J,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAMtF,GAAE,GAAIiP,UAAU,CAAC3J,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAACqJ,KAAK,CAAC5O,GAAG,KAAK,CAAC4O,KAAK,CAAC3O,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF;cACA7B,OAAO,CAACC,IAAI,CAAC,WAAW,EAAEkH,KAAK;cAC/B,OAAO,IAAG;YACZ,CAAC,CAAC,CAACiB,MAAM,CAAC2I,KAAI,IAAKA,KAAI,KAAM,IAAI;YAEjC/Q,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEwL,UAAU,CAAC7F,MAAM;YAE1C,IAAI6F,UAAU,CAAC7F,MAAK,GAAI,CAAC,EAAE;cACzB,MAAMmK,WAAU,GAAI,IAAI5P,MAAM,CAACD,IAAI,CAACqI,QAAQ,CAAC;gBAC3CvC,IAAI,EAAEyF,UAAU;gBAChBrI,WAAW,EAAE,SAAS;gBACtBC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE,GAAG;gBAClBkF,WAAW,EAAE,OAAO;gBACpBgG,OAAO,EAAE;cACX,CAAC;cAEDvQ,QAAQ,CAAC+B,KAAI,GAAI+P,WAAU;cAC3BvT,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC8N,WAAW;YACnC;UACF;QACF;MAEF,EAAE,OAAOjR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;MACjC;IACF;;IAEA;IACA,MAAMkR,yBAAwB,GAAKC,WAAW,IAAK;MACjD,IAAI;QACF;QACAvC,QAAQ,CAAC;;QAET;QACA3P,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGiQ,WAAW,CAAClS,UAAU;;QAE7C;QACAG,iBAAiB,CAAC8B,KAAI,GAAIiQ,WAAW,CAAC7G,SAAQ;QAC9CjL,cAAc,CAAC6B,KAAI,GAAIiQ,WAAW,CAAC9R,cAAa;QAChDC,WAAW,CAAC4B,KAAI,GAAIiQ,WAAW,CAAC7R,WAAU;;QAE1C;QACAC,QAAQ,CAAC2B,KAAI,GAAIiQ,WAAW,CAAC5R,QAAO;;QAEpC;QACA+Q,iBAAiB,CAAC;;QAElB;QACA/K,UAAU,CAAC,MAAM;UACfgK,SAAS,CAAC;QACZ,CAAC,EAAE,GAAG;QAENtP,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEgQ,WAAW;MAEtC,EAAE,OAAOnR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;MAC5B;IACF;IAEAxD,SAAS,CAAC,MAAM;MACd;MACAyD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACL3D,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZE,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MACRC,oBAAoB;MAEpB2C,cAAc;MACdnB,WAAW;MACXW,UAAU;MACVU,aAAa;MACbiB,YAAY;MACZhB,aAAa;MACbmB,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBE,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACXgE,UAAU;MACVE,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdd,aAAa;MACbuB,qBAAqB;MACrBG,UAAU;MACVQ,WAAW;MACXM,QAAQ;MACRuE,WAAW;MACXI,QAAQ;MACRC,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXE,SAAS;MAET;MACAE,eAAe;MACfI,eAAe;MACfC,mBAAmB;MACnBE,mBAAmB;MACnBE,mBAAmB;MACnBC,oBAAoB;MACpBI,0BAA0B;MAC1BW,yBAAyB;MACzBZ,iBAAiB;MAEjB;MACAc,iBAAiB,EAAGvS,IAAI,IAAKsB,gBAAgB,CAACtB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnEiU,kBAAkB,EAAGvS,KAAK,IAAK4B,iBAAiB,CAAC5B,KAAK,CAAC,EAAE1B,IAAG,IAAK;IACnE;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/19776b8b1d2729de659e55581b1abb0dc42dc4b642459f8e954d1beb7c17b7a5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/19776b8b1d2729de659e55581b1abb0dc42dc4b642459f8e954d1beb7c17b7a5.json
new file mode 100644
index 00000000..b3bb3b91
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/19776b8b1d2729de659e55581b1abb0dc42dc4b642459f8e954d1beb7c17b7a5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 详细验证圆形数据\n console.log('圆形威胁区详细检查:');\n console.log(' center:', zone.geometry.center);\n console.log(' center类型:', typeof zone.geometry.center);\n console.log(' center是数组:', Array.isArray(zone.geometry.center));\n if (Array.isArray(zone.geometry.center)) {\n console.log(' center[0]:', zone.geometry.center[0], '类型:', typeof zone.geometry.center[0]);\n console.log(' center[1]:', zone.geometry.center[1], '类型:', typeof zone.geometry.center[1]);\n console.log(' center[0] isNaN:', isNaN(zone.geometry.center[0]));\n console.log(' center[1] isNaN:', isNaN(zone.geometry.center[1]));\n }\n console.log(' radius:', zone.geometry.radius, '类型:', typeof zone.geometry.radius);\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => isNaN(val))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1a0f4acc5ca22a1a518ea222ba6f373ba9ec4e59ab355607361e4edac4e0c457.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1a0f4acc5ca22a1a518ea222ba6f373ba9ec4e59ab355607361e4edac4e0c457.json
new file mode 100644
index 00000000..2fcc4894
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1a0f4acc5ca22a1a518ea222ba6f373ba9ec4e59ab355607361e4edac4e0c457.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1b6304ef82e960da1d2083100740f4781f8ca5d3322396a2bc3bbd0d580cbb93.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1b6304ef82e960da1d2083100740f4781f8ca5d3322396a2bc3bbd0d580cbb93.json
new file mode 100644
index 00000000..45ea2448
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1b6304ef82e960da1d2083100740f4781f8ca5d3322396a2bc3bbd0d580cbb93.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, onUnmounted, provide } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage } from 'element-plus';\nimport AMapLoader from '@amap/amap-jsapi-loader';\nexport default {\n name: 'SharedMap',\n props: {\n mode: {\n type: String,\n default: 'default',\n // 'default', 'threatZone', 'pathPlanning'\n validator: value => ['default', 'threatZone', 'pathPlanning'].includes(value)\n }\n },\n emits: ['map-loaded', 'map-click'],\n setup(props, {\n emit\n }) {\n const store = useStore();\n const mapInstance = ref(null);\n const mapLoaded = ref(false);\n const viewMode = ref('3D');\n const currentMapStyle = ref('normal');\n const overlayLayers = ref(['buildings']);\n const layerInstances = ref({});\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 从环境变量或后端获取地图API密钥\n const getApiKey = () => {\n // 在生产环境中,应该从后端获取API密钥,这里暂时使用硬编码的API密钥\n return '492dc9daf4eae7cab678c0f3efed8198';\n };\n const initMap = async () => {\n const container = document.getElementById('sharedMap');\n if (!container) {\n console.error('地图容器未找到');\n ElMessage.error('地图容器未找到');\n return;\n }\n try {\n console.log('开始加载高德地图...');\n\n // 使用AMapLoader加载高德地图API\n const AMap = await AMapLoader.load({\n key: getApiKey(),\n version: '2.0',\n plugins: ['AMap.Scale', 'AMap.ToolBar', 'AMap.ControlBar', 'AMap.InfoWindow', 'AMap.Marker', 'AMap.Polyline', 'AMap.Polygon', 'AMap.Circle', 'AMap.MouseTool', 'AMap.HawkEye', 'AMap.MapType', 'AMap.Geolocation', 'AMap.TileLayer', 'AMap.TileLayer.Satellite', 'AMap.TileLayer.Traffic', 'AMap.TileLayer.RoadNet', 'AMap.Buildings', 'AMap.DistrictLayer', 'AMap.Weather', 'AMap.Driving', 'AMap.PolyEditor']\n });\n console.log('高德地图 API 加载成功');\n\n // 创建地图实例\n mapInstance.value = new AMap.Map('sharedMap', {\n zoom: 18,\n center: [113.0434, 28.2592],\n // 精确定位到指定坐标\n viewMode: viewMode.value,\n pitch: viewMode.value === '3D' ? 45 : 0,\n rotation: 0,\n mapStyle: 'amap://styles/normal',\n features: ['bg', 'road', 'building', 'point'],\n resizeEnable: true,\n dragEnable: true,\n zoomEnable: true,\n doubleClickZoom: true,\n keyboardEnable: true,\n jogEnable: true,\n scrollWheel: true,\n touchZoom: true\n });\n console.log('地图实例创建成功');\n\n // 添加地图控件\n const toolbar = new AMap.ToolBar({\n position: {\n top: '10px',\n right: '10px'\n }\n });\n const scale = new AMap.Scale({\n position: {\n bottom: '10px',\n right: '10px'\n }\n });\n\n // 添加3D控制条,用于控制3D视图的旋转、倾斜等\n const controlBar = new AMap.ControlBar({\n position: {\n top: '80px',\n right: '10px'\n },\n showZoomBar: false,\n showControlButton: true\n });\n mapInstance.value.addControl(toolbar);\n mapInstance.value.addControl(scale);\n mapInstance.value.addControl(controlBar);\n\n // 添加地图事件监听\n mapInstance.value.on('click', e => {\n emit('map-click', e);\n });\n mapInstance.value.on('complete', () => {\n console.log('地图加载完成');\n mapLoaded.value = true;\n emit('map-loaded', mapInstance.value);\n try {\n // 初始化不同的图层实例,但不会立即添加到地图\n // 预初始化交通图层\n layerInstances.value.traffic = new window.AMap.TileLayer.Traffic({\n zIndex: 10,\n opacity: 0.8\n });\n\n // 预初始化卫星图层\n layerInstances.value.satellite = new window.AMap.TileLayer.Satellite({\n zIndex: 9\n });\n\n // 预初始化建筑图层\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 11,\n heightFactor: viewMode.value === '3D' ? 1 : 0.6\n });\n\n // 初始化图层显示\n updateOverlayLayers();\n\n // 初始化天气服务\n try {\n // 创建天气查询服务\n const weather = new window.AMap.Weather();\n layerInstances.value.weatherService = weather;\n\n // 查询默认城市天气作为示例\n weather.getLive('北京市', function (err, data) {\n if (!err) {\n console.log('天气服务初始化成功:', data);\n }\n });\n } catch (weatherError) {\n console.warn('天气服务初始化失败:', weatherError);\n }\n } catch (layerError) {\n console.error('图层初始化失败:', layerError);\n }\n console.log('地图初始化完成');\n });\n } catch (error) {\n console.error('地图加载失败:', error);\n ElMessage.error(`地图加载失败: ${error.message}`);\n }\n };\n\n // 添加主动获取无人机数据的方法\n\n // 修改地图样式切换功能\n const changeMapStyle = style => {\n if (!mapInstance.value) return;\n try {\n currentMapStyle.value = style;\n switch (style) {\n case 'satellite':\n // 使用卫星图层\n if (!layerInstances.value.satellite) {\n layerInstances.value.satellite = new window.AMap.TileLayer.Satellite({\n zIndex: 9\n });\n }\n\n // 添加卫星图层\n mapInstance.value.add(layerInstances.value.satellite);\n\n // 确保其他已启用的图层在卫星图层之上显示\n updateOverlayLayers();\n break;\n case 'dark':\n // 移除卫星图层\n if (layerInstances.value.satellite) {\n mapInstance.value.remove(layerInstances.value.satellite);\n }\n // 设置暗色地图\n mapInstance.value.setMapStyle('amap://styles/dark');\n\n // 确保其他已启用的图层在暗色地图上正确显示\n updateOverlayLayers();\n break;\n default:\n // 移除卫星图层\n if (layerInstances.value.satellite) {\n mapInstance.value.remove(layerInstances.value.satellite);\n }\n // 设置默认地图样式\n mapInstance.value.setMapStyle('amap://styles/normal');\n\n // 确保其他已启用的图层在标准地图上正确显示\n updateOverlayLayers();\n }\n console.log(`已切换到${style}地图样式`);\n } catch (error) {\n console.error('切换地图样式失败:', error);\n ElMessage.error(`切换地图样式失败: ${error.message}`);\n }\n };\n\n // 切换视图模式\n const changeViewMode = mode => {\n if (!mapInstance.value) return;\n try {\n // 设置视图模式 - 使用正确的API方法\n if (mode === '3D') {\n // 设置为3D视图\n mapInstance.value.setViewMode('3D');\n mapInstance.value.setPitch(45); // 设置俯仰角(3D效果)\n console.log('已切换到3D视图模式');\n } else {\n // 设置为2D视图\n mapInstance.value.setViewMode('2D');\n mapInstance.value.setPitch(0); // 平面视图\n console.log('已切换到2D视图模式');\n }\n\n // 重新加载建筑层以确保它在视图模式变化后正常显示\n if (overlayLayers.value.includes('buildings')) {\n if (layerInstances.value.buildings) {\n mapInstance.value.remove(layerInstances.value.buildings);\n }\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 10,\n // 在3D模式下加强建筑物外观\n heightFactor: mode === '3D' ? 1 : 0.6\n });\n mapInstance.value.add(layerInstances.value.buildings);\n }\n\n // 如果是卫星图,处理卫星图层\n if (currentMapStyle.value === 'satellite') {\n changeMapStyle('satellite');\n }\n } catch (error) {\n console.error('切换视图模式失败:', error);\n ElMessage.error(`切换到${mode}视图失败: ${error.message}`);\n }\n };\n\n // 更新图层\n const updateOverlayLayers = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n console.log('更新图层状态:', overlayLayers.value);\n\n // 交通流量图层\n if (overlayLayers.value.includes('traffic')) {\n if (!layerInstances.value.traffic) {\n layerInstances.value.traffic = new window.AMap.TileLayer.Traffic({\n zIndex: 10,\n opacity: 0.8\n });\n }\n mapInstance.value.add(layerInstances.value.traffic);\n console.log('已添加交通流量图层');\n } else if (layerInstances.value.traffic) {\n mapInstance.value.remove(layerInstances.value.traffic);\n console.log('已移除交通流量图层');\n }\n\n // 建筑物图层\n if (overlayLayers.value.includes('buildings')) {\n if (!layerInstances.value.buildings) {\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 11,\n heightFactor: viewMode.value === '3D' ? 1 : 0.6\n });\n }\n mapInstance.value.add(layerInstances.value.buildings);\n console.log('已添加建筑物图层');\n } else if (layerInstances.value.buildings) {\n mapInstance.value.remove(layerInstances.value.buildings);\n console.log('已移除建筑物图层');\n }\n\n // 地形图层\n if (overlayLayers.value.includes('terrain')) {\n if (!layerInstances.value.terrain) {\n // 等高线图层\n layerInstances.value.terrain = new window.AMap.TileLayer({\n zIndex: 8,\n getTileUrl: function (x, y, z) {\n return 'https://webst04.is.autonavi.com/appmaptile?style=6&x=' + x + '&y=' + y + '&z=' + z;\n }\n });\n }\n mapInstance.value.add(layerInstances.value.terrain);\n console.log('已添加地形图层');\n } else if (layerInstances.value.terrain) {\n mapInstance.value.remove(layerInstances.value.terrain);\n console.log('已移除地形图层');\n }\n\n // 天气图层\n if (overlayLayers.value.includes('weather')) {\n // 显示天气信息\n showWeatherInfo();\n } else {\n // 隐藏天气信息\n hideWeatherInfo();\n }\n\n // 威胁区域图层\n if (overlayLayers.value.includes('threats')) {\n // 威胁区域图层处理逻辑\n console.log('威胁区域图层暂未实现');\n }\n } catch (error) {\n console.error('更新图层失败:', error);\n ElMessage.error(`更新图层失败: ${error.message}`);\n }\n };\n\n // 显示天气信息\n const showWeatherInfo = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 如果已有天气信息标记,先清除\n if (layerInstances.value.weatherMarkers && layerInstances.value.weatherMarkers.length > 0) {\n layerInstances.value.weatherMarkers.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n }\n\n // 初始化天气标记数组\n layerInstances.value.weatherMarkers = [];\n\n // 创建天气查询服务(如果不存在)\n if (!layerInstances.value.weatherService) {\n layerInstances.value.weatherService = new window.AMap.Weather();\n }\n\n // 主要城市天气信息\n const cities = [{\n name: '北京',\n position: [116.397428, 39.90923]\n }, {\n name: '上海',\n position: [121.473667, 31.230525]\n }, {\n name: '广州',\n position: [113.264385, 23.129112]\n }, {\n name: '深圳',\n position: [114.057868, 22.543099]\n }, {\n name: '成都',\n position: [104.065735, 30.659462]\n }];\n\n // 查询每个城市的天气\n cities.forEach(city => {\n layerInstances.value.weatherService.getLive(city.name, (err, data) => {\n if (!err && data) {\n // 创建天气信息内容\n const weatherInfo = `\n
\n
${city.name}天气
\n
天气: ${data.weather}
\n
温度: ${data.temperature}°C
\n
风向: ${data.windDirection}
\n
风力: ${data.windPower}
\n
湿度: ${data.humidity}%
\n
\n `;\n\n // 创建天气图标\n const weatherIcon = getWeatherIcon(data.weather);\n\n // 创建标记\n const marker = new window.AMap.Marker({\n position: city.position,\n content: `${weatherIcon}
`,\n offset: new window.AMap.Pixel(-15, -15),\n zIndex: 120,\n title: `${city.name}天气: ${data.weather}, ${data.temperature}°C`\n });\n\n // 创建信息窗体\n const infoWindow = new window.AMap.InfoWindow({\n content: weatherInfo,\n offset: new window.AMap.Pixel(0, -30)\n });\n\n // 绑定点击事件\n marker.on('click', () => {\n infoWindow.open(mapInstance.value, city.position);\n });\n\n // 添加到地图\n mapInstance.value.add(marker);\n\n // 保存标记引用\n layerInstances.value.weatherMarkers.push(marker);\n }\n });\n });\n console.log('已添加天气信息图层');\n } catch (error) {\n console.error('天气图层添加失败:', error);\n }\n };\n\n // 隐藏天气信息\n const hideWeatherInfo = () => {\n if (!mapInstance.value) return;\n\n // 移除所有天气标记\n if (layerInstances.value.weatherMarkers && layerInstances.value.weatherMarkers.length > 0) {\n layerInstances.value.weatherMarkers.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n layerInstances.value.weatherMarkers = [];\n console.log('已移除天气信息图层');\n }\n };\n\n // 获取天气图标\n const getWeatherIcon = weather => {\n // 根据天气状况返回不同的图标\n const icons = {\n '晴': '',\n '多云': '',\n '阴': '',\n '雨': '',\n '雪': ''\n };\n\n // 匹配天气关键词\n for (const key in icons) {\n if (weather.includes(key)) {\n return icons[key];\n }\n }\n\n // 默认图标\n return '';\n };\n\n // 提供地图实例给子组件\n provide('mapInstance', mapInstance);\n\n // 处理窗口大小变化\n const resizeHandler = () => {\n if (mapInstance.value) {\n mapInstance.value.resize();\n }\n };\n onMounted(() => {\n initMap();\n window.addEventListener('resize', resizeHandler);\n });\n onUnmounted(() => {\n window.removeEventListener('resize', resizeHandler);\n if (mapInstance.value) {\n mapInstance.value.destroy();\n }\n });\n\n // 暴露给父组件的方法\n const getMap = () => mapInstance.value;\n return {\n mapInstance,\n mapLoaded,\n viewMode,\n currentMapStyle,\n overlayLayers,\n changeMapStyle,\n changeViewMode,\n updateOverlayLayers,\n getMap\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","onUnmounted","provide","useStore","ElMessage","AMapLoader","name","props","mode","type","String","default","validator","value","includes","emits","setup","emit","store","mapInstance","mapLoaded","viewMode","currentMapStyle","overlayLayers","layerInstances","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","getApiKey","initMap","container","document","getElementById","log","AMap","load","key","version","plugins","Map","zoom","center","pitch","rotation","mapStyle","features","resizeEnable","dragEnable","zoomEnable","doubleClickZoom","keyboardEnable","jogEnable","scrollWheel","touchZoom","toolbar","ToolBar","position","top","right","scale","Scale","bottom","controlBar","ControlBar","showZoomBar","showControlButton","addControl","on","e","traffic","window","TileLayer","Traffic","zIndex","opacity","satellite","Satellite","buildings","Buildings","heightFactor","updateOverlayLayers","weather","Weather","weatherService","getLive","err","data","weatherError","layerError","message","changeMapStyle","style","add","remove","setMapStyle","changeViewMode","setViewMode","setPitch","terrain","getTileUrl","x","y","z","showWeatherInfo","hideWeatherInfo","weatherMarkers","length","forEach","marker","cities","city","weatherInfo","temperature","windDirection","windPower","humidity","weatherIcon","getWeatherIcon","Marker","content","offset","Pixel","title","infoWindow","InfoWindow","open","push","icons","resizeHandler","resize","addEventListener","removeEventListener","destroy","getMap"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\SharedMap.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n
\r\n 地图加载中...\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
地图图层
\r\n \r\n 标准地图\r\n 卫星地图\r\n 暗色地图\r\n \r\n \r\n \r\n \r\n
显示模式
\r\n \r\n 2D视图\r\n 3D视图\r\n \r\n \r\n \r\n \r\n
图层叠加
\r\n \r\n 交通流量\r\n 3D建筑\r\n 地形等高线\r\n 天气信息\r\n 威胁区域\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1e09787b665d98602236461652a24e0f41a8b22b4e2af6e854caa8e8b8566109.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1e09787b665d98602236461652a24e0f41a8b22b4e2af6e854caa8e8b8566109.json
new file mode 100644
index 00000000..f20c80c3
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1e09787b665d98602236461652a24e0f41a8b22b4e2af6e854caa8e8b8566109.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1ead1e04e6236568001c50d38e74a8d7e885c001bb5f7a8722294910bdfe451c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1ead1e04e6236568001c50d38e74a8d7e885c001bb5f7a8722294910bdfe451c.json
new file mode 100644
index 00000000..be82e9a8
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1ead1e04e6236568001c50d38e74a8d7e885c001bb5f7a8722294910bdfe451c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1ff31087bc2243b7629df3510e9d3b7e13e7d86114fbae972dd60ebfcc05fb7c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1ff31087bc2243b7629df3510e9d3b7e13e7d86114fbae972dd60ebfcc05fb7c.json
new file mode 100644
index 00000000..9fc69fde
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1ff31087bc2243b7629df3510e9d3b7e13e7d86114fbae972dd60ebfcc05fb7c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_path_history_panel","_ctx","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/24f776425e8b96951ce608371e2223ddab2b770b584a474de45962c86daba12b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/24f776425e8b96951ce608371e2223ddab2b770b584a474de45962c86daba12b.json
new file mode 100644
index 00000000..8d10d8a5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/24f776425e8b96951ce608371e2223ddab2b770b584a474de45962c86daba12b.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2531c97ac3d0f80e1ce07ac41810b33875bacb2294bf9c824bf9e49762f04095.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2531c97ac3d0f80e1ce07ac41810b33875bacb2294bf9c824bf9e49762f04095.json
new file mode 100644
index 00000000..4fc9d474
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2531c97ac3d0f80e1ce07ac41810b33875bacb2294bf9c824bf9e49762f04095.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","_ctx","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/25569bf521b5d36066b2e1d513edf0d16ff990597d5edcd68b332dbc5543d8d0.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/25569bf521b5d36066b2e1d513edf0d16ff990597d5edcd68b332dbc5543d8d0.json
new file mode 100644
index 00000000..8131c330
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/25569bf521b5d36066b2e1d513edf0d16ff990597d5edcd68b332dbc5543d8d0.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/26648fff876464050155d18b9889954f6e3b1281430c139f496292a65bd180e7.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/26648fff876464050155d18b9889954f6e3b1281430c139f496292a65bd180e7.json
new file mode 100644
index 00000000..c989fbe8
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/26648fff876464050155d18b9889954f6e3b1281430c139f496292a65bd180e7.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAkB;;EAEtBA,KAAK,EAAC;AAAY;;EAEhBA,KAAK,EAAC;AAAgB;;EAIhBA,KAAK,EAAC;AAAwB;;EAY9BA,KAAK,EAAC;AAAwB;;EA8B9BA,KAAK,EAAC;AAAwB;;EA0B9BA,KAAK,EAAC;AAAwB;;EAkBtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;;uBAhH/BC,mBAAA,CA+JM,OA/JNC,UA+JM,GA9JJC,mBAAA,YAAe,EACfC,mBAAA,CAyFM,OAzFNC,UAyFM,GAxFJF,mBAAA,eAAkB,EAClBC,mBAAA,CAsFM,OAtFNE,UAsFM,GArFJC,YAAA,CAoFUC,kBAAA;gBApFQC,MAAA,CAAAC,WAAW;+DAAXD,MAAA,CAAAC,WAAW,GAAAC,MAAA;IAAGC,UAAS,EAAEH,MAAA,CAAAI,cAAc;IAAE,cAAY,EAAC;;sBACtE,MAAe,CAAfV,mBAAA,YAAe,EACfI,YAAA,CAScO,sBAAA;MATDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAOM,CAPNZ,mBAAA,CAOM,OAPNa,UAOM,GANJV,YAAA,CAKEW,0BAAA;QAJCC,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BC,cAAa,EAAEZ,MAAA,CAAAa,YAAY;QAC3B,UAAQ,EAAEb,MAAA,CAAAc,OAAO;QACjB,eAAa,EAAEd,MAAA,CAAAe;;;QAKtBrB,mBAAA,aAAgB,EAChBI,YAAA,CA2BcO,sBAAA;MA3BDC,KAAK,EAAC,OAAO;MAACC,IAAI,EAAC;;wBAC9B,MAyBM,CAzBNZ,mBAAA,CAyBM,OAzBNqB,UAyBM,GAxBJlB,YAAA,CAuBEmB,4BAAA;QAtBC,cAAY,EAAEjB,MAAA,CAAAkB,WAAW;QACzB,kBAAgB,EAAElB,MAAA,CAAAmB,cAAc;QAChC,qBAAmB,EAAEnB,MAAA,CAAAoB,iBAAiB;QACtC,WAAS,EAAEpB,MAAA,CAAAqB,QAAQ;QACnB,cAAY,EAAErB,MAAA,CAAAsB,WAAW;QACzB,eAAa,EAAEtB,MAAA,CAAAuB,YAAY;QAC3B,oBAAkB,EAAEvB,MAAA,CAAAwB,iBAAiB;QACrC,mBAAiB,EAAExB,MAAA,CAAAyB,eAAe;QAClC,gBAAc,EAAEzB,MAAA,CAAA0B,aAAa;QAC7BC,oBAAqB,EAAE3B,MAAA,CAAA4B,sBAAsB;QAC7CC,qBAAsB,EAAE7B,MAAA,CAAA8B,uBAAuB;QAC/CC,aAAa,EAAE/B,MAAA,CAAAgC,WAAW;QAC1BC,YAAW,EAAEjC,MAAA,CAAAkC,UAAU;QACvBC,YAAW,EAAEnC,MAAA,CAAAoC,UAAU;QACvBC,UAAS,EAAErC,MAAA,CAAAsC,QAAQ;QACnBC,eAAe,EAAEvC,MAAA,CAAAwC,aAAa;QAC9BC,uBAAuB,EAAEzC,MAAA,CAAA0C,qBAAqB;QAC9CC,oBAAoB,EAAE3C,MAAA,CAAA4C,kBAAkB;QACxCC,yBAAyB,EAAE7C,MAAA,CAAA8C,uBAAuB;QAClDC,uBAAwB,EAAE/C,MAAA,CAAAgD,qBAAqB;QAC/CC,gBAAgB,EAAEjD,MAAA,CAAAkD,cAAc;QAChCC,YAAY,EAAEnD,MAAA,CAAAoD;;;QAKrB1D,mBAAA,YAAe,EACfI,YAAA,CAuBcO,sBAAA;MAvBDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAqBM,CArBNZ,mBAAA,CAqBM,OArBN0D,UAqBM,GApBJvD,YAAA,CAmBEwD,8BAAA;QAlBC,aAAW,EAAEtD,MAAA,CAAAuD,UAAU;QACvB,UAAQ,EAAEvD,MAAA,CAAAc,OAAO;QACjB,oBAAkB,EAAEd,MAAA,CAAAwD,iBAAiB;QACrC,iBAAe,EAAExD,MAAA,CAAAyD,cAAc;QAC/B,cAAY,EAAEzD,MAAA,CAAA0D,WAAW;QACzB,WAAS,EAAE1D,MAAA,CAAA2D,QAAQ;QACnBjD,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BiD,UAAS,EAAE5D,MAAA,CAAA6D,QAAQ;QACnBC,UAAS,EAAE9D,MAAA,CAAA+D,QAAQ;QACnBC,aAAY,EAAEhE,MAAA,CAAAiE,WAAW;QACzBC,aAAY,EAAElE,MAAA,CAAAmE,WAAW;QACzBC,eAAe,EAAEpE,MAAA,CAAAqE,aAAa;QAC9BC,aAAa,EAAEtE,MAAA,CAAAuE,WAAW;QAC1BC,WAAW,EAAExE,MAAA,CAAAyE,SAAS;QACtBC,yBAAyB,EAAE1E,MAAA,CAAA2E,uBAAuB;QAClDC,sBAAsB,EAAE5E,MAAA,CAAA6E,oBAAoB;QAC5CC,mBAAmB,EAAE9E,MAAA,CAAA+E,iBAAiB;QACtCC,iBAAiB,EAAEhF,MAAA,CAAAiF;;;QAK1BvF,mBAAA,YAAe,EACfI,YAAA,CAacO,sBAAA;MAbDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAWM,CAXNZ,mBAAA,CAWM,OAXNuF,UAWM,GAVJpF,YAAA,CASEqF,6BAAA;QARC,gBAAc,EAAEnF,MAAA,CAAAoF,oBAAoB;QACpCC,UAAS,EAAErF,MAAA,CAAAsF,eAAe;QAC1BC,UAAS,EAAEvF,MAAA,CAAAwF,eAAe;QAC1BC,cAAc,EAAEzF,MAAA,CAAA0F,mBAAmB;QACnCC,cAAc,EAAE3F,MAAA,CAAA4F,mBAAmB;QACnCC,cAAc,EAAE7F,MAAA,CAAA8F,mBAAmB;QACnCC,eAAc,EAAE/F,MAAA,CAAAgG,oBAAoB;QACpCC,qBAAqB,EAAEjG,MAAA,CAAAkG;;;;;uDAQpCxG,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNwG,UA0BM,GAzBJrG,YAAA,CAKEsG,oBAAA;IAJCC,IAAI,EAAErG,MAAA,CAAAC,WAAW;IACjBqG,WAAU,EAAEtG,MAAA,CAAAsG,WAAW;IACvBC,UAAS,EAAEvG,MAAA,CAAAuG,UAAU;IACtBC,GAAG,EAAC;kEAGN9G,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANNiH,UAMM,GALJ3G,YAAA,CAIE4G,mBAAA;IAHCC,KAAK,EAAE3G,MAAA,CAAA4G,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJnH,mBAAA,YAAe,EACJM,MAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNsH,WAOM,GANJhH,YAAA,CAKE4G,mBAAA;IAJCC,KAAK,EAAE3G,MAAA,CAAA+G,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBtH,mBAAA,cAAiB,EACjBI,YAAA,CAmCYmH,oBAAA;gBAlCDjH,MAAA,CAAAkH,iBAAiB;+DAAjBlH,MAAA,CAAAkH,iBAAiB,GAAAhH,MAAA;IAC1ByG,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DvH,YAAA,CAA4DwH,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAtH,MAAA,IAAEF,MAAA,CAAAkH,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChD1H,YAAA,CAAgEwH,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEvH,MAAA,CAAAkD;;wBAAgB,MAAEsE,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBV1H,YAAA,CAyBU2H,kBAAA;MAzBAC,KAAK,EAAE1H,MAAA,CAAA2H,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf9H,YAAA,CAQe+H,uBAAA;QARDvH,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMYgI,oBAAA;sBANQ9H,MAAA,CAAA2H,QAAQ,CAACd,IAAI;qEAAb7G,MAAA,CAAA2H,QAAQ,CAACd,IAAI,GAAA3G,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxCjI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAAyCkI,oBAAA;YAA9B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAOe+H,uBAAA;QAPDvH,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKYgI,oBAAA;sBALQ9H,MAAA,CAAA2H,QAAQ,CAACO,KAAK;qEAAdlI,MAAA,CAAA2H,QAAQ,CAACO,KAAK,GAAAhI,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArCjI,YAAA,CAAqCkI,oBAAA;YAA1B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAsCkI,oBAAA;YAA3B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAMe+H,uBAAA;QANDvH,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEqI,mBAAA;sBAHSnI,MAAA,CAAA2H,QAAQ,CAACS,WAAW;qEAApBpI,MAAA,CAAA2H,QAAQ,CAACS,WAAW,GAAAlI,MAAA;UAC7B2G,IAAI,EAAC,UAAU;UACdwB,IAAI,EAAE","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/287344b2edab67abc08c5d5aee44f3ac3d5b7fe58cf1aaae2de495aafb2320a6.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/287344b2edab67abc08c5d5aee44f3ac3d5b7fe58cf1aaae2de495aafb2320a6.json
new file mode 100644
index 00000000..75041c49
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/287344b2edab67abc08c5d5aee44f3ac3d5b7fe58cf1aaae2de495aafb2320a6.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning') {\n // 路径规划 - 直接添加路径点,无需检查addMode\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 额外处理:动态管理事件监听器\n if (!isClickable && overlay.off && overlay._threatZoneClickHandler) {\n // 移除点击事件监听器\n overlay.off('click', overlay._threatZoneClickHandler);\n } else if (isClickable && overlay.on && overlay._threatZoneClickHandler) {\n // 重新绑定点击事件监听器(先移除再添加,避免重复绑定)\n overlay.off('click', overlay._threatZoneClickHandler);\n overlay.on('click', overlay._threatZoneClickHandler);\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n };\n\n // 保存事件处理函数的引用,以便后续移除\n overlay._threatZoneClickHandler = handleZoneClick;\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","off","_threatZoneClickHandler","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAoKA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAI,QAAS,KAAI;AAC5D,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAS,EAAEC,YAAW,QAAS,cAAa;AACrD,OAAOC,SAAQ,MAAO,6BAA4B;AAClD,OAAOC,aAAY,MAAO,4CAA2C;AACrE,OAAOC,eAAc,MAAO,8CAA6C;AACzE,OAAOC,iBAAgB,MAAO,gDAA+C;AAC7E,OAAOC,gBAAe,MAAO,+CAA8C;AAE3E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVN,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIX,QAAQ,CAAC;IACvB,MAAMY,YAAW,GAAIjB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMmB,WAAU,GAAInB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMoB,OAAM,GAAIpB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMqB,YAAW,GAAIrB,GAAG,CAAC,EAAE;IAC3B,MAAMsB,aAAY,GAAItB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMuB,WAAU,GAAIvB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMwB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIzB,GAAG,CAAC,IAAI;IACzB,MAAM0B,iBAAgB,GAAI1B,GAAG,CAAC,OAAO;IACrC,MAAM2B,WAAU,GAAI3B,GAAG,CAAC,QAAQ;IAChC,MAAM4B,YAAW,GAAI5B,GAAG,CAAC,IAAI;IAC7B,MAAM6B,iBAAgB,GAAI7B,GAAG,CAAC,EAAE;IAChC,MAAM8B,eAAc,GAAI9B,GAAG,CAAC,CAAC,IAAI+B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIjC,GAAG,CAAC,IAAI;IAC/B,MAAMkC,aAAY,GAAIlC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMmC,iBAAgB,GAAInC,GAAG,CAAC,KAAK;IACnC,MAAMoC,QAAO,GAAIpC,GAAG,CAAC;MACnBqC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAI1C,GAAG,CAAC,EAAE;IACzB,MAAM2C,WAAU,GAAI3C,GAAG,CAAC,EAAE;IAC1B,MAAM4C,QAAO,GAAI5C,GAAG,CAAC,IAAI;IACzB,MAAM6C,iBAAgB,GAAI7C,GAAG,CAAC,OAAO;IACrC,MAAM8C,cAAa,GAAI9C,GAAG,CAAC,GAAG;IAC9B,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMiD,oBAAmB,GAAIjD,GAAG,CAAC,EAAE;IACnC,MAAMkD,mBAAkB,GAAI,CAAC,GAAG;;IAEhC;IACA,MAAMC,SAAQ,GAAInD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMoD,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,gBAAe,GAAI;MACvBC,KAAK,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAEpD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAErD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEzD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAE1D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAE3D,IAAI,EAAE,MAAM;QAAEwD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BvD,WAAW,CAACwD,KAAI,GAAID,GAAE;MACtBhB,OAAO,CAACkB,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACF1B,SAAS,CAACwB,KAAI,GAAI,IAAIE,IAAI,CAACE,SAAS,CAACL,GAAG;UACxCvB,SAAS,CAACwB,KAAK,CAACK,EAAE,CAAC,MAAM,EAAEC,cAAc;UACzCvB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;QAC9B,EAAE,OAAOnB,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK;QACxC;MACF;;MAEA;MACAyB,WAAW,CAAC;IACd;;IAEA;IACA,MAAMA,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACFxB,OAAO,CAACkB,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMO,eAAe,CAAC;QAEtBzB,OAAO,CAACkB,GAAG,CAAC,UAAU;MAExB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM2B,UAAS,GAAKC,CAAC,IAAK;MACxB,MAAM;QAAEC,GAAG;QAAEC;MAAI,IAAIF,CAAC,CAACG,MAAK;MAC5B9B,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;QAAEU,GAAG;QAAEC,GAAG;QAAErE,WAAW,EAAEA,WAAW,CAACyD,KAAK;QAAEvD,OAAO,EAAEA,OAAO,CAACuD;MAAM,CAAC;MAE3F,IAAIzD,WAAW,CAACyD,KAAI,KAAM,UAAS,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAIrE,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQzE,WAAW,CAACyD,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAQ,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA;MACJ;IACF;;IAEA;IACA,MAAMS,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACAxE,OAAO,CAACuD,KAAI,GAAI,KAAI;MACpBlD,QAAQ,CAACkD,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAC,4BAA4B,CAAC;;MAE7B;MACAH,uBAAuB,CAAC;IAC1B;;IAEA;IACA,MAAMG,4BAA2B,GAAIA,CAAA,KAAM;MACzC,MAAMC,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;MAErDqB,MAAM,CAACC,MAAM,CAACzE,YAAY,CAAC,CAAC0E,OAAO,CAACC,OAAM,IAAK;QAC7C,IAAIA,OAAM,IAAKA,OAAO,CAACC,UAAU,EAAE;UACjC,IAAI;YACFD,OAAO,CAACC,UAAU,CAAC;cACjBC,SAAS,EAAEN,WAAW;cACtBO,MAAM,EAAEP,WAAU,GAAI,SAAQ,GAAI,SAAS;cAC3CQ,MAAM,EAAER,WAAU,GAAI,GAAE,GAAI;YAC9B,CAAC;;YAED;YACA,IAAI,CAACA,WAAU,IAAKI,OAAO,CAACK,GAAE,IAAKL,OAAO,CAACM,uBAAuB,EAAE;cAClE;cACAN,OAAO,CAACK,GAAG,CAAC,OAAO,EAAEL,OAAO,CAACM,uBAAuB;YACtD,OAAO,IAAIV,WAAU,IAAKI,OAAO,CAACnB,EAAC,IAAKmB,OAAO,CAACM,uBAAuB,EAAE;cACvE;cACAN,OAAO,CAACK,GAAG,CAAC,OAAO,EAAEL,OAAO,CAACM,uBAAuB;cACpDN,OAAO,CAACnB,EAAE,CAAC,OAAO,EAAEmB,OAAO,CAACM,uBAAuB;YACrD;UACF,EAAE,OAAOhD,KAAK,EAAE;YACdC,OAAO,CAACC,IAAI,CAAC,cAAc,EAAEF,KAAK;UACpC;QACF;MACF,CAAC;MAEDC,OAAO,CAACkB,GAAG,CAAC,iBAAiBmB,WAAW,EAAE;IAC5C;;IAEA;;IAEA;IACA,MAAMW,aAAY,GAAIA,CAAA,KAAM;MAC1BtF,OAAO,CAACuD,KAAI,GAAI,CAACvD,OAAO,CAACuD,KAAI;MAC7B;MACA,IAAIzD,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;QACtClD,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;UACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;;IAIA;IACA,MAAMc,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIzF,WAAW,CAACyD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIzD,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C,OAAO,WAAU;MACnB;MACA,OAAO,EAAC;IACV;;IAEA;;IAEA;IACA,MAAMc,cAAa,GAAIA,CAACH,GAAG,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACpE,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAM+B,MAAK,GAAI,IAAI/B,IAAI,CAACgC,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACxB,GAAG,EAAEC,GAAG,CAAC;QACpBwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFgE,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,WAAW/B,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK/B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAV,MAAM,CAAC5B,EAAE,CAAC,OAAO,EAAE,MAAM;QACvB1E,SAAS,CAAC;UACRiH,OAAO,EAAE,UAAUjC,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK/B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDhF,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACZ,MAAM;MAC5BtF,aAAa,CAACqD,KAAK,CAAC8C,IAAI,CAACb,MAAM;MAC/BvF,YAAY,CAACsD,KAAK,CAAC8C,IAAI,CAAC;QAAEnC,GAAG;QAAEC;MAAI,CAAC;MAEpCjF,SAAS,CAACoH,OAAO,CAAC,WAAWpC,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK/B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMK,YAAW,GAAIA,CAAA,KAAM;MACzBrG,aAAa,CAACqD,KAAK,CAACuB,OAAO,CAACU,MAAK,IAAK;QACpCzF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChB,MAAM;MACjC,CAAC;MACDtF,aAAa,CAACqD,KAAI,GAAI,EAAC;MACvBtD,YAAY,CAACsD,KAAI,GAAI,EAAC;MACtBrE,SAAS,CAACoH,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMG,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIpG,QAAQ,CAACkD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMmD,sBAAqB,GAAKxF,IAAI,IAAK;MACvCZ,iBAAiB,CAACiD,KAAI,GAAIrC,IAAG;IAC/B;;IAEA;IACA,MAAMyF,uBAAsB,GAAKxF,KAAK,IAAK;MACzCZ,WAAW,CAACgD,KAAI,GAAIpC,KAAI;IAC1B;;IAEA;IACA,MAAMyF,kBAAiB,GAAKC,MAAM,IAAK;MACrCrG,YAAY,CAAC+C,KAAI,GAAIsD,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxCtG,iBAAiB,CAAC8C,KAAI,GAAIwD,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvCvG,eAAe,CAAC6C,KAAI,GAAI0D,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACpF,SAAS,CAACwB,KAAK,EAAE;QACpBrE,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIhC,QAAQ,CAACkD,KAAI,KAAM4D,IAAI,EAAE;QAC3B;QACA9G,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAI;UACFxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOpC,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAnD,SAAS,CAACkI,IAAI,CAAC,SAAS;QACxB;MACF;MAEA/G,QAAQ,CAACkD,KAAI,GAAI4D,IAAG;MACpBnH,OAAO,CAACuD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAM8D,OAAM,GAAI;QACdC,WAAW,EAAE9E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC5D6E,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEjF,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC1DgF,WAAW,EAAE3E,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;MACpD;MAEA,IAAI;QACFX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE2D,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACXpF,SAAS,CAACwB,KAAK,CAACoE,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZtF,SAAS,CAACwB,KAAK,CAACqE,OAAO,CAACP,OAAO;YAC/B;UACF,KAAK,WAAW;YACdtF,SAAS,CAACwB,KAAK,CAACsE,SAAS,CAACR,OAAO;YACjC;QACJ;QAEAnI,SAAS,CAACkI,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOpE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1BhC,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOiE,KAAK,IAAK;MACtC;MACA,MAAM/C,OAAM,GAAI/F,KAAK,CAAC8I,KAAK,CAACC,GAAG;MAE/BzF,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuB,OAAO;MACjCzC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAEuB,OAAO,CAACiD,SAAQ,IAAKjD,OAAO,CAACkD,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAInI,WAAW,CAACwD,KAAK,CAAC4E,cAAc,CAAC,SAAS;QAC3D7F,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAE0E,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBd,WAAW,EAAE9E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC5D6E,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEjF,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC1DgF,WAAW,EAAE3E,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE4E,YAAY;QACnCrD,OAAO,CAACC,UAAU,CAACoD,YAAY;;QAE/B;QACAC,UAAU,CAAC,MAAM;UACftI,WAAW,CAACwD,KAAK,CAAC+E,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAENhG,OAAO,CAACkB,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMhB,QAAO,GAAIkH,sBAAsB,CAACxD,OAAO;;MAE/C;MACA,IAAI,CAACzE,iBAAiB,CAACiD,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE/B,iBAAiB,CAACiD,KAAK;QAChDrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC9B,WAAW,CAACgD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE9B,WAAW,CAACgD,KAAK;QAC1CrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChB,QAAQ,EAAE;QACbiB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBnD,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAMmG,QAAO,GAAI;QACftH,IAAI,EAAEZ,iBAAiB,CAACiD,KAAK;QAC7BpC,KAAK,EAAEZ,WAAW,CAACgD,KAAK;QACxBnC,WAAW,EAAEX,iBAAiB,CAAC8C,KAAI,IAAK,EAAE;QAC1CkF,SAAS,EAAE,CAAC,GAAG/H,eAAe,CAAC6C,KAAK,CAAC;QAAE;QACvClC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFiB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEgF,QAAQ;QAClClG,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAElD,iBAAiB,CAACiD,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEjD,WAAW,CAACgD,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE/C,iBAAiB,CAAC8C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEnC,QAAQ;;QAE7B;QACA,MAAMqH,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;UAChDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,QAAQ;QAC/B,CAAC;QAEDlG,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEkF,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE5D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC/G,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE+G,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnClH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,MAAM;QAE9B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAMmD,IAAG,GAAIF,MAAM,CAACG,IAAG;;UAEvB;UACA3J,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;;UAEhC;UACA4E,qBAAqB,CAACF,IAAI;UAE1BvK,SAAS,CAACoH,OAAO,CAAC,MAAM9D,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAAC9D,IAAI,IAAI;UAC1E6C,OAAO,CAACkB,GAAG,CAAC,kBAAkB,EAAEiG,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;;QAE3C;QACApG,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;MAClC;;MAEA;MACA1E,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAnC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErD,WAAW,CAACoD,KAAK,CAACqG,MAAM;IAClD;IAEA,MAAMrB,sBAAqB,GAAKxD,OAAO,IAAK;MAC1CzC,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuB,OAAO,CAACkD,UAAS,IAAKlD,OAAO,CAACiD,SAAS;MAEjE,IAAI;QACF,IAAIjD,OAAO,CAACkD,UAAS,KAAM,aAAY,IAAKlD,OAAO,CAACiD,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM6B,MAAK,GAAI9E,OAAO,CAAC+E,SAAS,CAAC;UACjC,MAAMjD,MAAK,GAAI9B,OAAO,CAACgF,SAAS,CAAC;UACjCzH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;YAAEqG,MAAM;YAAEhD;UAAO,CAAC;UACzC,OAAO;YACL3F,IAAI,EAAE,QAAQ;YACd2I,MAAM,EAAE,CAACA,MAAM,CAAC3F,GAAG,EAAE2F,MAAM,CAAC1F,GAAG,CAAC;YAChC0C,MAAM,EAAEA;UACV;QACF,OAAO,IAAI9B,OAAO,CAACkD,UAAS,KAAM,cAAa,IAAKlD,OAAO,CAACiD,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAMgC,IAAG,GAAIjF,OAAO,CAACkF,OAAO,CAAC;UAC7B3H,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwG,IAAI;UAC5B,OAAO;YACL9I,IAAI,EAAE,SAAS;YACf8I,IAAI,EAAEA,IAAI,CAAC1G,GAAG,CAAC4G,KAAI,IAAK,CAACA,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;UAChD;QACF,OAAO,IAAIY,OAAO,CAACkD,UAAS,KAAM,gBAAe,IAAKlD,OAAO,CAACiD,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMmC,MAAK,GAAIpF,OAAO,CAACqF,SAAS,CAAC;UACjC9H,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE2G,MAAM;UAC7B,OAAO;YACLjJ,IAAI,EAAE,WAAW;YACjBiJ,MAAM,EAAE,CAACA,MAAM,CAACE,YAAY,CAAC,CAAC,CAACnG,GAAG,EAAEiG,MAAM,CAACE,YAAY,CAAC,CAAC,CAAClG,GAAG,EACrDgG,MAAM,CAACG,YAAY,CAAC,CAAC,CAACpG,GAAG,EAAEiG,MAAM,CAACG,YAAY,CAAC,CAAC,CAACnG,GAAG;UAC9D;QACF;MACF,EAAE,OAAO9B,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE0C,OAAO,CAACkD,UAAS,IAAKlD,OAAO,CAACiD,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAMjE,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFzB,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,0BAA0B;QAEtC,MAAMkF,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChDrG,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEkF,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE9D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC/G,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE+G,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnClH,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE+F,MAAM;QAEhC,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClBhE,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAE+F,MAAM,CAACG,IAAI;;UAEtC;UACAa,aAAa,CAAC,IAAI;;UAElB;UACAhB,MAAM,CAACG,IAAI,CAAC5E,OAAO,CAAC2E,IAAG,IAAK;YAC1BE,qBAAqB,CAACF,IAAI;UAC5B,CAAC;UAEDnH,OAAO,CAACkB,GAAG,CAAC,QAAQ+F,MAAM,CAACG,IAAI,CAACE,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAIN,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMwD,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAAC1J,WAAW,CAACwD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;;MAEA;MACA,IAAI,CAACoH,IAAG,IAAK,CAACA,IAAI,CAACpI,QAAQ,EAAE;QAC3BiB,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoH,IAAI;QAC9B;MACF;MAEA,IAAI;QACFnH,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEiG,IAAI;QAE/B,MAAMhG,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAIsB,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAMJ,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;QACrD,MAAM6E,YAAW,GAAI;UACnBd,WAAW,EAAE9E,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC5D6E,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEjF,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC1DgF,WAAW,EAAE3E,iBAAiB,CAAC0G,IAAI,CAACtI,KAAK,CAAC,EAAE8B,OAAM,IAAK,GAAG;UAC1D;UACAgC,SAAS,EAAEN,WAAW;UACtB;UACAO,MAAM,EAAEP,WAAU,GAAI,SAAQ,GAAI,SAAS;UAC3C;UACAQ,MAAM,EAAER,WAAU,GAAI,GAAE,GAAI;QAC9B;QAEArC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE4E,YAAY;QACpC9F,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEiG,IAAI,CAACpI,QAAQ;;QAErC;QACA,IAAIoI,IAAI,CAACpI,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnC;UACA,IAAI,CAACuI,IAAI,CAACpI,QAAQ,CAACwI,MAAK,IAAK,CAACW,KAAK,CAACC,OAAO,CAAChB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,KAC5DJ,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAACD,MAAK,KAAM,KAChCH,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,KAAK,IAAG,IAAKJ,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,KAAK,IAAG,IACjEa,KAAK,CAACC,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAKa,KAAK,CAACC,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC,CAAC,KAC/E,CAACJ,IAAI,CAACpI,QAAQ,CAACwF,MAAK,IAAK4C,IAAI,CAACpI,QAAQ,CAACwF,MAAK,IAAK,CAAC,EAAE;YACtDvE,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoH,IAAI,CAACpI,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAM6C,GAAE,GAAIyG,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAM1F,GAAE,GAAIwG,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwI,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAMhD,MAAK,GAAI8D,MAAM,CAAClB,IAAI,CAACpI,QAAQ,CAACwF,MAAM;UAE1CvE,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE,CAACU,GAAG,EAAEC,GAAG,CAAC,EAAE0C,MAAM;UAC1C9B,OAAM,GAAI,IAAItB,IAAI,CAACmH,MAAM,CAAC;YACxBf,MAAM,EAAE,IAAIpG,IAAI,CAACoH,MAAM,CAAC3G,GAAG,EAAEC,GAAG,CAAC;YACjC0C,MAAM,EAAEA,MAAM;YACd,GAAGuB;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAACpI,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3C;UACA,IAAI,CAACuI,IAAI,CAACpI,QAAQ,CAAC2I,IAAG,IAAK,CAACQ,KAAK,CAACC,OAAO,CAAChB,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,KACxDP,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,CAACJ,MAAK,GAAI,CAAC,EAAE;YACjCtH,OAAO,CAACD,KAAK,CAAC,eAAe,EAAEoH,IAAI,CAACpI,QAAQ;YAC5C;UACF;;UAEA;UACA,MAAMyJ,SAAQ,GAAIrB,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,CAACe,KAAK,CAACb,KAAI,IAC7CM,KAAK,CAACC,OAAO,CAACP,KAAK,KAAKA,KAAK,CAACN,MAAK,KAAM,KACzCM,KAAK,CAAC,CAAC,KAAK,IAAG,IAAKA,KAAK,CAAC,CAAC,KAAK,IAAG,IACnC,CAACQ,KAAK,CAACC,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAACQ,KAAK,CAACC,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,CACrD;UAEA,IAAI,CAACY,SAAS,EAAE;YACdxI,OAAO,CAACD,KAAK,CAAC,kBAAkB,EAAEoH,IAAI,CAACpI,QAAQ,CAAC2I,IAAI;YACpD;UACF;UAEA1H,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEiG,IAAI,CAACpI,QAAQ,CAAC2I,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAACpI,QAAQ,CAAC2I,IAAI,CAAC1G,GAAG,CAAC4G,KAAI,IAAK,IAAIzG,IAAI,CAACoH,MAAM,CAACF,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,EAAES,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;UAChGnF,OAAM,GAAI,IAAItB,IAAI,CAACuH,OAAO,CAAC;YACzBhB,IAAI,EAAEA,IAAI;YACV,GAAG5B;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAACpI,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7C;UACA,IAAI,CAACuI,IAAI,CAACpI,QAAQ,CAAC8I,MAAK,IAAK,CAACK,KAAK,CAACC,OAAO,CAAChB,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,KAC5DV,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,CAACP,MAAK,KAAM,KAChCH,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,CAACc,IAAI,CAACC,GAAE,IAAKA,GAAE,IAAK,IAAG,IAAKR,KAAK,CAACC,MAAM,CAACO,GAAG,CAAC,CAAC,CAAC,EAAE;YACvE5I,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoH,IAAI,CAACpI,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAM8J,aAAY,GAAI1B,IAAI,CAACpI,QAAQ,CAAC8I,MAAM,CAAC7G,GAAG,CAAC4H,GAAE,IAAKP,MAAM,CAACO,GAAG,CAAC;UAEjE5I,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE2H,aAAa;UACrC,MAAMhB,MAAK,GAAI,IAAI1G,IAAI,CAAC2H,MAAM,CAC5B,IAAI3H,IAAI,CAACoH,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CAAC,EACnD,IAAI1H,IAAI,CAACoH,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CACpD;UACApG,OAAM,GAAI,IAAItB,IAAI,CAAC4H,SAAS,CAAC;YAC3BlB,MAAM,EAAEA,MAAM;YACd,GAAG/B;UACL,CAAC;QACH,OAAO;UACL9F,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoH,IAAI,CAACpI,QAAQ,CAACH,IAAI;UAChD;QACF;QAEA,IAAI6D,OAAO,EAAE;UACXzC,OAAO,CAACkB,GAAG,CAAC,kBAAkB;;UAE9B;UACAzD,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACrB,OAAO;;UAE7B;UACA3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE,IAAI8D,OAAM;;UAE9B;UACA,MAAMuG,aAAY,GAAInL,WAAW,CAACoD,KAAK,CAACgI,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACvK,EAAC,KAAMwI,IAAI,CAACxI,EAAE;UACvE,IAAIqK,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBnL,WAAW,CAACoD,KAAK,CAAC8C,IAAI,CAACoD,IAAI;YAC3BnH,OAAO,CAACkB,GAAG,CAAC,WAAW;UACzB,OAAO;YACLlB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACA,MAAMiI,eAAc,GAAKxH,CAAC,IAAK;YAC7B;YACA,IAAInE,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;cACtCjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEiG,IAAI,CAACxI,EAAE;cAC9ByK,UAAU,CAACjC,IAAI,CAACxI,EAAE;cAClB;cACAgD,CAAC,CAAC0H,eAAc,IAAK1H,CAAC,CAAC0H,eAAe,CAAC;YACzC;YACA;UACF;;UAEA;UACA5G,OAAO,CAACM,uBAAsB,GAAIoG,eAAc;UAChD1G,OAAO,CAACnB,EAAE,CAAC,OAAO,EAAE6H,eAAe;;UAEnC;UACA,MAAM9G,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;UACrDwB,OAAO,CAACC,UAAU,CAAC;YACjBC,SAAS,EAAEN,WAAW;YACtBO,MAAM,EAAEP,WAAU,GAAI,SAAQ,GAAI,SAAS;YAC3CQ,MAAM,EAAER,WAAU,GAAI,GAAE,GAAI;UAC9B,CAAC;;UAED;UACA0D,UAAU,CAAC,MAAM;YACftI,WAAW,CAACwD,KAAK,CAAC+E,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENhG,OAAO,CAACkB,GAAG,CAAC,OAAOiG,IAAI,CAACxI,EAAE,WAAW;QAEvC,OAAO;UACLqB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoH,IAAI,CAACxI,EAAE,EAAEoB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMqJ,UAAS,GAAKzK,EAAE,IAAK;MACzBJ,cAAc,CAAC0C,KAAI,GAAItC,EAAC;MACxB,MAAM8D,OAAM,GAAI3E,YAAY,CAACa,EAAE;MAC/B,IAAI8D,OAAO,EAAE;QACX;QACAA,OAAO,CAACC,UAAU,CAAC;UACjBuC,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACArH,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAAC0G,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACvK,EAAC,KAAMA,EAAE,EAAE;YACf,MAAM2K,YAAW,GAAIxL,YAAY,CAACoL,CAAC,CAACvK,EAAE;YACtC,IAAI2K,YAAY,EAAE;cAChBA,YAAY,CAAC5G,UAAU,CAAC;gBACtBuC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAMqE,UAAS,GAAI,MAAO5K,EAAE,IAAK;MAC/B,IAAI;QACFqB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE1B,MAAMyH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqB1H,EAAE,EAAE,EAAE;UACtD2H,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMvB,OAAM,GAAI3E,YAAY,CAACa,EAAE;UAC/B,IAAI8D,OAAO,EAAE;YACXhF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;YAChC,OAAO3E,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACoD,KAAI,GAAIpD,WAAW,CAACoD,KAAK,CAACuI,MAAM,CAACrC,IAAG,IAAKA,IAAI,CAACxI,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAAC0C,KAAI,KAAMtC,EAAE,EAAE;YAC/BJ,cAAc,CAAC0C,KAAI,GAAI,IAAG;UAC5B;UAEArE,SAAS,CAACoH,OAAO,CAAC,QAAQ;UAC1BhE,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAIqI,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM4F,QAAO,GAAKtC,IAAI,IAAK;MACzBzI,QAAQ,CAACuC,KAAI,GAAI;QAAE,GAAGkG;MAAK;MAC3B1I,iBAAiB,CAACwC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMyI,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACF1J,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAExC,QAAQ,CAACuC,KAAK,CAACtC,EAAE;QAEzC,MAAMyH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqB3H,QAAQ,CAACuC,KAAK,CAACtC,EAAE,EAAE,EAAE;UACrE2H,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnB9H,IAAI,EAAEF,QAAQ,CAACuC,KAAK,CAACrC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACuC,KAAK,CAACpC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACuC,KAAK,CAACnC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAACsH,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMmD,IAAG,GAAItJ,WAAW,CAACoD,KAAK,CAAC0I,IAAI,CAACT,CAAA,IAAKA,CAAC,CAACvK,EAAC,KAAMD,QAAQ,CAACuC,KAAK,CAACtC,EAAE;UACnE,IAAIwI,IAAI,EAAE;YACRA,IAAI,CAACvI,IAAG,GAAIF,QAAQ,CAACuC,KAAK,CAACrC,IAAG;YAC9BuI,IAAI,CAACtI,KAAI,GAAIH,QAAQ,CAACuC,KAAK,CAACpC,KAAI;YAChCsI,IAAI,CAACrI,WAAU,GAAIJ,QAAQ,CAACuC,KAAK,CAACnC,WAAU;;YAE5C;YACA,MAAM2D,OAAM,GAAI3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE;YACpC,IAAI8D,OAAO,EAAE;cACXA,OAAO,CAACC,UAAU,CAAC;gBACjBsC,WAAW,EAAE9E,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,CAACwB,KAAK;gBAC9C+E,SAAS,EAAEjF,gBAAgB,CAACiH,IAAI,CAACvI,IAAI,CAAC,CAACwB,KAAK;gBAC5CgF,WAAW,EAAE3E,iBAAiB,CAAC0G,IAAI,CAACtI,KAAK,CAAC,CAAC8B;cAC7C,CAAC;YACH;UACF;UAEA/D,SAAS,CAACoH,OAAO,CAAC,QAAQ;UAC1BhE,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,MAAM,CAACG,IAAI;QAErC,OAAO;UACL,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;MAC7C;MAEApF,iBAAiB,CAACwC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMgH,aAAY,GAAI,MAAAA,CAAO2B,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK/L,WAAW,CAACoD,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAMuC,OAAM,GAAIhM,WAAW,CAACoD,KAAK,CAACD,GAAG,CAACmG,IAAG,IAAKA,IAAI,CAACxI,EAAE;UAErDqB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE2I,OAAO;UAEjC,MAAMzD,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;YAChDC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACP,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cAAEoD,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAACzD,QAAQ,CAACS,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAACjD,OAAO,EAAE;YACnB,MAAM,IAAIgD,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,WAAW;UAC/C;UAEA7D,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE+F,MAAM,CAACG,IAAI;QACvC;;QAEA;QACA9E,MAAM,CAACC,MAAM,CAACzE,YAAY,CAAC,CAAC0E,OAAO,CAACC,OAAM,IAAK;UAC7C,IAAIhF,WAAW,CAACwD,KAAK,EAAE;YACrBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;UAClC;QACF,CAAC;;QAED;QACA5E,WAAW,CAACoD,KAAI,GAAI,EAAC;QACrBqB,MAAM,CAACyH,IAAI,CAACjM,YAAY,CAAC,CAAC0E,OAAO,CAACwH,GAAE,IAAK;UACvC,OAAOlM,YAAY,CAACkM,GAAG;QACzB,CAAC;QACDzL,cAAc,CAAC0C,KAAI,GAAI,IAAG;QAE1B,IAAI,CAAC2I,WAAW,EAAE;UAChBhN,SAAS,CAACoH,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOjE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAAC6J,WAAW,EAAE;UAChBhN,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC8D,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAMoG,qBAAoB,GAAKC,MAAM,IAAK;MACxC1L,aAAa,CAACyC,KAAI,GAAIiJ,MAAK;;MAE3B;MACArM,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAAC2E,IAAG,IAAK;QAChC,MAAM1E,OAAM,GAAI3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE;QACpC,IAAI8D,OAAO,EAAE;UACX,IAAIyH,MAAM,CAACC,QAAQ,CAAChD,IAAI,CAACvI,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACrB,OAAO;UAC/B,OAAO;YACLhF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACzB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAM2H,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIvM,WAAW,CAACoD,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKzG,MAAM,CAACD,IAAI,CAAC2H,MAAM,CAAE;MACxCjL,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAAC2E,IAAG,IAAK;QAChC,MAAM1E,OAAM,GAAI3E,YAAY,CAACqJ,IAAI,CAACxI,EAAE;QACpC,IAAI8D,OAAM,IAAKA,OAAO,CAACqF,SAAS,EAAE;UAChCD,MAAM,CAACwC,MAAM,CAAC5H,OAAO,CAACqF,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAACpI,QAAQ,EAAEwI,MAAM,EAAE;UAChCM,MAAM,CAACwC,MAAM,CAAClD,IAAI,CAACpI,QAAQ,CAACwI,MAAM;QACpC;MACF,CAAC;MAED9J,WAAW,CAACwD,KAAK,CAACqJ,SAAS,CAACzC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAM7F,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACpE,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMoJ,UAAS,GAAIvL,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI;;MAE7C;MACAtI,UAAU,CAACiC,KAAK,CAAC8C,IAAI,CAAC;QAAEnC,GAAG;QAAEC;MAAI,CAAC;;MAElC;MACA,MAAMqB,MAAK,GAAI,IAAI/B,IAAI,CAACgC,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACxB,GAAG,EAAEC,GAAG,CAAC;QACpBwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;wGAGuC6K,UAAU;;WAEvG,CAAC;UACF7G,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAM4G,UAAU;MACzB,CAAC;MAED9M,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACZ,MAAM;MAC5BjE,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACb,MAAM;;MAE7B;MACA,IAAIlE,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;QAC/BkD,cAAc,CAAC;MACjB;MAEA5N,SAAS,CAACoH,OAAO,CAAC,SAASuG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC/M,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAIjC,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;MACzC;MAEA,MAAMyG,IAAG,GAAI1I,UAAU,CAACiC,KAAK,CAACD,GAAG,CAACyJ,CAAA,IAAK,CAACA,CAAC,CAAC7I,GAAG,EAAE6I,CAAC,CAAC5I,GAAG,CAAC;MAErD3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACuJ,QAAQ,CAAC;QACjChD,IAAI,EAAEA,IAAI;QACV1C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACf0F,WAAW,EAAE;MACf,CAAC;MAEDlN,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC5E,QAAQ,CAAC+B,KAAK;IACtC;;IAEA;IACA,MAAM2J,WAAU,GAAKC,KAAK,IAAK;MAC7B7L,UAAU,CAACiC,KAAK,CAAC6J,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB/L,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACoF,KAAK,EAAEoD,CAAC,KAAK;QACrCC,kBAAkB,CAACrD,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,EAAEmJ,CAAA,GAAI,CAAC;MAChD,CAAC;MAED,IAAIhM,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;QAC/BkD,cAAc,CAAC;MACjB,OAAO,IAAItL,QAAQ,CAAC+B,KAAK,EAAE;QACzBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;IACtB;IAEA,MAAMgK,kBAAiB,GAAIA,CAACrJ,GAAG,EAAEC,GAAG,EAAEgJ,KAAK,KAAK;MAC9C,MAAM1J,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,MAAM+B,MAAK,GAAI,IAAI/B,IAAI,CAACgC,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACxB,GAAG,EAAEC,GAAG,CAAC;QACpBwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;wGAGuCmL,KAAK;;WAElG,CAAC;UACFnH,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMkH,KAAK;MACpB,CAAC;MAEDpN,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACZ,MAAM;MAC5BjE,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAM6H,gBAAe,GAAIA,CAAA,KAAM;MAC7B9L,WAAW,CAACgC,KAAK,CAACuB,OAAO,CAACU,MAAK,IAAK;QAClCzF,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChB,MAAM;MACjC,CAAC;MACDjE,WAAW,CAACgC,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAMiK,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAIlM,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;QAC/B1K,SAAS,CAACuO,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFnL,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE/B,iBAAiB,CAAC8B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK,CAACqG,MAAM;QAC7CtH,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAErD,WAAW,CAACoD,KAAK;QAErC,MAAMmK,UAAS,GAAIpM,UAAU,CAACiC,KAAK,CAAC,CAAC;QACrC,MAAMtD,YAAW,GAAIqB,UAAU,CAACiC,KAAK,CAACoK,KAAK,CAAC,CAAC,GAAE;;QAE/C;QACA,MAAMC,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVxJ,GAAG,EAAEwJ,UAAU,CAACxJ,GAAG;YACnBC,GAAG,EAAEuJ,UAAU,CAACvJ;UAClB,CAAC;UACDlE,YAAY,EAAEA,YAAY,CAACqD,GAAG,CAAC4G,KAAI,KAAM;YACvChG,GAAG,EAAEgG,KAAK,CAAChG,GAAG;YACdC,GAAG,EAAE+F,KAAK,CAAC/F;UACb,CAAC,CAAC,CAAC;UACH0J,SAAS,EAAEpM,iBAAiB,CAAC8B,KAAI,IAAK,OAAO;UAAE;UAC/C7B,cAAc,EAAEA,cAAc,CAAC6B,KAAK;UACpC5B,WAAW,EAAEA,WAAW,CAAC4B,KAAK;UAC9BpD,WAAW,EAAEA,WAAW,CAACoD,KAAI,IAAKpD,WAAW,CAACoD,KAAK,CAACqG,MAAK,GAAI,IAAIzJ,WAAW,CAACoD,KAAK,CAACD,GAAG,CAACmG,IAAG,KAAM;YAC9FxI,EAAE,EAAEwI,IAAI,CAACxI,EAAE;YACXC,IAAI,EAAEuI,IAAI,CAACvI,IAAI;YACfC,KAAK,EAAEsI,IAAI,CAACtI,KAAK;YACjB2M,aAAa,EAAErE,IAAI,CAACpI,QAAQ,EAAEH,IAAG,IAAKuI,IAAI,CAACqE,aAAa;YACxDC,aAAa,EAAEtE,IAAI,CAACpI,QAAO,IAAKoI,IAAI,CAACsE,aAAa;YAClD3M,WAAW,EAAEqI,IAAI,CAACrI;UACpB,CAAC,CAAC,IAAI;QACR;QAEAkB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAEoK,YAAY;;QAExC;QACA,MAAMlF,QAAO,GAAI,MAAMC,KAAK,CAAC,oBAAoB,EAAE;UACjDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC4E,YAAY;QACnC,CAAC;QAED,IAAI,CAAClF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC/G,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvB4G,MAAM,EAAEP,QAAQ,CAACO,MAAM;YACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;YAC/B7G,KAAK,EAAE+G;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWZ,QAAQ,CAACO,MAAM,MAAMG,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnClH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE+F,MAAM;QAE7B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAM;YAAEoD,IAAI;YAAEsE;UAAQ,IAAIzE,MAAK;;UAE/B;UACA3H,QAAQ,CAAC2B,KAAI,GAAI;YACf0K,QAAQ,EAAEC,IAAI,CAACC,KAAK,CAACzE,IAAI,CAACuE,QAAO,IAAKD,OAAO,EAAEI,aAAY,IAAK,CAAC,CAAC;YAClEC,QAAQ,EAAE3E,IAAI,CAAC4E,cAAa,IAAKN,OAAO,EAAEO,aAAY,IAAK,CAAC;YAC5DC,UAAU,EAAE9E,IAAI,CAAC+E,WAAW,EAAE7E,MAAK,IAAKoE,OAAO,EAAEU,aAAY,IAAK,CAAC;YACnEb,SAAS,EAAEnE,IAAI,CAACmE,SAAQ,IAAKtE,MAAM,CAACsE,SAAS;YAC7Cc,kBAAkB,EAAEjF,IAAI,CAACkF,oBAAmB,IAAKZ,OAAO,EAAEW,kBAAiB,IAAK,EAAE;YAClFE,WAAW,EAAEb,OAAO,EAAEa,WAAU,IAAK;UACvC;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACA,MAAMC,QAAO,GAAIrF,IAAI,CAAC+E,WAAU,IAAK/E,IAAI,CAACM,IAAG,IAAK,EAAC;UACnDgF,4BAA4B,CAACD,QAAQ,EAAE9O,YAAY,EAAE+N,OAAO,EAAEa,WAAW;UAEzE3P,SAAS,CAACoH,OAAO,CAAC,GAAG2I,gBAAgB,CAAC1F,MAAM,CAACsE,SAAS,CAAC,YAAY;UAEnE,MAAMqB,WAAU,GAAIxF,IAAI,CAACkF,oBAAoB,EAAEhF,MAAK,IAAKoE,OAAO,EAAEW,kBAAkB,EAAE/E,MAAK,IAAK;UAChG,IAAIsF,WAAU,GAAI,CAAC,EAAE;YACnBhQ,SAAS,CAACkI,IAAI,CAAC,QAAQ8H,WAAW,OAAO;UAC3C;;UAEA;UACA,IAAIlB,OAAO,EAAEa,WAAU,IAAKb,OAAO,CAACa,WAAW,CAACjF,MAAK,GAAI,CAAC,EAAE;YAC1D,MAAMuF,SAAQ,GAAInB,OAAO,CAACa,WAAW,CAACvL,GAAG,CAAC,CAAC8L,MAAM,EAAEjC,KAAK,KACtD,GAAGA,KAAI,GAAI,CAAC,KAAKiC,MAAM,CAACC,MAAM,CAACnL,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAKkJ,MAAM,CAACC,MAAM,CAAClL,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAGkJ,MAAM,CAACE,YAAW,GAAI,SAAQ,GAAI,EAAE,EACvH,CAAC,CAACC,IAAI,CAAC,IAAI;YAEXlH,UAAU,CAAC,MAAM;cACfnJ,SAAS,CAAC;gBACRiH,OAAO,EAAE,aAAagJ,SAAS,EAAE;gBACjCjO,IAAI,EAAE,MAAM;gBACZmN,QAAQ,EAAE,KAAK;gBACfmB,SAAS,EAAE;cACb,CAAC;YACH,CAAC,EAAE,IAAI;UACT;QAEF,OAAO;UACL,MAAM,IAAIlG,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAO9D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BnD,SAAS,CAACmD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAAC8D,OAAO;MAC5C;IACF;;IAEA;IACA,MAAM8I,gBAAe,GAAKpB,SAAS,IAAK;MACtC,MAAM4B,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAAC5B,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMmB,4BAA2B,GAAIA,CAACc,WAAW,EAAEC,eAAe,EAAElB,WAAW,KAAK;MAClF,IAAI,CAAC9O,WAAW,CAACwD,KAAI,IAAK,CAACuM,WAAU,IAAKA,WAAW,CAAClG,MAAK,GAAI,CAAC,EAAE;MAElE,MAAMnG,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE;QACtBwM,UAAU,EAAEF,WAAW,CAAClG,MAAM;QAC9BqG,WAAW,EAAEF,eAAe,CAACnG,MAAM;QACnCiF,WAAW,EAAEA;MACf,CAAC;;MAED;MACA,MAAMqB,UAAS,GAAIJ,WAAW,CAACxM,GAAG,CAAC4G,KAAI,IAAK,CAACA,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;MAElE3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACuJ,QAAQ,CAAC;QACjChD,IAAI,EAAEkG,UAAU;QAChB5I,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACf0F,WAAW,EAAE,OAAO;QACpBzF,aAAa,EAAE;MACjB,CAAC;MAEDzH,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC5E,QAAQ,CAAC+B,KAAK;MAEpC,MAAM4M,OAAM,GAAI,EAAC;;MAEjB;MACA,MAAMC,WAAU,GAAI,IAAI3M,IAAI,CAACgC,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAACoK,WAAW,CAAC,CAAC,CAAC,CAAC5L,GAAG,EAAE4L,WAAW,CAAC,CAAC,CAAC,CAAC3L,GAAG,CAAC;QAClDwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFgE,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,IAAI;QACXd,MAAM,EAAE;MACV,CAAC;MAEDpF,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACgK,WAAW;MACjCD,OAAO,CAAC9J,IAAI,CAAC+J,WAAW;;MAExB;MACA,IAAIvB,WAAU,IAAKA,WAAW,CAACjF,MAAK,GAAI,CAAC,EAAE;QACzCiF,WAAW,CAAC/J,OAAO,CAAC,CAACsK,MAAM,EAAEjC,KAAK,KAAK;UACrC,MAAMkD,UAAS,GAAIlD,KAAI,GAAI;UAC3B,MAAMmD,UAAS,GAAIlB,MAAM,CAACE,YAAW;UACrC,MAAM/O,WAAU,GAAI6O,MAAM,CAAC7O,WAAU;;UAErC;UACA,IAAImC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAI4N,UAAU,EAAE;YACd,QAAQ/P,WAAW;cACjB,KAAK,KAAK;gBACRmC,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,QAAQ;gBACXA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,MAAM;gBACTA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,UAAU;gBACbA,KAAI,GAAI,SAAQ,EAAE;gBAClB;YACJ;UACF;UAEA,MAAM6N,YAAW,GAAI,IAAI9M,IAAI,CAACgC,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAAC0J,MAAM,CAACC,MAAM,CAACnL,GAAG,EAAEkL,MAAM,CAACC,MAAM,CAAClL,GAAG,CAAC;YAChDwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;yDAEZU,KAAK;2GAC6C2N,UAAU;oBACjGC,UAAS,GAAI,8EAA6E,GAAI,EAAE;;eAErG,CAAC;cACFtK,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAE,MAAMoK,UAAU,GAAGC,UAAS,GAAI,KAAK/P,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3E4E,MAAM,EAAE;UACV,CAAC;UAEDpF,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACmK,YAAY;UAClCJ,OAAO,CAAC9J,IAAI,CAACkK,YAAY;QAC3B,CAAC;MACH,OAAO;QACL;QACAR,eAAe,CAACjL,OAAO,CAAC,CAACsK,MAAM,EAAEjC,KAAK,KAAK;UACzC,MAAMqD,YAAW,GAAIrD,KAAI,GAAI;UAC7B,MAAMsD,YAAW,GAAItD,KAAI,KAAM4C,eAAe,CAACnG,MAAK,GAAI;UAExD,MAAM2G,YAAW,GAAI,IAAI9M,IAAI,CAACgC,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAAC0J,MAAM,CAAClL,GAAG,EAAEkL,MAAM,CAACjL,GAAG,CAAC;YAClCwB,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIpC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAI/D,gBAAgB,CAAC;;yDAEZyO,YAAW,GAAI,SAAQ,GAAI,SAAS;2GACcA,YAAW,GAAI,GAAE,GAAID,YAAY;;eAE7H,CAAC;cACFxK,SAAS,EAAE,IAAIvC,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAEwK,YAAW,GAAI,IAAG,GAAI,MAAMD,YAAY,EAAE;YACjDrL,MAAM,EAAE;UACV,CAAC;UAEDpF,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACmK,YAAY;UAClCJ,OAAO,CAAC9J,IAAI,CAACkK,YAAY;QAC3B,CAAC;MACH;MAEAhP,WAAW,CAACgC,KAAI,GAAI4M,OAAM;;MAE1B;MACA9H,UAAU,CAAC,MAAM;QACf,IAAI7G,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAAC+E,UAAU,CAAC,CAAC9G,QAAQ,CAAC+B,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;QAC1E;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMuL,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAItN,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA8J,gBAAgB,CAAC;IACnB;IAEA,MAAMqD,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAItC,aAAY,GAAI;MACpB,KAAK,IAAId,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAIhM,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE0D,CAAC,EAAE,EAAE;QACpD,MAAMqD,EAAC,GAAIrP,UAAU,CAACiC,KAAK,CAAC+J,CAAC;QAC7B,MAAMsD,EAAC,GAAItP,UAAU,CAACiC,KAAK,CAAC+J,CAAA,GAAI,CAAC;QACjCc,aAAY,IAAKyC,WAAW,CAACF,EAAE,CAACxM,GAAG,EAAEwM,EAAE,CAACzM,GAAG,EAAE0M,EAAE,CAACzM,GAAG,EAAEyM,EAAE,CAAC1M,GAAG;MAC7D;MACA,OAAOkK,aAAY;IACrB;IAEA,MAAMyC,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAI5C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIL,IAAG,GAAI9C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI5C,IAAI,CAACkD,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI7C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAItD,IAAI,CAACuD,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIpD,IAAI,CAACuD,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BpD,IAAI,CAACwD,GAAG,CAACP,EAAE,IAAIjD,IAAI,CAACwD,GAAG,CAACL,EAAE,IAC1BnD,IAAI,CAACuD,GAAG,CAACF,EAAE,GAAC,CAAC,IAAIrD,IAAI,CAACuD,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAIzD,IAAI,CAAC0D,KAAK,CAAC1D,IAAI,CAAC2D,IAAI,CAACL,CAAC,CAAC,EAAEtD,IAAI,CAAC2D,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAON,CAAA,GAAIS,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAM3S,YAAY,CAAC4S,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtB/Q,IAAI,EAAE;QACR,CAAC;QAEDhC,SAAS,CAACoH,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNpH,SAAS,CAACkI,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAM8K,QAAO,GAAIA,CAAA,KAAM;MACrB7E,gBAAgB,CAAC;MAEjB,IAAI7L,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;MAEAjC,UAAU,CAACiC,KAAI,GAAI,EAAC;MACpB3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;MAEpBrE,SAAS,CAACoH,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAM6L,uBAAsB,GAAKtE,SAAS,IAAK;MAC7CpM,iBAAiB,CAAC8B,KAAI,GAAIsK,SAAQ;IACpC;;IAEA;IACA,MAAMuE,oBAAmB,GAAKC,QAAQ,IAAK;MACzC3Q,cAAc,CAAC6B,KAAI,GAAI8O,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnC5Q,WAAW,CAAC4B,KAAI,GAAIgP,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIlR,UAAU,CAACiC,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAM8D,UAAS,GAAIpM,UAAU,CAACiC,KAAK,CAAC,CAAC;MACrCxD,WAAW,CAACwD,KAAK,CAACkP,SAAS,CAAC,CAAC/E,UAAU,CAACxJ,GAAG,EAAEwJ,UAAU,CAACvJ,GAAG,CAAC;MAC5DpE,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAIrR,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAMgJ,QAAO,GAAItR,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC;MAC7D7J,WAAW,CAACwD,KAAK,CAACkP,SAAS,CAAC,CAACG,QAAQ,CAAC1O,GAAG,EAAE0O,QAAQ,CAACzO,GAAG,CAAC;MACxDpE,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,iBAAgB,GAAKC,WAAW,IAAK;MACzC,IAAI,CAACA,WAAU,IAAKA,WAAW,CAAClJ,MAAK,KAAM,CAAC,EAAE;QAC5C1K,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,IAAI;QACF;QACA,MAAM0Q,SAAQ,GAAID,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE/I,KAAK,KAAK+I,GAAE,GAAI/I,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI4I,WAAW,CAAClJ,MAAK;QAC3F,MAAMsJ,SAAQ,GAAIJ,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE/I,KAAK,KAAK+I,GAAE,GAAI/I,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI4I,WAAW,CAAClJ,MAAK;QAE3FtH,OAAO,CAACkB,GAAG,CAAC,aAAauP,SAAS,KAAKG,SAAS,GAAG;;QAEnD;QACAnT,WAAW,CAACwD,KAAK,CAACkP,SAAS,CAAC,CAACM,SAAS,EAAEG,SAAS,CAAC;;QAElD;QACA,IAAIJ,WAAW,CAAClJ,MAAK,KAAM,CAAC,EAAE;UAC5B7J,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAAC,EAAE;QAC9B,OAAO;UACL;UACA,MAAMS,IAAG,GAAIL,WAAW,CAACxP,GAAG,CAACyJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMqG,IAAG,GAAIN,WAAW,CAACxP,GAAG,CAACyJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMsG,OAAM,GAAInF,IAAI,CAACoF,GAAG,CAAC,GAAGH,IAAI,IAAIjF,IAAI,CAACqF,GAAG,CAAC,GAAGJ,IAAI;UACpD,MAAMK,OAAM,GAAItF,IAAI,CAACoF,GAAG,CAAC,GAAGF,IAAI,IAAIlF,IAAI,CAACqF,GAAG,CAAC,GAAGH,IAAI;UACpD,MAAMK,OAAM,GAAIvF,IAAI,CAACoF,GAAG,CAACD,OAAO,EAAEG,OAAO;UAEzC,IAAIE,IAAG,GAAI,EAAC;UACZ,IAAID,OAAM,GAAI,IAAI,EAAEC,IAAG,GAAI,EAAC,MACvB,IAAID,OAAM,GAAI,GAAG,EAAEC,IAAG,GAAI,EAAC,MAC3B,IAAID,OAAM,GAAI,CAAC,EAAEC,IAAG,GAAI,EAAC,MACzBA,IAAG,GAAI;UAEZ3T,WAAW,CAACwD,KAAK,CAACmP,OAAO,CAACgB,IAAI;QAChC;QAEAxU,SAAS,CAACoH,OAAO,CAAC,QAAQwM,WAAW,CAAClJ,MAAM,SAAS;MACvD,EAAE,OAAO+J,WAAW,EAAE;QACpBrR,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEsR,WAAW;QACrCzU,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMuR,SAAQ,GAAIA,CAAA,KAAM;MACtBtR,OAAO,CAACkB,GAAG,CAAC,sCAAsC,EAAElC,UAAU,CAACiC,KAAK,CAACqG,MAAM;MAE3E,IAAI,CAACtI,UAAU,CAACiC,KAAI,IAAKjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;QACtDtH,OAAO,CAACC,IAAI,CAAC,SAAS;QACtBrD,SAAS,CAACuO,OAAO,CAAC,UAAU;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,CAAC1N,WAAW,CAACwD,KAAK,EAAE;UACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS;UACvBnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;UACxB;QACF;;QAEA;QACA,IAAI,CAACqB,MAAM,CAACD,IAAG,IAAK,CAACC,MAAM,CAACD,IAAI,CAAC2H,MAAM,EAAE;UACvC9I,OAAO,CAACD,KAAK,CAAC,oBAAoB;UAClCnD,SAAS,CAACmD,KAAK,CAAC,YAAY;UAC5B;QACF;QAEAC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK;;QAEtC;QACA,MAAM4G,MAAK,GAAI,IAAIzG,MAAM,CAACD,IAAI,CAAC2H,MAAM,CAAC;;QAEtC;QACA,IAAIyI,gBAAe,GAAI;QACvB,MAAMf,WAAU,GAAI,EAAC;QAErBxR,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACoF,KAAK,EAAEiD,KAAK,KAAK;UACzC,IAAIjD,KAAI,IAAK,OAAOA,KAAK,CAAChG,GAAE,KAAM,QAAO,IAAK,OAAOgG,KAAK,CAAC/F,GAAE,KAAM,QAAO,IACtE,CAACuG,KAAK,CAACR,KAAK,CAAChG,GAAG,KAAK,CAACwG,KAAK,CAACR,KAAK,CAAC/F,GAAG,KACrC2P,QAAQ,CAAC5J,KAAK,CAAChG,GAAG,KAAK4P,QAAQ,CAAC5J,KAAK,CAAC/F,GAAG,KACzC+F,KAAK,CAAChG,GAAE,IAAK,CAAC,GAAE,IAAKgG,KAAK,CAAChG,GAAE,IAAK,GAAE,IACpCgG,KAAK,CAAC/F,GAAE,IAAK,CAAC,EAAC,IAAK+F,KAAK,CAAC/F,GAAE,IAAK,EAAE,EAAE;YAEvC;YACA,MAAMD,GAAE,GAAIyG,MAAM,CAACT,KAAK,CAAChG,GAAG;YAC5B,MAAMC,GAAE,GAAIwG,MAAM,CAACT,KAAK,CAAC/F,GAAG;YAE5B,IAAI,CAACuG,KAAK,CAACxG,GAAG,KAAK,CAACwG,KAAK,CAACvG,GAAG,KAAK2P,QAAQ,CAAC5P,GAAG,KAAK4P,QAAQ,CAAC3P,GAAG,CAAC,EAAE;cAChE2O,WAAW,CAACzM,IAAI,CAAC,CAACnC,GAAG,EAAEC,GAAG,CAAC;cAC3B0P,gBAAgB,EAAC;cACjBvR,OAAO,CAACkB,GAAG,CAAC,UAAU2J,KAAI,GAAI,CAAC,MAAMjJ,GAAG,KAAKC,GAAG,GAAG;YACrD,OAAO;cACL7B,OAAO,CAACC,IAAI,CAAC,UAAU4K,KAAI,GAAI,CAAC,GAAG,EAAEjD,KAAK;YAC5C;UACF,OAAO;YACL5H,OAAO,CAACC,IAAI,CAAC,SAAS4K,KAAI,GAAI,CAAC,GAAG,EAAEjD,KAAK;UAC3C;QACF,CAAC;QAED,IAAI2J,gBAAe,KAAM,CAAC,EAAE;UAC1BvR,OAAO,CAACD,KAAK,CAAC,UAAU;UACxBnD,SAAS,CAACmD,KAAK,CAAC,SAAS;UACzB;QACF;;QAEA;QACAyQ,WAAW,CAAChO,OAAO,CAAC,CAACiP,KAAK,EAAE5G,KAAK,KAAK;UACpC,IAAI;YACFhD,MAAM,CAACwC,MAAM,CAACoH,KAAK;YACnBzR,OAAO,CAACkB,GAAG,CAAC,WAAW2J,KAAI,GAAI,CAAC,MAAM4G,KAAK,CAAC,CAAC,CAAC,KAAKA,KAAK,CAAC,CAAC,CAAC,GAAG;UAChE,EAAE,OAAOC,WAAW,EAAE;YACpB1R,OAAO,CAACD,KAAK,CAAC,aAAa8K,KAAI,GAAI,CAAC,GAAG,EAAE4G,KAAK,EAAEC,WAAW;UAC7D;QACF,CAAC;;QAED;QACA,IAAIC,SAAS,EAAEC,SAAQ;QACvB,IAAI;UACFD,SAAQ,GAAI9J,MAAM,CAACE,YAAY,CAAC;UAChC6J,SAAQ,GAAI/J,MAAM,CAACG,YAAY,CAAC;QAClC,EAAE,OAAO6J,cAAc,EAAE;UACvB7R,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE8R,cAAc;UACzCjV,SAAS,CAACmD,KAAK,CAAC,UAAU;UAC1BwQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEAxQ,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE;UACnByQ,SAAS,EAAE,CAACA,SAAS,CAAC/P,GAAG,EAAE+P,SAAS,CAAC9P,GAAG,CAAC;UACzC+P,SAAS,EAAE,CAACA,SAAS,CAAChQ,GAAG,EAAEgQ,SAAS,CAAC/P,GAAG;QAC1C,CAAC;;QAED;QACA,IAAI,CAAC8P,SAAQ,IAAK,CAACC,SAAQ,IACvBxJ,KAAK,CAACuJ,SAAS,CAAC/P,GAAG,KAAKwG,KAAK,CAACuJ,SAAS,CAAC9P,GAAG,KAC3CuG,KAAK,CAACwJ,SAAS,CAAChQ,GAAG,KAAKwG,KAAK,CAACwJ,SAAS,CAAC/P,GAAG,KAC3C,CAAC2P,QAAQ,CAACG,SAAS,CAAC/P,GAAG,KAAK,CAAC4P,QAAQ,CAACG,SAAS,CAAC9P,GAAG,KACnD,CAAC2P,QAAQ,CAACI,SAAS,CAAChQ,GAAG,KAAK,CAAC4P,QAAQ,CAACI,SAAS,CAAC/P,GAAG,CAAC,EAAE;UACxD7B,OAAO,CAACD,KAAK,CAAC,YAAY;UAC1BnD,SAAS,CAACuO,OAAO,CAAC,gBAAgB;UAClCoF,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,MAAMO,OAAM,GAAInF,IAAI,CAACkG,GAAG,CAACF,SAAS,CAAChQ,GAAE,GAAI+P,SAAS,CAAC/P,GAAG;QACtD,MAAMsP,OAAM,GAAItF,IAAI,CAACkG,GAAG,CAACF,SAAS,CAAC/P,GAAE,GAAI8P,SAAS,CAAC9P,GAAG;QAEtD,IAAIkP,OAAM,GAAI,MAAK,IAAKG,OAAM,GAAI,MAAM,EAAE;UACxClR,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BsQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEA,IAAIO,OAAM,GAAI,GAAE,IAAKG,OAAM,GAAI,EAAE,EAAE;UACjClR,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BsQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,IAAI;UACF/S,WAAW,CAACwD,KAAK,CAACqJ,SAAS,CAACzC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;UAC7D7H,OAAO,CAACkB,GAAG,CAAC,UAAU;QACxB,EAAE,OAAO6Q,WAAW,EAAE;UACpB/R,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEgS,WAAW;UACtCnV,SAAS,CAACuO,OAAO,CAAC,gBAAgB;UAClCoF,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEAxQ,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEqQ,gBAAgB,EAAE,MAAM;QACnD3U,SAAS,CAACoH,OAAO,CAAC,QAAQuN,gBAAgB,SAAS;MAErD,EAAE,OAAOxR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK;QACrCnD,SAAS,CAACmD,KAAK,CAAC,YAAW,GAAIA,KAAK,CAAC8D,OAAO;MAC9C;IACF;;IAEA;;IAEA;IACA,MAAMmO,eAAc,GAAKtK,IAAI,IAAK;MAChC,IAAI,CAACjK,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,MAAMjC,QAAO,GAAI,IAAIkC,MAAM,CAACD,IAAI,CAACuJ,QAAQ,CAAC;UACxChD,IAAI,EAAEA,IAAI,CAACyE,WAAW,CAACnL,GAAG,CAAC4G,KAAI,IAAK,CAACA,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC,CAAC;UAC3DmD,WAAW,EAAE0C,IAAI,CAACtH,KAAI,IAAK,SAAS;UACpC6E,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,GAAG;UAClByF,WAAW,EAAE,OAAO;UACpBsH,OAAO,EAAE,IAAI;UACbC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QAC3B,CAAC;;QAED;QACA,MAAM9G,UAAS,GAAI1D,IAAI,CAACyE,WAAW,CAAC,CAAC;QACrC,MAAMmE,QAAO,GAAI5I,IAAI,CAACyE,WAAW,CAACzE,IAAI,CAACyE,WAAW,CAAC7E,MAAK,GAAI,CAAC;QAE7D,MAAMwG,WAAU,GAAI,IAAI1M,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;UACzCC,QAAQ,EAAE,CAACgI,UAAU,CAACxJ,GAAG,EAAEwJ,UAAU,CAACvJ,GAAG,CAAC;UAC1CwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;uDAEL4H,IAAI,CAACtH,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJsD,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG+D,IAAI,CAACvK,IAAI,OAAO;UAC1B0F,MAAM,EAAE;QACV,CAAC;QAED,MAAMsP,SAAQ,GAAI,IAAI/Q,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;UACvCC,QAAQ,EAAE,CAACkN,QAAQ,CAAC1O,GAAG,EAAE0O,QAAQ,CAACzO,GAAG,CAAC;UACtCwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;uDAEL4H,IAAI,CAACtH,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJsD,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG+D,IAAI,CAACvK,IAAI,OAAO;UAC1B0F,MAAM,EAAE;QACV,CAAC;;QAED;QACArD,mBAAmB,CAACkI,IAAI,CAAC/I,EAAE,IAAI;UAC7BO,QAAQ;UACR4O,WAAW;UACXqE;QACF;;QAEA;QACA1U,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC,CAAC5E,QAAQ,EAAE4O,WAAW,EAAEqE,SAAS,CAAC;QAExDvV,SAAS,CAACoH,OAAO,CAAC,UAAU0D,IAAI,CAACvK,IAAI,EAAE;MACzC,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMqS,eAAc,GAAK1K,IAAI,IAAK;MAChC,IAAI,CAACjK,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAM2E,QAAO,GAAIpG,mBAAmB,CAACkI,IAAI,CAAC/I,EAAE;MAC5C,IAAIiH,QAAQ,EAAE;QACZnI,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAC,CAAC0B,QAAQ,CAAC1G,QAAQ,EAAE0G,QAAQ,CAACkI,WAAW,EAAElI,QAAQ,CAACuM,SAAS,CAAC;QACtF,OAAO3S,mBAAmB,CAACkI,IAAI,CAAC/I,EAAE;QAClC/B,SAAS,CAACkI,IAAI,CAAC,UAAU4C,IAAI,CAACvK,IAAI,EAAE;MACtC;IACF;;IAEA;IACA,MAAMkV,mBAAkB,GAAKC,KAAK,IAAK;MACrCA,KAAK,CAAC9P,OAAO,CAACkF,IAAG,IAAK;QACpB,IAAI,CAACnI,oBAAoB,CAAC0B,KAAK,CAACkJ,QAAQ,CAACzC,IAAI,CAAC/I,EAAE,CAAC,EAAE;UACjDqT,eAAe,CAACtK,IAAI;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAM6K,mBAAkB,GAAIA,CAAA,KAAM;MAChCjQ,MAAM,CAACyH,IAAI,CAACvK,mBAAmB,CAAC,CAACgD,OAAO,CAACgQ,MAAK,IAAK;QACjD,MAAM5M,QAAO,GAAIpG,mBAAmB,CAACgT,MAAM;QAC3C,IAAI5M,QAAO,IAAKnI,WAAW,CAACwD,KAAK,EAAE;UACjCxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAC,CAAC0B,QAAQ,CAAC1G,QAAQ,EAAE0G,QAAQ,CAACkI,WAAW,EAAElI,QAAQ,CAACuM,SAAS,CAAC;QACxF;MACF,CAAC;MACD;MACA7P,MAAM,CAACyH,IAAI,CAACvK,mBAAmB,CAAC,CAACgD,OAAO,CAACwH,GAAE,IAAK,OAAOxK,mBAAmB,CAACwK,GAAG,CAAC;MAC/EpN,SAAS,CAACkI,IAAI,CAAC,WAAW;IAC5B;;IAEA;IACA,MAAM2N,mBAAkB,GAAK/K,IAAI,IAAK;MACpC,IAAI,CAACjK,WAAW,CAACwD,KAAI,IAAK,CAACyG,IAAI,CAACyE,WAAU,IAAKzE,IAAI,CAACyE,WAAW,CAAC7E,MAAK,KAAM,CAAC,EAAE;MAE9E,IAAI;QACF,MAAMO,MAAK,GAAI,IAAIzG,MAAM,CAACD,IAAI,CAAC2H,MAAM,CAAC;QACtCpB,IAAI,CAACyE,WAAW,CAAC3J,OAAO,CAACoF,KAAI,IAAK;UAChCC,MAAM,CAACwC,MAAM,CAAC,CAACzC,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;QACtC,CAAC;QACDpE,WAAW,CAACwD,KAAK,CAACqJ,SAAS,CAACzC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3DjL,SAAS,CAACoH,OAAO,CAAC,YAAY0D,IAAI,CAACvK,IAAI,EAAE;MAC3C,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAM2S,oBAAmB,GAAKhL,IAAI,IAAK;MACrC;MACAkI,QAAQ,CAAC;;MAET;MACA5Q,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGyG,IAAI,CAACyE,WAAW;MACvChN,iBAAiB,CAAC8B,KAAI,GAAIyG,IAAI,CAAC6D,SAAQ,IAAK,OAAM;MAClDnM,cAAc,CAAC6B,KAAI,GAAIyG,IAAI,CAACiL,eAAc,IAAK,GAAE;MACjDtT,WAAW,CAAC4B,KAAI,GAAIyG,IAAI,CAACkL,YAAW,IAAK,EAAC;;MAE1C;MACApV,WAAW,CAACyD,KAAI,GAAI,cAAa;;MAEjC;MACA4R,iBAAiB,CAAC;MAElBjW,SAAS,CAACoH,OAAO,CAAC,UAAU0D,IAAI,CAACvK,IAAI,SAAS;IAChD;;IAEA;IACA,MAAM2V,0BAAyB,GAAKC,OAAO,IAAK;MAC9CxT,oBAAoB,CAAC0B,KAAI,GAAI8R,OAAM;IACrC;;IAEA;IACA,MAAMF,iBAAgB,GAAIA,CAACG,aAAY,GAAI,KAAK,KAAK;MACnD,IAAI,CAACvV,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIlC,WAAW,CAACgC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;UAChC7J,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAACjF,WAAW,CAACgC,KAAK;UAC1ChC,WAAW,CAACgC,KAAI,GAAI,EAAC;QACvB;QAEA,IAAI/B,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAACiD,MAAM,CAAChF,QAAQ,CAAC+B,KAAK;UACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;QACtB;QAEA,IAAIjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,KAAM,CAAC,EAAE;QAEnC,IAAI0L,aAAa,EAAE;UACjB;UACA,MAAM5H,UAAS,GAAIpM,UAAU,CAACiC,KAAK,CAAC,CAAC;UACrC,MAAMqP,QAAO,GAAItR,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI,CAAC;;UAE7D;UACA,IAAI8D,UAAS,IAAK,OAAOA,UAAU,CAACxJ,GAAE,KAAM,QAAO,IAAK,OAAOwJ,UAAU,CAACvJ,GAAE,KAAM,QAAO,IACrF,CAACuG,KAAK,CAACgD,UAAU,CAACxJ,GAAG,KAAK,CAACwG,KAAK,CAACgD,UAAU,CAACvJ,GAAG,CAAC,EAAE;YACpD,MAAMiM,WAAU,GAAI,IAAI1M,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;cACzCC,QAAQ,EAAE,CAACgI,UAAU,CAACxJ,GAAG,EAAEwJ,UAAU,CAACvJ,GAAG,CAAC;cAC1CwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJ4D,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQyH,UAAU,CAACxJ,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAKwH,UAAU,CAACvJ,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAG;cACzEf,MAAM,EAAE;YACV,CAAC;YACD5D,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAAC+J,WAAW;UACpC;;UAEA;UACA,IAAIwC,QAAO,IAAK,OAAOA,QAAQ,CAAC1O,GAAE,KAAM,QAAO,IAAK,OAAO0O,QAAQ,CAACzO,GAAE,KAAM,QAAO,IAC/E,CAACuG,KAAK,CAACkI,QAAQ,CAAC1O,GAAG,KAAK,CAACwG,KAAK,CAACkI,QAAQ,CAACzO,GAAG,MAC1CyO,QAAQ,CAAC1O,GAAE,KAAMwJ,UAAU,CAACxJ,GAAE,IAAK0O,QAAQ,CAACzO,GAAE,KAAMuJ,UAAU,CAACvJ,GAAG,CAAC,EAAE;YACxE,MAAMsQ,SAAQ,GAAI,IAAI/Q,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;cACvCC,QAAQ,EAAE,CAACkN,QAAQ,CAAC1O,GAAG,EAAE0O,QAAQ,CAACzO,GAAG,CAAC;cACtCwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJ4D,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQ2M,QAAQ,CAAC1O,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAK0M,QAAQ,CAACzO,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAG;cACrEf,MAAM,EAAE;YACV,CAAC;YACD5D,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACoO,SAAS;UAClC;QACF,OAAO;UACL;UACAnT,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACoF,KAAK,EAAEiD,KAAK,KAAK;YACzC;YACA,IAAI,CAACjD,KAAI,IAAK,OAAOA,KAAK,CAAChG,GAAE,KAAM,QAAO,IAAK,OAAOgG,KAAK,CAAC/F,GAAE,KAAM,QAAO,IACvEuG,KAAK,CAACR,KAAK,CAAChG,GAAG,KAAKwG,KAAK,CAACR,KAAK,CAAC/F,GAAG,CAAC,EAAE;cACxC7B,OAAO,CAACC,IAAI,CAAC,YAAY4K,KAAK,GAAG,EAAEjD,KAAK;cACxC;YACF;YAEA,MAAMqL,OAAM,GAAIpI,KAAI,KAAM;YAC1B,MAAMqI,KAAI,GAAIrI,KAAI,KAAM7L,UAAU,CAACiC,KAAK,CAACqG,MAAK,GAAI;;YAElD;YACA,MAAMpE,MAAK,GAAI,IAAI9B,MAAM,CAACD,IAAI,CAACgC,MAAM,CAAC;cACpCC,QAAQ,EAAE,CAACwE,KAAK,CAAChG,GAAG,EAAEgG,KAAK,CAAC/F,GAAG,CAAC;cAChCwB,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAInC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAACyP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE,CAAC;gBAChExP,KAAK,EAAE,sBAAsB3D,kBAAkB,CAAC;mEACGmT,OAAM,GAAI,EAAC,GAAI,EAAE,aAAaA,OAAM,GAAI,EAAC,GAAI,EAAE;2DACvDA,OAAM,GAAI,SAAQ,GAAKC,KAAI,GAAI,SAAQ,GAAI,SAAU;8GACFD,OAAM,GAAI,GAAE,GAAKC,KAAI,GAAI,GAAE,GAAIrI,KAAM;;iBAElI,CAAC,EAAE;gBACJnH,SAAS,EAAE,IAAItC,MAAM,CAACD,IAAI,CAACqC,IAAI,CAACyP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE;cACtE,CAAC,CAAC;cACFtP,KAAK,EAAE,GAAGsP,OAAM,GAAI,IAAG,GAAKC,KAAI,GAAI,IAAG,GAAI,MAAMrI,KAAK,EAAG,MAAMjD,KAAK,CAAChG,GAAG,CAACgC,OAAO,CAAC,CAAC,CAAC,KAAKgE,KAAK,CAAC/F,GAAG,CAAC+B,OAAO,CAAC,CAAC,CAAC,GAAG;cAC/Gf,MAAM,EAAE;YACV,CAAC;YAED5D,WAAW,CAACgC,KAAK,CAAC8C,IAAI,CAACb,MAAM;UAC/B,CAAC;QACH;;QAEA;QACA,IAAIjE,WAAW,CAACgC,KAAK,CAACqG,MAAK,GAAI,CAAC,EAAE;UAChC7J,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAAC7E,WAAW,CAACgC,KAAK;QACzC;;QAEA;QACA,IAAI3B,QAAQ,CAAC2B,KAAI,IAAK3B,QAAQ,CAAC2B,KAAK,CAACyG,IAAI,EAAE;UACzC,IAAI+E,QAAO,GAAInN,QAAQ,CAAC2B,KAAK,CAACyG,IAAG;;UAEjC;UACA,IAAI,OAAO+E,QAAO,KAAM,QAAQ,EAAE;YAChC,IAAI;cACFA,QAAO,GAAIhG,IAAI,CAAC0M,KAAK,CAAC1G,QAAQ;YAChC,EAAE,OAAO9K,CAAC,EAAE;cACV3B,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE4B,CAAC;cAC5B8K,QAAO,GAAI,EAAC;YACd;UACF;UAEA,IAAIvE,KAAK,CAACC,OAAO,CAACsE,QAAQ,KAAKA,QAAQ,CAACnF,MAAK,GAAI,CAAC,EAAE;YAClD;YACA,MAAMsG,UAAS,GAAInB,QAAQ,CAACzL,GAAG,CAAC4G,KAAI,IAAK;cACvC,IAAI,OAAOA,KAAI,KAAM,QAAO,IAAKA,KAAK,CAAChG,GAAE,KAAMwR,SAAQ,IAAKxL,KAAK,CAAC/F,GAAE,KAAMuR,SAAS,EAAE;gBACnF,MAAMxR,GAAE,GAAIyR,UAAU,CAACzL,KAAK,CAAChG,GAAG;gBAChC,MAAMC,GAAE,GAAIwR,UAAU,CAACzL,KAAK,CAAC/F,GAAG;gBAChC,IAAI,CAACuG,KAAK,CAACxG,GAAG,KAAK,CAACwG,KAAK,CAACvG,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF,OAAO,IAAIqG,KAAK,CAACC,OAAO,CAACP,KAAK,KAAKA,KAAK,CAACN,MAAK,IAAK,CAAC,EAAE;gBACpD,MAAM1F,GAAE,GAAIyR,UAAU,CAACzL,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAM/F,GAAE,GAAIwR,UAAU,CAACzL,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAACQ,KAAK,CAACxG,GAAG,KAAK,CAACwG,KAAK,CAACvG,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF;cACA7B,OAAO,CAACC,IAAI,CAAC,WAAW,EAAE2H,KAAK;cAC/B,OAAO,IAAG;YACZ,CAAC,CAAC,CAAC4B,MAAM,CAACiI,KAAI,IAAKA,KAAI,KAAM,IAAI;YAEjCzR,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAE0M,UAAU,CAACtG,MAAM;YAE1C,IAAIsG,UAAU,CAACtG,MAAK,GAAI,CAAC,EAAE;cACzB,MAAMgM,WAAU,GAAI,IAAIlS,MAAM,CAACD,IAAI,CAACuJ,QAAQ,CAAC;gBAC3ChD,IAAI,EAAEkG,UAAU;gBAChB5I,WAAW,EAAE,SAAS;gBACtBC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE,GAAG;gBAClByF,WAAW,EAAE,OAAO;gBACpBsH,OAAO,EAAE;cACX,CAAC;cAED/S,QAAQ,CAAC+B,KAAI,GAAIqS,WAAU;cAC3B7V,WAAW,CAACwD,KAAK,CAAC6C,GAAG,CAACwP,WAAW;YACnC;UACF;QACF;MAEF,EAAE,OAAOvT,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;MACjC;IACF;;IAEA;IACA,MAAMwT,yBAAwB,GAAKC,WAAW,IAAK;MACjD,IAAI;QACF;QACA5D,QAAQ,CAAC;;QAET;QACA5Q,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGuS,WAAW,CAACxU,UAAU;;QAE7C;QACAG,iBAAiB,CAAC8B,KAAI,GAAIuS,WAAW,CAACjI,SAAQ;QAC9CnM,cAAc,CAAC6B,KAAI,GAAIuS,WAAW,CAACpU,cAAa;QAChDC,WAAW,CAAC4B,KAAI,GAAIuS,WAAW,CAACnU,WAAU;;QAE1C;QACAC,QAAQ,CAAC2B,KAAI,GAAIuS,WAAW,CAAClU,QAAO;;QAEpC;QACAuT,iBAAiB,CAAC,IAAI;;QAEtB;QACA9M,UAAU,CAAC,MAAM;UACfuL,SAAS,CAAC;QACZ,CAAC,EAAE,GAAG;QAENtR,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEsS,WAAW;MAEtC,EAAE,OAAOzT,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;MAC5B;IACF;IAEAxD,SAAS,CAAC,MAAM;MACd;MACAyD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACL3D,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZE,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MACRC,oBAAoB;MAEpB2C,cAAc;MACdnB,WAAW;MACXW,UAAU;MACVsB,aAAa;MACbiB,YAAY;MACZhB,aAAa;MACbkB,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBE,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACXwE,UAAU;MACVG,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdzB,aAAa;MACbgC,qBAAqB;MACrBG,UAAU;MACVQ,WAAW;MACXM,QAAQ;MACRsE,WAAW;MACXI,QAAQ;MACRC,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXiB,SAAS;MACTf,iBAAiB;MAEjB;MACAyB,eAAe;MACfI,eAAe;MACfC,mBAAmB;MACnBE,mBAAmB;MACnBE,mBAAmB;MACnBC,oBAAoB;MACpBI,0BAA0B;MAC1BS,yBAAyB;MACzBV,iBAAiB;MAEjB;MACAY,iBAAiB,EAAG7U,IAAI,IAAKsB,gBAAgB,CAACtB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnEuW,kBAAkB,EAAG7U,KAAK,IAAK4B,iBAAiB,CAAC5B,KAAK,CAAC,EAAE1B,IAAG,IAAK;IACnE;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2adfae73815a72367826ebc3b62e1f62e761c4a8b5b3fd278d67400deb5c1f4e.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2adfae73815a72367826ebc3b62e1f62e761c4a8b5b3fd278d67400deb5c1f4e.json
new file mode 100644
index 00000000..de07b60d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2adfae73815a72367826ebc3b62e1f62e761c4a8b5b3fd278d67400deb5c1f4e.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"shared-map-container\"\n};\nconst _hoisted_2 = {\n id: \"sharedMap\",\n class: \"map-area\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"map-loading\"\n};\nconst _hoisted_4 = {\n class: \"map-controls\"\n};\nconst _hoisted_5 = {\n class: \"control-item\"\n};\nconst _hoisted_6 = {\n class: \"control-item\"\n};\nconst _hoisted_7 = {\n class: \"control-item\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 地图容器 \"), _createElementVNode(\"div\", _hoisted_2, [!$setup.mapLoaded ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_text, null, {\n default: _withCtx(() => _cache[3] || (_cache[3] = [_createTextVNode(\"地图加载中...\")])),\n _: 1 /* STABLE */,\n __: [3]\n })])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 基本地图控制 \"), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: \"map-control-card\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_cache[7] || (_cache[7] = _createElementVNode(\"h4\", null, \"地图图层\", -1 /* HOISTED */)), _createVNode(_component_el_radio_group, {\n modelValue: $setup.currentMapStyle,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.currentMapStyle = $event),\n onChange: $setup.changeMapStyle,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n value: \"normal\"\n }, {\n default: _withCtx(() => _cache[4] || (_cache[4] = [_createTextVNode(\"标准地图\")])),\n _: 1 /* STABLE */,\n __: [4]\n }), _createVNode(_component_el_radio_button, {\n value: \"satellite\"\n }, {\n default: _withCtx(() => _cache[5] || (_cache[5] = [_createTextVNode(\"卫星地图\")])),\n _: 1 /* STABLE */,\n __: [5]\n }), _createVNode(_component_el_radio_button, {\n value: \"dark\"\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"暗色地图\")])),\n _: 1 /* STABLE */,\n __: [6]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_6, [_cache[10] || (_cache[10] = _createElementVNode(\"h4\", null, \"显示模式\", -1 /* HOISTED */)), _createVNode(_component_el_radio_group, {\n modelValue: $setup.viewMode,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.viewMode = $event),\n onChange: $setup.changeViewMode,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n value: \"2D\"\n }, {\n default: _withCtx(() => _cache[8] || (_cache[8] = [_createTextVNode(\"2D视图\")])),\n _: 1 /* STABLE */,\n __: [8]\n }), _createVNode(_component_el_radio_button, {\n value: \"3D\"\n }, {\n default: _withCtx(() => _cache[9] || (_cache[9] = [_createTextVNode(\"3D视图\")])),\n _: 1 /* STABLE */,\n __: [9]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_7, [_cache[16] || (_cache[16] = _createElementVNode(\"h4\", null, \"图层叠加\", -1 /* HOISTED */)), _createVNode(_component_el_checkbox_group, {\n modelValue: $setup.overlayLayers,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.overlayLayers = $event),\n onChange: $setup.updateOverlayLayers\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n value: \"traffic\"\n }, {\n default: _withCtx(() => _cache[11] || (_cache[11] = [_createTextVNode(\"交通流量\")])),\n _: 1 /* STABLE */,\n __: [11]\n }), _createVNode(_component_el_checkbox, {\n value: \"buildings\"\n }, {\n default: _withCtx(() => _cache[12] || (_cache[12] = [_createTextVNode(\"3D建筑\")])),\n _: 1 /* STABLE */,\n __: [12]\n }), _createVNode(_component_el_checkbox, {\n value: \"terrain\"\n }, {\n default: _withCtx(() => _cache[13] || (_cache[13] = [_createTextVNode(\"地形等高线\")])),\n _: 1 /* STABLE */,\n __: [13]\n }), _createVNode(_component_el_checkbox, {\n value: \"weather\"\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\"天气信息\")])),\n _: 1 /* STABLE */,\n __: [14]\n }), _createVNode(_component_el_checkbox, {\n value: \"threats\"\n }, {\n default: _withCtx(() => _cache[15] || (_cache[15] = [_createTextVNode(\"威胁区域\")])),\n _: 1 /* STABLE */,\n __: [15]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])])]),\n _: 1 /* STABLE */\n })])]);\n}","map":{"version":3,"names":["class","id","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","$setup","mapLoaded","_hoisted_3","_createVNode","_component_el_text","_cache","_hoisted_4","_component_el_card","size","_hoisted_5","_component_el_radio_group","currentMapStyle","$event","onChange","changeMapStyle","_component_el_radio_button","value","_hoisted_6","viewMode","changeViewMode","_hoisted_7","_component_el_checkbox_group","overlayLayers","updateOverlayLayers","_component_el_checkbox"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\SharedMap.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n
\r\n 地图加载中...\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
地图图层
\r\n \r\n 标准地图\r\n 卫星地图\r\n 暗色地图\r\n \r\n \r\n \r\n \r\n
显示模式
\r\n \r\n 2D视图\r\n 3D视图\r\n \r\n \r\n \r\n \r\n
图层叠加
\r\n \r\n 交通流量\r\n 3D建筑\r\n 地形等高线\r\n 天气信息\r\n 威胁区域\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAsB;;EAE1BC,EAAE,EAAC,WAAW;EAACD,KAAK,EAAC;;;;EACDA,KAAK,EAAC;;;EAM1BA,KAAK,EAAC;AAAc;;EAEhBA,KAAK,EAAC;AAAc;;EASpBA,KAAK,EAAC;AAAc;;EAQpBA,KAAK,EAAC;AAAc;;;;;;;;uBA5B/BE,mBAAA,CAwCM,OAxCNC,UAwCM,GAvCJC,mBAAA,UAAa,EACbC,mBAAA,CAIM,OAJNC,UAIM,G,CAHQC,MAAA,CAAAC,SAAS,I,cAArBN,mBAAA,CAEM,OAFNO,UAEM,GADJC,YAAA,CAA2BC,kBAAA;sBAAlB,MAAQC,MAAA,QAAAA,MAAA,O,iBAAR,UAAQ,E;;;+CAIrBR,mBAAA,YAAe,EACfC,mBAAA,CA8BM,OA9BNQ,UA8BM,GA7BJH,YAAA,CA4BUI,kBAAA;IA5BDd,KAAK,EAAC,kBAAkB;IAACe,IAAI,EAAC;;sBACrC,MAOM,CAPNV,mBAAA,CAOM,OAPNW,UAOM,G,0BANJX,mBAAA,CAAa,YAAT,MAAI,sBACRK,YAAA,CAIiBO,yBAAA;kBAJQV,MAAA,CAAAW,eAAe;iEAAfX,MAAA,CAAAW,eAAe,GAAAC,MAAA;MAAGC,QAAM,EAAEb,MAAA,CAAAc,cAAc;MAAEN,IAAI,EAAC;;wBACtE,MAAsD,CAAtDL,YAAA,CAAsDY,0BAAA;QAArCC,KAAK,EAAC;MAAQ;0BAAC,MAAIX,MAAA,QAAAA,MAAA,O,iBAAJ,MAAI,E;;;UACpCF,YAAA,CAAyDY,0BAAA;QAAxCC,KAAK,EAAC;MAAW;0BAAC,MAAIX,MAAA,QAAAA,MAAA,O,iBAAJ,MAAI,E;;;UACvCF,YAAA,CAAoDY,0BAAA;QAAnCC,KAAK,EAAC;MAAM;0BAAC,MAAIX,MAAA,QAAAA,MAAA,O,iBAAJ,MAAI,E;;;;;qDAItCP,mBAAA,CAMM,OANNmB,UAMM,G,4BALJnB,mBAAA,CAAa,YAAT,MAAI,sBACRK,YAAA,CAGiBO,yBAAA;kBAHQV,MAAA,CAAAkB,QAAQ;iEAARlB,MAAA,CAAAkB,QAAQ,GAAAN,MAAA;MAAGC,QAAM,EAAEb,MAAA,CAAAmB,cAAc;MAAEX,IAAI,EAAC;;wBAC/D,MAAkD,CAAlDL,YAAA,CAAkDY,0BAAA;QAAjCC,KAAK,EAAC;MAAI;0BAAC,MAAIX,MAAA,QAAAA,MAAA,O,iBAAJ,MAAI,E;;;UAChCF,YAAA,CAAkDY,0BAAA;QAAjCC,KAAK,EAAC;MAAI;0BAAC,MAAIX,MAAA,QAAAA,MAAA,O,iBAAJ,MAAI,E;;;;;qDAIpCP,mBAAA,CASM,OATNsB,UASM,G,4BARJtB,mBAAA,CAAa,YAAT,MAAI,sBACRK,YAAA,CAMoBkB,4BAAA;kBANQrB,MAAA,CAAAsB,aAAa;iEAAbtB,MAAA,CAAAsB,aAAa,GAAAV,MAAA;MAAGC,QAAM,EAAEb,MAAA,CAAAuB;;wBAClD,MAA+C,CAA/CpB,YAAA,CAA+CqB,sBAAA;QAAlCR,KAAK,EAAC;MAAS;0BAAC,MAAIX,MAAA,SAAAA,MAAA,Q,iBAAJ,MAAI,E;;;UACjCF,YAAA,CAAiDqB,sBAAA;QAApCR,KAAK,EAAC;MAAW;0BAAC,MAAIX,MAAA,SAAAA,MAAA,Q,iBAAJ,MAAI,E;;;UACnCF,YAAA,CAAgDqB,sBAAA;QAAnCR,KAAK,EAAC;MAAS;0BAAC,MAAKX,MAAA,SAAAA,MAAA,Q,iBAAL,OAAK,E;;;UAClCF,YAAA,CAA+CqB,sBAAA;QAAlCR,KAAK,EAAC;MAAS;0BAAC,MAAIX,MAAA,SAAAA,MAAA,Q,iBAAJ,MAAI,E;;;UACjCF,YAAA,CAA+CqB,sBAAA;QAAlCR,KAAK,EAAC;MAAS;0BAAC,MAAIX,MAAA,SAAAA,MAAA,Q,iBAAJ,MAAI,E","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2beb63161d7c31ac1c3185d83cf0ddcfcda71f34750a2b749e2bd9e6f4864e4f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2beb63161d7c31ac1c3185d83cf0ddcfcda71f34750a2b749e2bd9e6f4864e4f.json
new file mode 100644
index 00000000..5577bc03
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2beb63161d7c31ac1c3185d83cf0ddcfcda71f34750a2b749e2bd9e6f4864e4f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1,\n clickable: isClickable // 在非威胁区模式下完全禁用点击\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域交互状态已更新,可点击: ${isClickable},当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n };\n\n // 保存事件处理函数引用,用于动态管理\n overlay._zoneClickHandler = handleZoneClick;\n\n // 只在威胁区模式下绑定点击事件\n if (activePanel.value === 'threatZone') {\n overlay.on('click', handleZoneClick);\n }\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","clickable","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","_zoneClickHandler","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2cfd6fdf4f9c45326c93f35fd71765ccd8056dd3d72f70e55ced75d7c250e921.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2cfd6fdf4f9c45326c93f35fd71765ccd8056dd3d72f70e55ced75d7c250e921.json
new file mode 100644
index 00000000..314da991
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/2cfd6fdf4f9c45326c93f35fd71765ccd8056dd3d72f70e55ced75d7c250e921.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: _ctx.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: _ctx.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => _ctx.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: _ctx.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString(_ctx.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => _ctx.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.confirmLoadPath,\n disabled: !_ctx.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => _ctx.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: _ctx.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': _ctx.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => _ctx.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: _ctx.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => _ctx.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString(_ctx.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), _ctx.filteredHistoryPaths.length === 0 && !_ctx.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, _ctx.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","$setup","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3502b6fea689f7bb86948262d7b340f14199a78bf7498b7f88ab2cc02a41a637.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3502b6fea689f7bb86948262d7b340f14199a78bf7498b7f88ab2cc02a41a637.json
new file mode 100644
index 00000000..c661fe41
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3502b6fea689f7bb86948262d7b340f14199a78bf7498b7f88ab2cc02a41a637.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3741f338f48a0c9932818043c8d2c9fb9ff28164bdf6e37e29b7ac9d0165b303.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3741f338f48a0c9932818043c8d2c9fb9ff28164bdf6e37e29b7ac9d0165b303.json
new file mode 100644
index 00000000..0f73c5f5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3741f338f48a0c9932818043c8d2c9fb9ff28164bdf6e37e29b7ac9d0165b303.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/390c0f12a2739dd510b2ffc932bd9faf4f2b642d3fac476bd171091e1a20e3f1.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/390c0f12a2739dd510b2ffc932bd9faf4f2b642d3fac476bd171091e1a20e3f1.json
new file mode 100644
index 00000000..f05f79c7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/390c0f12a2739dd510b2ffc932bd9faf4f2b642d3fac476bd171091e1a20e3f1.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: _ctx.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: _ctx.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => _ctx.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: _ctx.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString(_ctx.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => _ctx.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.confirmLoadPath,\n disabled: !_ctx.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => _ctx.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: _ctx.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': _ctx.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => _ctx.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: _ctx.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => _ctx.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString(_ctx.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), _ctx.filteredHistoryPaths.length === 0 && !_ctx.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, _ctx.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","$setup","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/390fe4a8d7b75532091fae98168c9f791fc74df87de969762307dee7b2496f35.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/390fe4a8d7b75532091fae98168c9f791fc74df87de969762307dee7b2496f35.json
new file mode 100644
index 00000000..f332a217
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/390fe4a8d7b75532091fae98168c9f791fc74df87de969762307dee7b2496f35.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3a9bb327b10c5a71f15c1cb92ab7b8a7cfc09371abf151acbef693786a2952d2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3a9bb327b10c5a71f15c1cb92ab7b8a7cfc09371abf151acbef693786a2952d2.json
new file mode 100644
index 00000000..93604928
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3a9bb327b10c5a71f15c1cb92ab7b8a7cfc09371abf151acbef693786a2952d2.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3bf7d3bcbcbd4b8f6e2b82b93d1a7e2d48a936a186d658ef454ac0521ab2bbb0.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3bf7d3bcbcbd4b8f6e2b82b93d1a7e2d48a936a186d658ef454ac0521ab2bbb0.json
new file mode 100644
index 00000000..6792fef7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3bf7d3bcbcbd4b8f6e2b82b93d1a7e2d48a936a186d658ef454ac0521ab2bbb0.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning') {\n // 路径规划 - 直接添加路径点,无需检查addMode\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAoKA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAI,QAAS,KAAI;AAC5D,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAS,EAAEC,YAAW,QAAS,cAAa;AACrD,OAAOC,SAAQ,MAAO,6BAA4B;AAClD,OAAOC,aAAY,MAAO,4CAA2C;AACrE,OAAOC,eAAc,MAAO,8CAA6C;AACzE,OAAOC,iBAAgB,MAAO,gDAA+C;AAC7E,OAAOC,gBAAe,MAAO,+CAA8C;AAE3E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVN,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIX,QAAQ,CAAC;IACvB,MAAMY,YAAW,GAAIjB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMmB,WAAU,GAAInB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMoB,OAAM,GAAIpB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMqB,YAAW,GAAIrB,GAAG,CAAC,EAAE;IAC3B,MAAMsB,aAAY,GAAItB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMuB,WAAU,GAAIvB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMwB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIzB,GAAG,CAAC,IAAI;IACzB,MAAM0B,iBAAgB,GAAI1B,GAAG,CAAC,OAAO;IACrC,MAAM2B,WAAU,GAAI3B,GAAG,CAAC,QAAQ;IAChC,MAAM4B,YAAW,GAAI5B,GAAG,CAAC,IAAI;IAC7B,MAAM6B,iBAAgB,GAAI7B,GAAG,CAAC,EAAE;IAChC,MAAM8B,eAAc,GAAI9B,GAAG,CAAC,CAAC,IAAI+B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIjC,GAAG,CAAC,IAAI;IAC/B,MAAMkC,aAAY,GAAIlC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMmC,iBAAgB,GAAInC,GAAG,CAAC,KAAK;IACnC,MAAMoC,QAAO,GAAIpC,GAAG,CAAC;MACnBqC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAI1C,GAAG,CAAC,EAAE;IACzB,MAAM2C,WAAU,GAAI3C,GAAG,CAAC,EAAE;IAC1B,MAAM4C,QAAO,GAAI5C,GAAG,CAAC,IAAI;IACzB,MAAM6C,iBAAgB,GAAI7C,GAAG,CAAC,OAAO;IACrC,MAAM8C,cAAa,GAAI9C,GAAG,CAAC,GAAG;IAC9B,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMiD,oBAAmB,GAAIjD,GAAG,CAAC,EAAE;IACnC,MAAMkD,mBAAkB,GAAI,CAAC,GAAG;;IAEhC;IACA,MAAMC,SAAQ,GAAInD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMoD,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,gBAAe,GAAI;MACvBC,KAAK,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAEpD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAErD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEzD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAE1D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAE3D,IAAI,EAAE,MAAM;QAAEwD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BvD,WAAW,CAACwD,KAAI,GAAID,GAAE;MACtBhB,OAAO,CAACkB,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACF1B,SAAS,CAACwB,KAAI,GAAI,IAAIE,IAAI,CAACE,SAAS,CAACL,GAAG;UACxCvB,SAAS,CAACwB,KAAK,CAACK,EAAE,CAAC,MAAM,EAAEC,cAAc;UACzCvB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;QAC9B,EAAE,OAAOnB,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK;QACxC;MACF;;MAEA;MACAyB,WAAW,CAAC;IACd;;IAEA;IACA,MAAMA,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACFxB,OAAO,CAACkB,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMO,eAAe,CAAC;QAEtBzB,OAAO,CAACkB,GAAG,CAAC,UAAU;MAExB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM2B,UAAS,GAAKC,CAAC,IAAK;MACxB,MAAM;QAAEC,GAAG;QAAEC;MAAI,IAAIF,CAAC,CAACG,MAAK;MAC5B9B,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;QAAEU,GAAG;QAAEC,GAAG;QAAErE,WAAW,EAAEA,WAAW,CAACyD,KAAK;QAAEvD,OAAO,EAAEA,OAAO,CAACuD;MAAM,CAAC;MAE3F,IAAIzD,WAAW,CAACyD,KAAI,KAAM,UAAS,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAIrE,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQzE,WAAW,CAACyD,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAQ,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA;MACJ;IACF;;IAEA;IACA,MAAMS,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACAxE,OAAO,CAACuD,KAAI,GAAI,KAAI;MACpBlD,QAAQ,CAACkD,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAC,4BAA4B,CAAC;;MAE7B;MACAH,uBAAuB,CAAC;IAC1B;;IAEA;IACA,MAAMG,4BAA2B,GAAIA,CAAA,KAAM;MACzC,MAAMC,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;MAErDqB,MAAM,CAACC,MAAM,CAACzE,YAAY,CAAC,CAAC0E,OAAO,CAACC,OAAM,IAAK;QAC7C,IAAIA,OAAM,IAAKA,OAAO,CAACC,UAAU,EAAE;UACjCD,OAAO,CAACC,UAAU,CAAC;YACjBC,SAAS,EAAEN,WAAW;YACtBO,MAAM,EAAEP,WAAU,GAAI,SAAQ,GAAI,SAAS;YAC3CQ,MAAM,EAAER,WAAU,GAAI,GAAE,GAAI;UAC9B,CAAC;QACH;MACF,CAAC;MAEDrC,OAAO,CAACkB,GAAG,CAAC,iBAAiBmB,WAAW,EAAE;IAC5C;;IAEA;;IAEA;IACA,MAAMS,aAAY,GAAIA,CAAA,KAAM;MAC1BpF,OAAO,CAACuD,KAAI,GAAI,CAACvD,OAAO,CAACuD,KAAI;MAC7B;MACA,IAAIzD,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;QACtClD,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;UACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;;IAIA;IACA,MAAMY,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIvF,WAAW,CAACyD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIzD,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C,OAAO,WAAU;MACnB;MACA,OAAO,EAAC;IACV;;IAEA;;IAEA;IACA,MAAMc,cAAa,GAAIA,CAACH,GAAG,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACpE,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAM6B,MAAK,GAAI,IAAI7B,IAAI,CAAC8B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACtB,GAAG,EAAEC,GAAG,CAAC;QACpBsB,IAAI,EAAE,IAAIhC,IAAI,CAACiC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI7D,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACF8D,SAAS,EAAE,IAAIrC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,WAAW7B,GAAG,CAAC8B,OAAO,CAAC,CAAC,CAAC,KAAK7B,GAAG,CAAC6B,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAV,MAAM,CAAC1B,EAAE,CAAC,OAAO,EAAE,MAAM;QACvB1E,SAAS,CAAC;UACR+G,OAAO,EAAE,UAAU/B,GAAG,CAAC8B,OAAO,CAAC,CAAC,CAAC,KAAK7B,GAAG,CAAC6B,OAAO,CAAC,CAAC,CAAC,EAAE;UACtD9E,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACZ,MAAM;MAC5BpF,aAAa,CAACqD,KAAK,CAAC4C,IAAI,CAACb,MAAM;MAC/BrF,YAAY,CAACsD,KAAK,CAAC4C,IAAI,CAAC;QAAEjC,GAAG;QAAEC;MAAI,CAAC;MAEpCjF,SAAS,CAACkH,OAAO,CAAC,WAAWlC,GAAG,CAAC8B,OAAO,CAAC,CAAC,CAAC,KAAK7B,GAAG,CAAC6B,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMK,YAAW,GAAIA,CAAA,KAAM;MACzBnG,aAAa,CAACqD,KAAK,CAACuB,OAAO,CAACQ,MAAK,IAAK;QACpCvF,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAChB,MAAM;MACjC,CAAC;MACDpF,aAAa,CAACqD,KAAI,GAAI,EAAC;MACvBtD,YAAY,CAACsD,KAAI,GAAI,EAAC;MACtBrE,SAAS,CAACkH,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMG,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIlG,QAAQ,CAACkD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMiD,sBAAqB,GAAKtF,IAAI,IAAK;MACvCZ,iBAAiB,CAACiD,KAAI,GAAIrC,IAAG;IAC/B;;IAEA;IACA,MAAMuF,uBAAsB,GAAKtF,KAAK,IAAK;MACzCZ,WAAW,CAACgD,KAAI,GAAIpC,KAAI;IAC1B;;IAEA;IACA,MAAMuF,kBAAiB,GAAKC,MAAM,IAAK;MACrCnG,YAAY,CAAC+C,KAAI,GAAIoD,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxCpG,iBAAiB,CAAC8C,KAAI,GAAIsD,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvCrG,eAAe,CAAC6C,KAAI,GAAIwD,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAAClF,SAAS,CAACwB,KAAK,EAAE;QACpBrE,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIhC,QAAQ,CAACkD,KAAI,KAAM0D,IAAI,EAAE;QAC3B;QACA5G,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAI;UACFxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOpC,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAnD,SAAS,CAACgI,IAAI,CAAC,SAAS;QACxB;MACF;MAEA7G,QAAQ,CAACkD,KAAI,GAAI0D,IAAG;MACpBjH,OAAO,CAACuD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAM4D,OAAM,GAAI;QACdC,WAAW,EAAE5E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC5D2E,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAE/E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC1D8E,WAAW,EAAEzE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;MACpD;MAEA,IAAI;QACFX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEyD,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACXlF,SAAS,CAACwB,KAAK,CAACkE,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZpF,SAAS,CAACwB,KAAK,CAACmE,OAAO,CAACP,OAAO;YAC/B;UACF,KAAK,WAAW;YACdpF,SAAS,CAACwB,KAAK,CAACoE,SAAS,CAACR,OAAO;YACjC;QACJ;QAEAjI,SAAS,CAACgI,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOlE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1BhC,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAO+D,KAAK,IAAK;MACtC;MACA,MAAM7C,OAAM,GAAI/F,KAAK,CAAC4I,KAAK,CAACC,GAAG;MAE/BvF,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuB,OAAO;MACjCzC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAEuB,OAAO,CAAC+C,SAAQ,IAAK/C,OAAO,CAACgD,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAIjI,WAAW,CAACwD,KAAK,CAAC0E,cAAc,CAAC,SAAS;QAC3D3F,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEwE,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBd,WAAW,EAAE5E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC5D2E,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAE/E,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC1D8E,WAAW,EAAEzE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE0E,YAAY;QACnCnD,OAAO,CAACC,UAAU,CAACkD,YAAY;;QAE/B;QACAC,UAAU,CAAC,MAAM;UACfpI,WAAW,CAACwD,KAAK,CAAC6E,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAEN9F,OAAO,CAACkB,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMhB,QAAO,GAAIgH,sBAAsB,CAACtD,OAAO;;MAE/C;MACA,IAAI,CAACzE,iBAAiB,CAACiD,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE/B,iBAAiB,CAACiD,KAAK;QAChDrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC9B,WAAW,CAACgD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE9B,WAAW,CAACgD,KAAK;QAC1CrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChB,QAAQ,EAAE;QACbiB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBnD,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAMiG,QAAO,GAAI;QACfpH,IAAI,EAAEZ,iBAAiB,CAACiD,KAAK;QAC7BpC,KAAK,EAAEZ,WAAW,CAACgD,KAAK;QACxBnC,WAAW,EAAEX,iBAAiB,CAAC8C,KAAI,IAAK,EAAE;QAC1CgF,SAAS,EAAE,CAAC,GAAG7H,eAAe,CAAC6C,KAAK,CAAC;QAAE;QACvClC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFiB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE8E,QAAQ;QAClChG,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAElD,iBAAiB,CAACiD,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEjD,WAAW,CAACgD,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE/C,iBAAiB,CAAC8C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEnC,QAAQ;;QAE7B;QACA,MAAMmH,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;UAChDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,QAAQ;QAC/B,CAAC;QAEDhG,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEgF,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE5D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC7G,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE6G,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnChH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE6F,MAAM;QAE9B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAMmD,IAAG,GAAIF,MAAM,CAACG,IAAG;;UAEvB;UACAzJ,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAACvB,OAAO;;UAEhC;UACA0E,qBAAqB,CAACF,IAAI;UAE1BrK,SAAS,CAACkH,OAAO,CAAC,MAAM5D,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAAC9D,IAAI,IAAI;UAC1E6C,OAAO,CAACkB,GAAG,CAAC,kBAAkB,EAAE+F,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO5D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC4D,OAAO;;QAE3C;QACAlG,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAACvB,OAAO;MAClC;;MAEA;MACA1E,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAnC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErD,WAAW,CAACoD,KAAK,CAACmG,MAAM;IAClD;IAEA,MAAMrB,sBAAqB,GAAKtD,OAAO,IAAK;MAC1CzC,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuB,OAAO,CAACgD,UAAS,IAAKhD,OAAO,CAAC+C,SAAS;MAEjE,IAAI;QACF,IAAI/C,OAAO,CAACgD,UAAS,KAAM,aAAY,IAAKhD,OAAO,CAAC+C,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM6B,MAAK,GAAI5E,OAAO,CAAC6E,SAAS,CAAC;UACjC,MAAMjD,MAAK,GAAI5B,OAAO,CAAC8E,SAAS,CAAC;UACjCvH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;YAAEmG,MAAM;YAAEhD;UAAO,CAAC;UACzC,OAAO;YACLzF,IAAI,EAAE,QAAQ;YACdyI,MAAM,EAAE,CAACA,MAAM,CAACzF,GAAG,EAAEyF,MAAM,CAACxF,GAAG,CAAC;YAChCwC,MAAM,EAAEA;UACV;QACF,OAAO,IAAI5B,OAAO,CAACgD,UAAS,KAAM,cAAa,IAAKhD,OAAO,CAAC+C,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAMgC,IAAG,GAAI/E,OAAO,CAACgF,OAAO,CAAC;UAC7BzH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsG,IAAI;UAC5B,OAAO;YACL5I,IAAI,EAAE,SAAS;YACf4I,IAAI,EAAEA,IAAI,CAACxG,GAAG,CAAC0G,KAAI,IAAK,CAACA,KAAK,CAAC9F,GAAG,EAAE8F,KAAK,CAAC7F,GAAG,CAAC;UAChD;QACF,OAAO,IAAIY,OAAO,CAACgD,UAAS,KAAM,gBAAe,IAAKhD,OAAO,CAAC+C,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMmC,MAAK,GAAIlF,OAAO,CAACmF,SAAS,CAAC;UACjC5H,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEyG,MAAM;UAC7B,OAAO;YACL/I,IAAI,EAAE,WAAW;YACjB+I,MAAM,EAAE,CAACA,MAAM,CAACE,YAAY,CAAC,CAAC,CAACjG,GAAG,EAAE+F,MAAM,CAACE,YAAY,CAAC,CAAC,CAAChG,GAAG,EACrD8F,MAAM,CAACG,YAAY,CAAC,CAAC,CAAClG,GAAG,EAAE+F,MAAM,CAACG,YAAY,CAAC,CAAC,CAACjG,GAAG;UAC9D;QACF;MACF,EAAE,OAAO9B,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE0C,OAAO,CAACgD,UAAS,IAAKhD,OAAO,CAAC+C,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAM/D,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFzB,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,0BAA0B;QAEtC,MAAMgF,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChDnG,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEgF,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE9D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC7G,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE6G,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnChH,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE6F,MAAM;QAEhC,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB9D,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAE6F,MAAM,CAACG,IAAI;;UAEtC;UACAa,aAAa,CAAC,IAAI;;UAElB;UACAhB,MAAM,CAACG,IAAI,CAAC1E,OAAO,CAACyE,IAAG,IAAK;YAC1BE,qBAAqB,CAACF,IAAI;UAC5B,CAAC;UAEDjH,OAAO,CAACkB,GAAG,CAAC,QAAQ6F,MAAM,CAACG,IAAI,CAACE,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAIN,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO5D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC4D,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMwD,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAACxJ,WAAW,CAACwD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;;MAEA;MACA,IAAI,CAACkH,IAAG,IAAK,CAACA,IAAI,CAAClI,QAAQ,EAAE;QAC3BiB,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEkH,IAAI;QAC9B;MACF;MAEA,IAAI;QACFjH,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAE+F,IAAI;QAE/B,MAAM9F,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAIsB,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAMJ,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;QACrD,MAAM2E,YAAW,GAAI;UACnBd,WAAW,EAAE5E,gBAAgB,CAAC+G,IAAI,CAACrI,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC5D2E,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAE/E,gBAAgB,CAAC+G,IAAI,CAACrI,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC1D8E,WAAW,EAAEzE,iBAAiB,CAACwG,IAAI,CAACpI,KAAK,CAAC,EAAE8B,OAAM,IAAK,GAAG;UAC1D;UACAgC,SAAS,EAAEN,WAAW;UACtB;UACAO,MAAM,EAAEP,WAAU,GAAI,SAAQ,GAAI,SAAS;UAC3C;UACAQ,MAAM,EAAER,WAAU,GAAI,GAAE,GAAI;QAC9B;QAEArC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE0E,YAAY;QACpC5F,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,IAAI,CAAClI,QAAQ;;QAErC;QACA,IAAIkI,IAAI,CAAClI,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnC;UACA,IAAI,CAACqI,IAAI,CAAClI,QAAQ,CAACsI,MAAK,IAAK,CAACW,KAAK,CAACC,OAAO,CAAChB,IAAI,CAAClI,QAAQ,CAACsI,MAAM,KAC5DJ,IAAI,CAAClI,QAAQ,CAACsI,MAAM,CAACD,MAAK,KAAM,KAChCH,IAAI,CAAClI,QAAQ,CAACsI,MAAM,CAAC,CAAC,KAAK,IAAG,IAAKJ,IAAI,CAAClI,QAAQ,CAACsI,MAAM,CAAC,CAAC,KAAK,IAAG,IACjEa,KAAK,CAACC,MAAM,CAAClB,IAAI,CAAClI,QAAQ,CAACsI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAKa,KAAK,CAACC,MAAM,CAAClB,IAAI,CAAClI,QAAQ,CAACsI,MAAM,CAAC,CAAC,CAAC,CAAC,KAC/E,CAACJ,IAAI,CAAClI,QAAQ,CAACsF,MAAK,IAAK4C,IAAI,CAAClI,QAAQ,CAACsF,MAAK,IAAK,CAAC,EAAE;YACtDrE,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEkH,IAAI,CAAClI,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAM6C,GAAE,GAAIuG,MAAM,CAAClB,IAAI,CAAClI,QAAQ,CAACsI,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAMxF,GAAE,GAAIsG,MAAM,CAAClB,IAAI,CAAClI,QAAQ,CAACsI,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAMhD,MAAK,GAAI8D,MAAM,CAAClB,IAAI,CAAClI,QAAQ,CAACsF,MAAM;UAE1CrE,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE,CAACU,GAAG,EAAEC,GAAG,CAAC,EAAEwC,MAAM;UAC1C5B,OAAM,GAAI,IAAItB,IAAI,CAACiH,MAAM,CAAC;YACxBf,MAAM,EAAE,IAAIlG,IAAI,CAACkH,MAAM,CAACzG,GAAG,EAAEC,GAAG,CAAC;YACjCwC,MAAM,EAAEA,MAAM;YACd,GAAGuB;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAAClI,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3C;UACA,IAAI,CAACqI,IAAI,CAAClI,QAAQ,CAACyI,IAAG,IAAK,CAACQ,KAAK,CAACC,OAAO,CAAChB,IAAI,CAAClI,QAAQ,CAACyI,IAAI,KACxDP,IAAI,CAAClI,QAAQ,CAACyI,IAAI,CAACJ,MAAK,GAAI,CAAC,EAAE;YACjCpH,OAAO,CAACD,KAAK,CAAC,eAAe,EAAEkH,IAAI,CAAClI,QAAQ;YAC5C;UACF;;UAEA;UACA,MAAMuJ,SAAQ,GAAIrB,IAAI,CAAClI,QAAQ,CAACyI,IAAI,CAACe,KAAK,CAACb,KAAI,IAC7CM,KAAK,CAACC,OAAO,CAACP,KAAK,KAAKA,KAAK,CAACN,MAAK,KAAM,KACzCM,KAAK,CAAC,CAAC,KAAK,IAAG,IAAKA,KAAK,CAAC,CAAC,KAAK,IAAG,IACnC,CAACQ,KAAK,CAACC,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAACQ,KAAK,CAACC,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,CACrD;UAEA,IAAI,CAACY,SAAS,EAAE;YACdtI,OAAO,CAACD,KAAK,CAAC,kBAAkB,EAAEkH,IAAI,CAAClI,QAAQ,CAACyI,IAAI;YACpD;UACF;UAEAxH,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAE+F,IAAI,CAAClI,QAAQ,CAACyI,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAAClI,QAAQ,CAACyI,IAAI,CAACxG,GAAG,CAAC0G,KAAI,IAAK,IAAIvG,IAAI,CAACkH,MAAM,CAACF,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,EAAES,MAAM,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;UAChGjF,OAAM,GAAI,IAAItB,IAAI,CAACqH,OAAO,CAAC;YACzBhB,IAAI,EAAEA,IAAI;YACV,GAAG5B;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAAClI,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7C;UACA,IAAI,CAACqI,IAAI,CAAClI,QAAQ,CAAC4I,MAAK,IAAK,CAACK,KAAK,CAACC,OAAO,CAAChB,IAAI,CAAClI,QAAQ,CAAC4I,MAAM,KAC5DV,IAAI,CAAClI,QAAQ,CAAC4I,MAAM,CAACP,MAAK,KAAM,KAChCH,IAAI,CAAClI,QAAQ,CAAC4I,MAAM,CAACc,IAAI,CAACC,GAAE,IAAKA,GAAE,IAAK,IAAG,IAAKR,KAAK,CAACC,MAAM,CAACO,GAAG,CAAC,CAAC,CAAC,EAAE;YACvE1I,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEkH,IAAI,CAAClI,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAM4J,aAAY,GAAI1B,IAAI,CAAClI,QAAQ,CAAC4I,MAAM,CAAC3G,GAAG,CAAC0H,GAAE,IAAKP,MAAM,CAACO,GAAG,CAAC;UAEjE1I,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEyH,aAAa;UACrC,MAAMhB,MAAK,GAAI,IAAIxG,IAAI,CAACyH,MAAM,CAC5B,IAAIzH,IAAI,CAACkH,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CAAC,EACnD,IAAIxH,IAAI,CAACkH,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CACpD;UACAlG,OAAM,GAAI,IAAItB,IAAI,CAAC0H,SAAS,CAAC;YAC3BlB,MAAM,EAAEA,MAAM;YACd,GAAG/B;UACL,CAAC;QACH,OAAO;UACL5F,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEkH,IAAI,CAAClI,QAAQ,CAACH,IAAI;UAChD;QACF;QAEA,IAAI6D,OAAO,EAAE;UACXzC,OAAO,CAACkB,GAAG,CAAC,kBAAkB;;UAE9B;UACAzD,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACnB,OAAO;;UAE7B;UACA3E,YAAY,CAACmJ,IAAI,CAACtI,EAAE,IAAI8D,OAAM;;UAE9B;UACA,MAAMqG,aAAY,GAAIjL,WAAW,CAACoD,KAAK,CAAC8H,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACrK,EAAC,KAAMsI,IAAI,CAACtI,EAAE;UACvE,IAAImK,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBjL,WAAW,CAACoD,KAAK,CAAC4C,IAAI,CAACoD,IAAI;YAC3BjH,OAAO,CAACkB,GAAG,CAAC,WAAW;UACzB,OAAO;YACLlB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACAuB,OAAO,CAACnB,EAAE,CAAC,OAAO,EAAGK,CAAC,IAAK;YACzB;YACA,IAAInE,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;cACtCjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE+F,IAAI,CAACtI,EAAE;cAC9BsK,UAAU,CAAChC,IAAI,CAACtI,EAAE;cAClB;cACAgD,CAAC,CAACuH,eAAc,IAAKvH,CAAC,CAACuH,eAAe,CAAC;YACzC;YACA;UACF,CAAC;;UAED;UACA,MAAM7G,WAAU,GAAI7E,WAAW,CAACyD,KAAI,KAAM,YAAW;UACrDwB,OAAO,CAACC,UAAU,CAAC;YACjBC,SAAS,EAAEN,WAAW;YACtBO,MAAM,EAAEP,WAAU,GAAI,SAAQ,GAAI,SAAS;YAC3CQ,MAAM,EAAER,WAAU,GAAI,GAAE,GAAI;UAC9B,CAAC;;UAED;UACAwD,UAAU,CAAC,MAAM;YACfpI,WAAW,CAACwD,KAAK,CAAC6E,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAEN9F,OAAO,CAACkB,GAAG,CAAC,OAAO+F,IAAI,CAACtI,EAAE,WAAW;QAEvC,OAAO;UACLqB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEkH,IAAI,CAACtI,EAAE,EAAEoB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMkJ,UAAS,GAAKtK,EAAE,IAAK;MACzBJ,cAAc,CAAC0C,KAAI,GAAItC,EAAC;MACxB,MAAM8D,OAAM,GAAI3E,YAAY,CAACa,EAAE;MAC/B,IAAI8D,OAAO,EAAE;QACX;QACAA,OAAO,CAACC,UAAU,CAAC;UACjBqC,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACAnH,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAACwG,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACrK,EAAC,KAAMA,EAAE,EAAE;YACf,MAAMwK,YAAW,GAAIrL,YAAY,CAACkL,CAAC,CAACrK,EAAE;YACtC,IAAIwK,YAAY,EAAE;cAChBA,YAAY,CAACzG,UAAU,CAAC;gBACtBqC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAMoE,UAAS,GAAI,MAAOzK,EAAE,IAAK;MAC/B,IAAI;QACFqB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE1B,MAAMuH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBxH,EAAE,EAAE,EAAE;UACtDyH,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMrB,OAAM,GAAI3E,YAAY,CAACa,EAAE;UAC/B,IAAI8D,OAAO,EAAE;YACXhF,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAACvB,OAAO;YAChC,OAAO3E,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACoD,KAAI,GAAIpD,WAAW,CAACoD,KAAK,CAACoI,MAAM,CAACpC,IAAG,IAAKA,IAAI,CAACtI,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAAC0C,KAAI,KAAMtC,EAAE,EAAE;YAC/BJ,cAAc,CAAC0C,KAAI,GAAI,IAAG;UAC5B;UAEArE,SAAS,CAACkH,OAAO,CAAC,QAAQ;UAC1B9D,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAImI,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO5D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC4D,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM2F,QAAO,GAAKrC,IAAI,IAAK;MACzBvI,QAAQ,CAACuC,KAAI,GAAI;QAAE,GAAGgG;MAAK;MAC3BxI,iBAAiB,CAACwC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMsI,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFvJ,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAExC,QAAQ,CAACuC,KAAK,CAACtC,EAAE;QAEzC,MAAMuH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBzH,QAAQ,CAACuC,KAAK,CAACtC,EAAE,EAAE,EAAE;UACrEyH,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnB5H,IAAI,EAAEF,QAAQ,CAACuC,KAAK,CAACrC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACuC,KAAK,CAACpC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACuC,KAAK,CAACnC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAACoH,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMmD,IAAG,GAAIpJ,WAAW,CAACoD,KAAK,CAACuI,IAAI,CAACR,CAAA,IAAKA,CAAC,CAACrK,EAAC,KAAMD,QAAQ,CAACuC,KAAK,CAACtC,EAAE;UACnE,IAAIsI,IAAI,EAAE;YACRA,IAAI,CAACrI,IAAG,GAAIF,QAAQ,CAACuC,KAAK,CAACrC,IAAG;YAC9BqI,IAAI,CAACpI,KAAI,GAAIH,QAAQ,CAACuC,KAAK,CAACpC,KAAI;YAChCoI,IAAI,CAACnI,WAAU,GAAIJ,QAAQ,CAACuC,KAAK,CAACnC,WAAU;;YAE5C;YACA,MAAM2D,OAAM,GAAI3E,YAAY,CAACmJ,IAAI,CAACtI,EAAE;YACpC,IAAI8D,OAAO,EAAE;cACXA,OAAO,CAACC,UAAU,CAAC;gBACjBoC,WAAW,EAAE5E,gBAAgB,CAAC+G,IAAI,CAACrI,IAAI,CAAC,CAACwB,KAAK;gBAC9C6E,SAAS,EAAE/E,gBAAgB,CAAC+G,IAAI,CAACrI,IAAI,CAAC,CAACwB,KAAK;gBAC5C8E,WAAW,EAAEzE,iBAAiB,CAACwG,IAAI,CAACpI,KAAK,CAAC,CAAC8B;cAC7C,CAAC;YACH;UACF;UAEA/D,SAAS,CAACkH,OAAO,CAAC,QAAQ;UAC1B9D,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE6F,MAAM,CAACG,IAAI;QAErC,OAAO;UACL,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAO5D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC4D,OAAO;MAC7C;MAEAlF,iBAAiB,CAACwC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAM8G,aAAY,GAAI,MAAAA,CAAO0B,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK5L,WAAW,CAACoD,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAMsC,OAAM,GAAI7L,WAAW,CAACoD,KAAK,CAACD,GAAG,CAACiG,IAAG,IAAKA,IAAI,CAACtI,EAAE;UAErDqB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEwI,OAAO;UAEjC,MAAMxD,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;YAChDC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACP,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cAAEmD,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAACxD,QAAQ,CAACS,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAACjD,OAAO,EAAE;YACnB,MAAM,IAAIgD,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,WAAW;UAC/C;UAEA3D,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE6F,MAAM,CAACG,IAAI;QACvC;;QAEA;QACA5E,MAAM,CAACC,MAAM,CAACzE,YAAY,CAAC,CAAC0E,OAAO,CAACC,OAAM,IAAK;UAC7C,IAAIhF,WAAW,CAACwD,KAAK,EAAE;YACrBxD,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAACvB,OAAO;UAClC;QACF,CAAC;;QAED;QACA5E,WAAW,CAACoD,KAAI,GAAI,EAAC;QACrBqB,MAAM,CAACsH,IAAI,CAAC9L,YAAY,CAAC,CAAC0E,OAAO,CAACqH,GAAE,IAAK;UACvC,OAAO/L,YAAY,CAAC+L,GAAG;QACzB,CAAC;QACDtL,cAAc,CAAC0C,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACwI,WAAW,EAAE;UAChB7M,SAAS,CAACkH,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAO/D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAAC0J,WAAW,EAAE;UAChB7M,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAAC4D,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAMmG,qBAAoB,GAAKC,MAAM,IAAK;MACxCvL,aAAa,CAACyC,KAAI,GAAI8I,MAAK;;MAE3B;MACAlM,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAACyE,IAAG,IAAK;QAChC,MAAMxE,OAAM,GAAI3E,YAAY,CAACmJ,IAAI,CAACtI,EAAE;QACpC,IAAI8D,OAAO,EAAE;UACX,IAAIsH,MAAM,CAACC,QAAQ,CAAC/C,IAAI,CAACrI,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACnB,OAAO;UAC/B,OAAO;YACLhF,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAACvB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAMwH,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIpM,WAAW,CAACoD,KAAK,CAACmG,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKvG,MAAM,CAACD,IAAI,CAACyH,MAAM,CAAE;MACxC/K,WAAW,CAACoD,KAAK,CAACuB,OAAO,CAACyE,IAAG,IAAK;QAChC,MAAMxE,OAAM,GAAI3E,YAAY,CAACmJ,IAAI,CAACtI,EAAE;QACpC,IAAI8D,OAAM,IAAKA,OAAO,CAACmF,SAAS,EAAE;UAChCD,MAAM,CAACuC,MAAM,CAACzH,OAAO,CAACmF,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAAClI,QAAQ,EAAEsI,MAAM,EAAE;UAChCM,MAAM,CAACuC,MAAM,CAACjD,IAAI,CAAClI,QAAQ,CAACsI,MAAM;QACpC;MACF,CAAC;MAED5J,WAAW,CAACwD,KAAK,CAACkJ,SAAS,CAACxC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAM3F,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACnE,OAAO,CAACuD,KAAI,IAAK,CAACxD,WAAW,CAACwD,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMiJ,UAAS,GAAIpL,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI;;MAE7C;MACApI,UAAU,CAACiC,KAAK,CAAC4C,IAAI,CAAC;QAAEjC,GAAG;QAAEC;MAAI,CAAC;;MAElC;MACA,MAAMmB,MAAK,GAAI,IAAI7B,IAAI,CAAC8B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACtB,GAAG,EAAEC,GAAG,CAAC;QACpBsB,IAAI,EAAE,IAAIhC,IAAI,CAACiC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI7D,gBAAgB,CAAC;;;wGAGuC0K,UAAU;;WAEvG,CAAC;UACF5G,SAAS,EAAE,IAAIrC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAM2G,UAAU;MACzB,CAAC;MAED3M,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACZ,MAAM;MAC5B/D,WAAW,CAACgC,KAAK,CAAC4C,IAAI,CAACb,MAAM;;MAE7B;MACA,IAAIhE,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAE;QAC/BiD,cAAc,CAAC;MACjB;MAEAzN,SAAS,CAACkH,OAAO,CAAC,SAASsG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC5M,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAIjC,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC9E,QAAQ,CAAC+B,KAAK;MACzC;MAEA,MAAMuG,IAAG,GAAIxI,UAAU,CAACiC,KAAK,CAACD,GAAG,CAACsJ,CAAA,IAAK,CAACA,CAAC,CAAC1I,GAAG,EAAE0I,CAAC,CAACzI,GAAG,CAAC;MAErD3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACoJ,QAAQ,CAAC;QACjC/C,IAAI,EAAEA,IAAI;QACV1C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACfyF,WAAW,EAAE;MACf,CAAC;MAED/M,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAAC1E,QAAQ,CAAC+B,KAAK;IACtC;;IAEA;IACA,MAAMwJ,WAAU,GAAKC,KAAK,IAAK;MAC7B1L,UAAU,CAACiC,KAAK,CAAC0J,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB5L,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACkF,KAAK,EAAEmD,CAAC,KAAK;QACrCC,kBAAkB,CAACpD,KAAK,CAAC9F,GAAG,EAAE8F,KAAK,CAAC7F,GAAG,EAAEgJ,CAAA,GAAI,CAAC;MAChD,CAAC;MAED,IAAI7L,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAE;QAC/BiD,cAAc,CAAC;MACjB,OAAO,IAAInL,QAAQ,CAAC+B,KAAK,EAAE;QACzBxD,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC9E,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;IACtB;IAEA,MAAM6J,kBAAiB,GAAIA,CAAClJ,GAAG,EAAEC,GAAG,EAAE6I,KAAK,KAAK;MAC9C,MAAMvJ,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,MAAM6B,MAAK,GAAI,IAAI7B,IAAI,CAAC8B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACtB,GAAG,EAAEC,GAAG,CAAC;QACpBsB,IAAI,EAAE,IAAIhC,IAAI,CAACiC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI7D,gBAAgB,CAAC;;;wGAGuCgL,KAAK;;WAElG,CAAC;UACFlH,SAAS,EAAE,IAAIrC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMiH,KAAK;MACpB,CAAC;MAEDjN,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACZ,MAAM;MAC5B/D,WAAW,CAACgC,KAAK,CAAC4C,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAM4H,gBAAe,GAAIA,CAAA,KAAM;MAC7B3L,WAAW,CAACgC,KAAK,CAACuB,OAAO,CAACQ,MAAK,IAAK;QAClCvF,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAChB,MAAM;MACjC,CAAC;MACD/D,WAAW,CAACgC,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM8J,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAI/L,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAE;QAC/BxK,SAAS,CAACoO,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFhL,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE/B,iBAAiB,CAAC8B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK,CAACmG,MAAM;QAC7CpH,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAErD,WAAW,CAACoD,KAAK;QAErC,MAAMgK,UAAS,GAAIjM,UAAU,CAACiC,KAAK,CAAC,CAAC;QACrC,MAAMtD,YAAW,GAAIqB,UAAU,CAACiC,KAAK,CAACiK,KAAK,CAAC,CAAC,GAAE;;QAE/C;QACA,MAAMC,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVrJ,GAAG,EAAEqJ,UAAU,CAACrJ,GAAG;YACnBC,GAAG,EAAEoJ,UAAU,CAACpJ;UAClB,CAAC;UACDlE,YAAY,EAAEA,YAAY,CAACqD,GAAG,CAAC0G,KAAI,KAAM;YACvC9F,GAAG,EAAE8F,KAAK,CAAC9F,GAAG;YACdC,GAAG,EAAE6F,KAAK,CAAC7F;UACb,CAAC,CAAC,CAAC;UACHuJ,SAAS,EAAEjM,iBAAiB,CAAC8B,KAAI,IAAK,OAAO;UAAE;UAC/C7B,cAAc,EAAEA,cAAc,CAAC6B,KAAK;UACpC5B,WAAW,EAAEA,WAAW,CAAC4B,KAAK;UAC9BpD,WAAW,EAAEA,WAAW,CAACoD,KAAI,IAAKpD,WAAW,CAACoD,KAAK,CAACmG,MAAK,GAAI,IAAIvJ,WAAW,CAACoD,KAAK,CAACD,GAAG,CAACiG,IAAG,KAAM;YAC9FtI,EAAE,EAAEsI,IAAI,CAACtI,EAAE;YACXC,IAAI,EAAEqI,IAAI,CAACrI,IAAI;YACfC,KAAK,EAAEoI,IAAI,CAACpI,KAAK;YACjBwM,aAAa,EAAEpE,IAAI,CAAClI,QAAQ,EAAEH,IAAG,IAAKqI,IAAI,CAACoE,aAAa;YACxDC,aAAa,EAAErE,IAAI,CAAClI,QAAO,IAAKkI,IAAI,CAACqE,aAAa;YAClDxM,WAAW,EAAEmI,IAAI,CAACnI;UACpB,CAAC,CAAC,IAAI;QACR;QAEAkB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAEiK,YAAY;;QAExC;QACA,MAAMjF,QAAO,GAAI,MAAMC,KAAK,CAAC,oBAAoB,EAAE;UACjDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC2E,YAAY;QACnC,CAAC;QAED,IAAI,CAACjF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtC7G,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvB0G,MAAM,EAAEP,QAAQ,CAACO,MAAM;YACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;YAC/B3G,KAAK,EAAE6G;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWZ,QAAQ,CAACO,MAAM,MAAMG,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnChH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE6F,MAAM;QAE7B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAM;YAAEoD,IAAI;YAAEqE;UAAQ,IAAIxE,MAAK;;UAE/B;UACAzH,QAAQ,CAAC2B,KAAI,GAAI;YACfuK,QAAQ,EAAEC,IAAI,CAACC,KAAK,CAACxE,IAAI,CAACsE,QAAO,IAAKD,OAAO,EAAEI,aAAY,IAAK,CAAC,CAAC;YAClEC,QAAQ,EAAE1E,IAAI,CAAC2E,cAAa,IAAKN,OAAO,EAAEO,aAAY,IAAK,CAAC;YAC5DC,UAAU,EAAE7E,IAAI,CAAC8E,WAAW,EAAE5E,MAAK,IAAKmE,OAAO,EAAEU,aAAY,IAAK,CAAC;YACnEb,SAAS,EAAElE,IAAI,CAACkE,SAAQ,IAAKrE,MAAM,CAACqE,SAAS;YAC7Cc,kBAAkB,EAAEhF,IAAI,CAACiF,oBAAmB,IAAKZ,OAAO,EAAEW,kBAAiB,IAAK,EAAE;YAClFE,WAAW,EAAEb,OAAO,EAAEa,WAAU,IAAK;UACvC;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACA,MAAMC,QAAO,GAAIpF,IAAI,CAAC8E,WAAU,IAAK9E,IAAI,CAACM,IAAG,IAAK,EAAC;UACnD+E,4BAA4B,CAACD,QAAQ,EAAE3O,YAAY,EAAE4N,OAAO,EAAEa,WAAW;UAEzExP,SAAS,CAACkH,OAAO,CAAC,GAAG0I,gBAAgB,CAACzF,MAAM,CAACqE,SAAS,CAAC,YAAY;UAEnE,MAAMqB,WAAU,GAAIvF,IAAI,CAACiF,oBAAoB,EAAE/E,MAAK,IAAKmE,OAAO,EAAEW,kBAAkB,EAAE9E,MAAK,IAAK;UAChG,IAAIqF,WAAU,GAAI,CAAC,EAAE;YACnB7P,SAAS,CAACgI,IAAI,CAAC,QAAQ6H,WAAW,OAAO;UAC3C;;UAEA;UACA,IAAIlB,OAAO,EAAEa,WAAU,IAAKb,OAAO,CAACa,WAAW,CAAChF,MAAK,GAAI,CAAC,EAAE;YAC1D,MAAMsF,SAAQ,GAAInB,OAAO,CAACa,WAAW,CAACpL,GAAG,CAAC,CAAC2L,MAAM,EAAEjC,KAAK,KACtD,GAAGA,KAAI,GAAI,CAAC,KAAKiC,MAAM,CAACC,MAAM,CAAChL,GAAG,CAAC8B,OAAO,CAAC,CAAC,CAAC,KAAKiJ,MAAM,CAACC,MAAM,CAAC/K,GAAG,CAAC6B,OAAO,CAAC,CAAC,CAAC,GAAGiJ,MAAM,CAACE,YAAW,GAAI,SAAQ,GAAI,EAAE,EACvH,CAAC,CAACC,IAAI,CAAC,IAAI;YAEXjH,UAAU,CAAC,MAAM;cACfjJ,SAAS,CAAC;gBACR+G,OAAO,EAAE,aAAa+I,SAAS,EAAE;gBACjC9N,IAAI,EAAE,MAAM;gBACZgN,QAAQ,EAAE,KAAK;gBACfmB,SAAS,EAAE;cACb,CAAC;YACH,CAAC,EAAE,IAAI;UACT;QAEF,OAAO;UACL,MAAM,IAAIjG,KAAK,CAACC,MAAM,CAACpD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAO5D,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BnD,SAAS,CAACmD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAAC4D,OAAO;MAC5C;IACF;;IAEA;IACA,MAAM6I,gBAAe,GAAKpB,SAAS,IAAK;MACtC,MAAM4B,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAAC5B,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMmB,4BAA2B,GAAIA,CAACc,WAAW,EAAEC,eAAe,EAAElB,WAAW,KAAK;MAClF,IAAI,CAAC3O,WAAW,CAACwD,KAAI,IAAK,CAACoM,WAAU,IAAKA,WAAW,CAACjG,MAAK,GAAI,CAAC,EAAE;MAElE,MAAMjG,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE;QACtBqM,UAAU,EAAEF,WAAW,CAACjG,MAAM;QAC9BoG,WAAW,EAAEF,eAAe,CAAClG,MAAM;QACnCgF,WAAW,EAAEA;MACf,CAAC;;MAED;MACA,MAAMqB,UAAS,GAAIJ,WAAW,CAACrM,GAAG,CAAC0G,KAAI,IAAK,CAACA,KAAK,CAAC9F,GAAG,EAAE8F,KAAK,CAAC7F,GAAG,CAAC;MAElE3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACoJ,QAAQ,CAAC;QACjC/C,IAAI,EAAEiG,UAAU;QAChB3I,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACfyF,WAAW,EAAE,OAAO;QACpBxF,aAAa,EAAE;MACjB,CAAC;MAEDvH,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAAC1E,QAAQ,CAAC+B,KAAK;MAEpC,MAAMyM,OAAM,GAAI,EAAC;;MAEjB;MACA,MAAMC,WAAU,GAAI,IAAIxM,IAAI,CAAC8B,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAACmK,WAAW,CAAC,CAAC,CAAC,CAACzL,GAAG,EAAEyL,WAAW,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC;QAClDsB,IAAI,EAAE,IAAIhC,IAAI,CAACiC,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAI7D,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACF8D,SAAS,EAAE,IAAIrC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,IAAI;QACXZ,MAAM,EAAE;MACV,CAAC;MAEDpF,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAAC+J,WAAW;MACjCD,OAAO,CAAC7J,IAAI,CAAC8J,WAAW;;MAExB;MACA,IAAIvB,WAAU,IAAKA,WAAW,CAAChF,MAAK,GAAI,CAAC,EAAE;QACzCgF,WAAW,CAAC5J,OAAO,CAAC,CAACmK,MAAM,EAAEjC,KAAK,KAAK;UACrC,MAAMkD,UAAS,GAAIlD,KAAI,GAAI;UAC3B,MAAMmD,UAAS,GAAIlB,MAAM,CAACE,YAAW;UACrC,MAAM5O,WAAU,GAAI0O,MAAM,CAAC1O,WAAU;;UAErC;UACA,IAAImC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAIyN,UAAU,EAAE;YACd,QAAQ5P,WAAW;cACjB,KAAK,KAAK;gBACRmC,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,QAAQ;gBACXA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,MAAM;gBACTA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,UAAU;gBACbA,KAAI,GAAI,SAAQ,EAAE;gBAClB;YACJ;UACF;UAEA,MAAM0N,YAAW,GAAI,IAAI3M,IAAI,CAAC8B,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACyJ,MAAM,CAACC,MAAM,CAAChL,GAAG,EAAE+K,MAAM,CAACC,MAAM,CAAC/K,GAAG,CAAC;YAChDsB,IAAI,EAAE,IAAIhC,IAAI,CAACiC,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAI7D,gBAAgB,CAAC;;yDAEZU,KAAK;2GAC6CwN,UAAU;oBACjGC,UAAS,GAAI,8EAA6E,GAAI,EAAE;;eAErG,CAAC;cACFrK,SAAS,EAAE,IAAIrC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAE,MAAMmK,UAAU,GAAGC,UAAS,GAAI,KAAK5P,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3E4E,MAAM,EAAE;UACV,CAAC;UAEDpF,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACkK,YAAY;UAClCJ,OAAO,CAAC7J,IAAI,CAACiK,YAAY;QAC3B,CAAC;MACH,OAAO;QACL;QACAR,eAAe,CAAC9K,OAAO,CAAC,CAACmK,MAAM,EAAEjC,KAAK,KAAK;UACzC,MAAMqD,YAAW,GAAIrD,KAAI,GAAI;UAC7B,MAAMsD,YAAW,GAAItD,KAAI,KAAM4C,eAAe,CAAClG,MAAK,GAAI;UAExD,MAAM0G,YAAW,GAAI,IAAI3M,IAAI,CAAC8B,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACyJ,MAAM,CAAC/K,GAAG,EAAE+K,MAAM,CAAC9K,GAAG,CAAC;YAClCsB,IAAI,EAAE,IAAIhC,IAAI,CAACiC,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAI7D,gBAAgB,CAAC;;yDAEZsO,YAAW,GAAI,SAAQ,GAAI,SAAS;2GACcA,YAAW,GAAI,GAAE,GAAID,YAAY;;eAE7H,CAAC;cACFvK,SAAS,EAAE,IAAIrC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAEuK,YAAW,GAAI,IAAG,GAAI,MAAMD,YAAY,EAAE;YACjDlL,MAAM,EAAE;UACV,CAAC;UAEDpF,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACkK,YAAY;UAClCJ,OAAO,CAAC7J,IAAI,CAACiK,YAAY;QAC3B,CAAC;MACH;MAEA7O,WAAW,CAACgC,KAAI,GAAIyM,OAAM;;MAE1B;MACA7H,UAAU,CAAC,MAAM;QACf,IAAI3G,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAAC6E,UAAU,CAAC,CAAC5G,QAAQ,CAAC+B,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;QAC1E;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMoL,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAInN,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC9E,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA2J,gBAAgB,CAAC;IACnB;IAEA,MAAMqD,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAItC,aAAY,GAAI;MACpB,KAAK,IAAId,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAI7L,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAEyD,CAAC,EAAE,EAAE;QACpD,MAAMqD,EAAC,GAAIlP,UAAU,CAACiC,KAAK,CAAC4J,CAAC;QAC7B,MAAMsD,EAAC,GAAInP,UAAU,CAACiC,KAAK,CAAC4J,CAAA,GAAI,CAAC;QACjCc,aAAY,IAAKyC,WAAW,CAACF,EAAE,CAACrM,GAAG,EAAEqM,EAAE,CAACtM,GAAG,EAAEuM,EAAE,CAACtM,GAAG,EAAEsM,EAAE,CAACvM,GAAG;MAC7D;MACA,OAAO+J,aAAY;IACrB;IAEA,MAAMyC,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAI5C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIL,IAAG,GAAI9C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI5C,IAAI,CAACkD,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI7C,IAAI,CAACkD,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAItD,IAAI,CAACuD,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIpD,IAAI,CAACuD,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BpD,IAAI,CAACwD,GAAG,CAACP,EAAE,IAAIjD,IAAI,CAACwD,GAAG,CAACL,EAAE,IAC1BnD,IAAI,CAACuD,GAAG,CAACF,EAAE,GAAC,CAAC,IAAIrD,IAAI,CAACuD,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAIzD,IAAI,CAAC0D,KAAK,CAAC1D,IAAI,CAAC2D,IAAI,CAACL,CAAC,CAAC,EAAEtD,IAAI,CAAC2D,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAON,CAAA,GAAIS,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAMxS,YAAY,CAACyS,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtB5Q,IAAI,EAAE;QACR,CAAC;QAEDhC,SAAS,CAACkH,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNlH,SAAS,CAACgI,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAM6K,QAAO,GAAIA,CAAA,KAAM;MACrB7E,gBAAgB,CAAC;MAEjB,IAAI1L,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC9E,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;MAEAjC,UAAU,CAACiC,KAAI,GAAI,EAAC;MACpB3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;MAEpBrE,SAAS,CAACkH,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAM4L,uBAAsB,GAAKtE,SAAS,IAAK;MAC7CjM,iBAAiB,CAAC8B,KAAI,GAAImK,SAAQ;IACpC;;IAEA;IACA,MAAMuE,oBAAmB,GAAKC,QAAQ,IAAK;MACzCxQ,cAAc,CAAC6B,KAAI,GAAI2O,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnCzQ,WAAW,CAAC4B,KAAI,GAAI6O,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI/Q,UAAU,CAACiC,KAAK,CAACmG,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAM6D,UAAS,GAAIjM,UAAU,CAACiC,KAAK,CAAC,CAAC;MACrCxD,WAAW,CAACwD,KAAK,CAAC+O,SAAS,CAAC,CAAC/E,UAAU,CAACrJ,GAAG,EAAEqJ,UAAU,CAACpJ,GAAG,CAAC;MAC5DpE,WAAW,CAACwD,KAAK,CAACgP,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAIlR,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAM+I,QAAO,GAAInR,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI,CAAC;MAC7D3J,WAAW,CAACwD,KAAK,CAAC+O,SAAS,CAAC,CAACG,QAAQ,CAACvO,GAAG,EAAEuO,QAAQ,CAACtO,GAAG,CAAC;MACxDpE,WAAW,CAACwD,KAAK,CAACgP,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,iBAAgB,GAAKC,WAAW,IAAK;MACzC,IAAI,CAACA,WAAU,IAAKA,WAAW,CAACjJ,MAAK,KAAM,CAAC,EAAE;QAC5CxK,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,IAAI;QACF;QACA,MAAMuQ,SAAQ,GAAID,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE9I,KAAK,KAAK8I,GAAE,GAAI9I,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI2I,WAAW,CAACjJ,MAAK;QAC3F,MAAMqJ,SAAQ,GAAIJ,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAE9I,KAAK,KAAK8I,GAAE,GAAI9I,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI2I,WAAW,CAACjJ,MAAK;QAE3FpH,OAAO,CAACkB,GAAG,CAAC,aAAaoP,SAAS,KAAKG,SAAS,GAAG;;QAEnD;QACAhT,WAAW,CAACwD,KAAK,CAAC+O,SAAS,CAAC,CAACM,SAAS,EAAEG,SAAS,CAAC;;QAElD;QACA,IAAIJ,WAAW,CAACjJ,MAAK,KAAM,CAAC,EAAE;UAC5B3J,WAAW,CAACwD,KAAK,CAACgP,OAAO,CAAC,EAAE;QAC9B,OAAO;UACL;UACA,MAAMS,IAAG,GAAIL,WAAW,CAACrP,GAAG,CAACsJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMqG,IAAG,GAAIN,WAAW,CAACrP,GAAG,CAACsJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMsG,OAAM,GAAInF,IAAI,CAACoF,GAAG,CAAC,GAAGH,IAAI,IAAIjF,IAAI,CAACqF,GAAG,CAAC,GAAGJ,IAAI;UACpD,MAAMK,OAAM,GAAItF,IAAI,CAACoF,GAAG,CAAC,GAAGF,IAAI,IAAIlF,IAAI,CAACqF,GAAG,CAAC,GAAGH,IAAI;UACpD,MAAMK,OAAM,GAAIvF,IAAI,CAACoF,GAAG,CAACD,OAAO,EAAEG,OAAO;UAEzC,IAAIE,IAAG,GAAI,EAAC;UACZ,IAAID,OAAM,GAAI,IAAI,EAAEC,IAAG,GAAI,EAAC,MACvB,IAAID,OAAM,GAAI,GAAG,EAAEC,IAAG,GAAI,EAAC,MAC3B,IAAID,OAAM,GAAI,CAAC,EAAEC,IAAG,GAAI,EAAC,MACzBA,IAAG,GAAI;UAEZxT,WAAW,CAACwD,KAAK,CAACgP,OAAO,CAACgB,IAAI;QAChC;QAEArU,SAAS,CAACkH,OAAO,CAAC,QAAQuM,WAAW,CAACjJ,MAAM,SAAS;MACvD,EAAE,OAAO8J,WAAW,EAAE;QACpBlR,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEmR,WAAW;QACrCtU,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMoR,SAAQ,GAAIA,CAAA,KAAM;MACtBnR,OAAO,CAACkB,GAAG,CAAC,sCAAsC,EAAElC,UAAU,CAACiC,KAAK,CAACmG,MAAM;MAE3E,IAAI,CAACpI,UAAU,CAACiC,KAAI,IAAKjC,UAAU,CAACiC,KAAK,CAACmG,MAAK,KAAM,CAAC,EAAE;QACtDpH,OAAO,CAACC,IAAI,CAAC,SAAS;QACtBrD,SAAS,CAACoO,OAAO,CAAC,UAAU;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,CAACvN,WAAW,CAACwD,KAAK,EAAE;UACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS;UACvBnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;UACxB;QACF;;QAEA;QACA,IAAI,CAACqB,MAAM,CAACD,IAAG,IAAK,CAACC,MAAM,CAACD,IAAI,CAACyH,MAAM,EAAE;UACvC5I,OAAO,CAACD,KAAK,CAAC,oBAAoB;UAClCnD,SAAS,CAACmD,KAAK,CAAC,YAAY;UAC5B;QACF;QAEAC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK;;QAEtC;QACA,MAAM0G,MAAK,GAAI,IAAIvG,MAAM,CAACD,IAAI,CAACyH,MAAM,CAAC;;QAEtC;QACA,IAAIwI,gBAAe,GAAI;QACvB,MAAMf,WAAU,GAAI,EAAC;QAErBrR,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACkF,KAAK,EAAEgD,KAAK,KAAK;UACzC,IAAIhD,KAAI,IAAK,OAAOA,KAAK,CAAC9F,GAAE,KAAM,QAAO,IAAK,OAAO8F,KAAK,CAAC7F,GAAE,KAAM,QAAO,IACtE,CAACqG,KAAK,CAACR,KAAK,CAAC9F,GAAG,KAAK,CAACsG,KAAK,CAACR,KAAK,CAAC7F,GAAG,KACrCwP,QAAQ,CAAC3J,KAAK,CAAC9F,GAAG,KAAKyP,QAAQ,CAAC3J,KAAK,CAAC7F,GAAG,KACzC6F,KAAK,CAAC9F,GAAE,IAAK,CAAC,GAAE,IAAK8F,KAAK,CAAC9F,GAAE,IAAK,GAAE,IACpC8F,KAAK,CAAC7F,GAAE,IAAK,CAAC,EAAC,IAAK6F,KAAK,CAAC7F,GAAE,IAAK,EAAE,EAAE;YAEvC;YACA,MAAMD,GAAE,GAAIuG,MAAM,CAACT,KAAK,CAAC9F,GAAG;YAC5B,MAAMC,GAAE,GAAIsG,MAAM,CAACT,KAAK,CAAC7F,GAAG;YAE5B,IAAI,CAACqG,KAAK,CAACtG,GAAG,KAAK,CAACsG,KAAK,CAACrG,GAAG,KAAKwP,QAAQ,CAACzP,GAAG,KAAKyP,QAAQ,CAACxP,GAAG,CAAC,EAAE;cAChEwO,WAAW,CAACxM,IAAI,CAAC,CAACjC,GAAG,EAAEC,GAAG,CAAC;cAC3BuP,gBAAgB,EAAC;cACjBpR,OAAO,CAACkB,GAAG,CAAC,UAAUwJ,KAAI,GAAI,CAAC,MAAM9I,GAAG,KAAKC,GAAG,GAAG;YACrD,OAAO;cACL7B,OAAO,CAACC,IAAI,CAAC,UAAUyK,KAAI,GAAI,CAAC,GAAG,EAAEhD,KAAK;YAC5C;UACF,OAAO;YACL1H,OAAO,CAACC,IAAI,CAAC,SAASyK,KAAI,GAAI,CAAC,GAAG,EAAEhD,KAAK;UAC3C;QACF,CAAC;QAED,IAAI0J,gBAAe,KAAM,CAAC,EAAE;UAC1BpR,OAAO,CAACD,KAAK,CAAC,UAAU;UACxBnD,SAAS,CAACmD,KAAK,CAAC,SAAS;UACzB;QACF;;QAEA;QACAsQ,WAAW,CAAC7N,OAAO,CAAC,CAAC8O,KAAK,EAAE5G,KAAK,KAAK;UACpC,IAAI;YACF/C,MAAM,CAACuC,MAAM,CAACoH,KAAK;YACnBtR,OAAO,CAACkB,GAAG,CAAC,WAAWwJ,KAAI,GAAI,CAAC,MAAM4G,KAAK,CAAC,CAAC,CAAC,KAAKA,KAAK,CAAC,CAAC,CAAC,GAAG;UAChE,EAAE,OAAOC,WAAW,EAAE;YACpBvR,OAAO,CAACD,KAAK,CAAC,aAAa2K,KAAI,GAAI,CAAC,GAAG,EAAE4G,KAAK,EAAEC,WAAW;UAC7D;QACF,CAAC;;QAED;QACA,IAAIC,SAAS,EAAEC,SAAQ;QACvB,IAAI;UACFD,SAAQ,GAAI7J,MAAM,CAACE,YAAY,CAAC;UAChC4J,SAAQ,GAAI9J,MAAM,CAACG,YAAY,CAAC;QAClC,EAAE,OAAO4J,cAAc,EAAE;UACvB1R,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE2R,cAAc;UACzC9U,SAAS,CAACmD,KAAK,CAAC,UAAU;UAC1BqQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEArQ,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE;UACnBsQ,SAAS,EAAE,CAACA,SAAS,CAAC5P,GAAG,EAAE4P,SAAS,CAAC3P,GAAG,CAAC;UACzC4P,SAAS,EAAE,CAACA,SAAS,CAAC7P,GAAG,EAAE6P,SAAS,CAAC5P,GAAG;QAC1C,CAAC;;QAED;QACA,IAAI,CAAC2P,SAAQ,IAAK,CAACC,SAAQ,IACvBvJ,KAAK,CAACsJ,SAAS,CAAC5P,GAAG,KAAKsG,KAAK,CAACsJ,SAAS,CAAC3P,GAAG,KAC3CqG,KAAK,CAACuJ,SAAS,CAAC7P,GAAG,KAAKsG,KAAK,CAACuJ,SAAS,CAAC5P,GAAG,KAC3C,CAACwP,QAAQ,CAACG,SAAS,CAAC5P,GAAG,KAAK,CAACyP,QAAQ,CAACG,SAAS,CAAC3P,GAAG,KACnD,CAACwP,QAAQ,CAACI,SAAS,CAAC7P,GAAG,KAAK,CAACyP,QAAQ,CAACI,SAAS,CAAC5P,GAAG,CAAC,EAAE;UACxD7B,OAAO,CAACD,KAAK,CAAC,YAAY;UAC1BnD,SAAS,CAACoO,OAAO,CAAC,gBAAgB;UAClCoF,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,MAAMO,OAAM,GAAInF,IAAI,CAACkG,GAAG,CAACF,SAAS,CAAC7P,GAAE,GAAI4P,SAAS,CAAC5P,GAAG;QACtD,MAAMmP,OAAM,GAAItF,IAAI,CAACkG,GAAG,CAACF,SAAS,CAAC5P,GAAE,GAAI2P,SAAS,CAAC3P,GAAG;QAEtD,IAAI+O,OAAM,GAAI,MAAK,IAAKG,OAAM,GAAI,MAAM,EAAE;UACxC/Q,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BmQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEA,IAAIO,OAAM,GAAI,GAAE,IAAKG,OAAM,GAAI,EAAE,EAAE;UACjC/Q,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BmQ,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,IAAI;UACF5S,WAAW,CAACwD,KAAK,CAACkJ,SAAS,CAACxC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;UAC7D3H,OAAO,CAACkB,GAAG,CAAC,UAAU;QACxB,EAAE,OAAO0Q,WAAW,EAAE;UACpB5R,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE6R,WAAW;UACtChV,SAAS,CAACoO,OAAO,CAAC,gBAAgB;UAClCoF,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEArQ,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEkQ,gBAAgB,EAAE,MAAM;QACnDxU,SAAS,CAACkH,OAAO,CAAC,QAAQsN,gBAAgB,SAAS;MAErD,EAAE,OAAOrR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK;QACrCnD,SAAS,CAACmD,KAAK,CAAC,YAAW,GAAIA,KAAK,CAAC4D,OAAO;MAC9C;IACF;;IAEA;;IAEA;IACA,MAAMkO,eAAc,GAAKrK,IAAI,IAAK;MAChC,IAAI,CAAC/J,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,MAAMjC,QAAO,GAAI,IAAIkC,MAAM,CAACD,IAAI,CAACoJ,QAAQ,CAAC;UACxC/C,IAAI,EAAEA,IAAI,CAACwE,WAAW,CAAChL,GAAG,CAAC0G,KAAI,IAAK,CAACA,KAAK,CAAC9F,GAAG,EAAE8F,KAAK,CAAC7F,GAAG,CAAC,CAAC;UAC3DiD,WAAW,EAAE0C,IAAI,CAACpH,KAAI,IAAK,SAAS;UACpC2E,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,GAAG;UAClBwF,WAAW,EAAE,OAAO;UACpBsH,OAAO,EAAE,IAAI;UACbC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QAC3B,CAAC;;QAED;QACA,MAAM9G,UAAS,GAAIzD,IAAI,CAACwE,WAAW,CAAC,CAAC;QACrC,MAAMmE,QAAO,GAAI3I,IAAI,CAACwE,WAAW,CAACxE,IAAI,CAACwE,WAAW,CAAC5E,MAAK,GAAI,CAAC;QAE7D,MAAMuG,WAAU,GAAI,IAAIvM,MAAM,CAACD,IAAI,CAAC8B,MAAM,CAAC;UACzCC,QAAQ,EAAE,CAAC+H,UAAU,CAACrJ,GAAG,EAAEqJ,UAAU,CAACpJ,GAAG,CAAC;UAC1CsB,IAAI,EAAE,IAAI/B,MAAM,CAACD,IAAI,CAACiC,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsBzD,kBAAkB,CAAC;;uDAEL0H,IAAI,CAACpH,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJoD,SAAS,EAAE,IAAIpC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG+D,IAAI,CAACrK,IAAI,OAAO;UAC1B0F,MAAM,EAAE;QACV,CAAC;QAED,MAAMmP,SAAQ,GAAI,IAAI5Q,MAAM,CAACD,IAAI,CAAC8B,MAAM,CAAC;UACvCC,QAAQ,EAAE,CAACiN,QAAQ,CAACvO,GAAG,EAAEuO,QAAQ,CAACtO,GAAG,CAAC;UACtCsB,IAAI,EAAE,IAAI/B,MAAM,CAACD,IAAI,CAACiC,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsBzD,kBAAkB,CAAC;;uDAEL0H,IAAI,CAACpH,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJoD,SAAS,EAAE,IAAIpC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG+D,IAAI,CAACrK,IAAI,OAAO;UAC1B0F,MAAM,EAAE;QACV,CAAC;;QAED;QACArD,mBAAmB,CAACgI,IAAI,CAAC7I,EAAE,IAAI;UAC7BO,QAAQ;UACRyO,WAAW;UACXqE;QACF;;QAEA;QACAvU,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAAC,CAAC1E,QAAQ,EAAEyO,WAAW,EAAEqE,SAAS,CAAC;QAExDpV,SAAS,CAACkH,OAAO,CAAC,UAAU0D,IAAI,CAACrK,IAAI,EAAE;MACzC,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMkS,eAAc,GAAKzK,IAAI,IAAK;MAChC,IAAI,CAAC/J,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAMyE,QAAO,GAAIlG,mBAAmB,CAACgI,IAAI,CAAC7I,EAAE;MAC5C,IAAI+G,QAAQ,EAAE;QACZjI,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC,CAAC0B,QAAQ,CAACxG,QAAQ,EAAEwG,QAAQ,CAACiI,WAAW,EAAEjI,QAAQ,CAACsM,SAAS,CAAC;QACtF,OAAOxS,mBAAmB,CAACgI,IAAI,CAAC7I,EAAE;QAClC/B,SAAS,CAACgI,IAAI,CAAC,UAAU4C,IAAI,CAACrK,IAAI,EAAE;MACtC;IACF;;IAEA;IACA,MAAM+U,mBAAkB,GAAKC,KAAK,IAAK;MACrCA,KAAK,CAAC3P,OAAO,CAACgF,IAAG,IAAK;QACpB,IAAI,CAACjI,oBAAoB,CAAC0B,KAAK,CAAC+I,QAAQ,CAACxC,IAAI,CAAC7I,EAAE,CAAC,EAAE;UACjDkT,eAAe,CAACrK,IAAI;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAM4K,mBAAkB,GAAIA,CAAA,KAAM;MAChC9P,MAAM,CAACsH,IAAI,CAACpK,mBAAmB,CAAC,CAACgD,OAAO,CAAC6P,MAAK,IAAK;QACjD,MAAM3M,QAAO,GAAIlG,mBAAmB,CAAC6S,MAAM;QAC3C,IAAI3M,QAAO,IAAKjI,WAAW,CAACwD,KAAK,EAAE;UACjCxD,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC,CAAC0B,QAAQ,CAACxG,QAAQ,EAAEwG,QAAQ,CAACiI,WAAW,EAAEjI,QAAQ,CAACsM,SAAS,CAAC;QACxF;MACF,CAAC;MACD;MACA1P,MAAM,CAACsH,IAAI,CAACpK,mBAAmB,CAAC,CAACgD,OAAO,CAACqH,GAAE,IAAK,OAAOrK,mBAAmB,CAACqK,GAAG,CAAC;MAC/EjN,SAAS,CAACgI,IAAI,CAAC,WAAW;IAC5B;;IAEA;IACA,MAAM0N,mBAAkB,GAAK9K,IAAI,IAAK;MACpC,IAAI,CAAC/J,WAAW,CAACwD,KAAI,IAAK,CAACuG,IAAI,CAACwE,WAAU,IAAKxE,IAAI,CAACwE,WAAW,CAAC5E,MAAK,KAAM,CAAC,EAAE;MAE9E,IAAI;QACF,MAAMO,MAAK,GAAI,IAAIvG,MAAM,CAACD,IAAI,CAACyH,MAAM,CAAC;QACtCpB,IAAI,CAACwE,WAAW,CAACxJ,OAAO,CAACkF,KAAI,IAAK;UAChCC,MAAM,CAACuC,MAAM,CAAC,CAACxC,KAAK,CAAC9F,GAAG,EAAE8F,KAAK,CAAC7F,GAAG,CAAC;QACtC,CAAC;QACDpE,WAAW,CAACwD,KAAK,CAACkJ,SAAS,CAACxC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3D/K,SAAS,CAACkH,OAAO,CAAC,YAAY0D,IAAI,CAACrK,IAAI,EAAE;MAC3C,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMwS,oBAAmB,GAAK/K,IAAI,IAAK;MACrC;MACAiI,QAAQ,CAAC;;MAET;MACAzQ,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGuG,IAAI,CAACwE,WAAW;MACvC7M,iBAAiB,CAAC8B,KAAI,GAAIuG,IAAI,CAAC4D,SAAQ,IAAK,OAAM;MAClDhM,cAAc,CAAC6B,KAAI,GAAIuG,IAAI,CAACgL,eAAc,IAAK,GAAE;MACjDnT,WAAW,CAAC4B,KAAI,GAAIuG,IAAI,CAACiL,YAAW,IAAK,EAAC;;MAE1C;MACAjV,WAAW,CAACyD,KAAI,GAAI,cAAa;;MAEjC;MACAyR,iBAAiB,CAAC;MAElB9V,SAAS,CAACkH,OAAO,CAAC,UAAU0D,IAAI,CAACrK,IAAI,SAAS;IAChD;;IAEA;IACA,MAAMwV,0BAAyB,GAAKC,OAAO,IAAK;MAC9CrT,oBAAoB,CAAC0B,KAAI,GAAI2R,OAAM;IACrC;;IAEA;IACA,MAAMF,iBAAgB,GAAIA,CAACG,aAAY,GAAI,KAAK,KAAK;MACnD,IAAI,CAACpV,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIlC,WAAW,CAACgC,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAE;UAChC3J,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC/E,WAAW,CAACgC,KAAK;UAC1ChC,WAAW,CAACgC,KAAI,GAAI,EAAC;QACvB;QAEA,IAAI/B,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAAC+C,MAAM,CAAC9E,QAAQ,CAAC+B,KAAK;UACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;QACtB;QAEA,IAAIjC,UAAU,CAACiC,KAAK,CAACmG,MAAK,KAAM,CAAC,EAAE;QAEnC,IAAIyL,aAAa,EAAE;UACjB;UACA,MAAM5H,UAAS,GAAIjM,UAAU,CAACiC,KAAK,CAAC,CAAC;UACrC,MAAMkP,QAAO,GAAInR,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI,CAAC;;UAE7D;UACA,IAAI6D,UAAS,IAAK,OAAOA,UAAU,CAACrJ,GAAE,KAAM,QAAO,IAAK,OAAOqJ,UAAU,CAACpJ,GAAE,KAAM,QAAO,IACrF,CAACqG,KAAK,CAAC+C,UAAU,CAACrJ,GAAG,KAAK,CAACsG,KAAK,CAAC+C,UAAU,CAACpJ,GAAG,CAAC,EAAE;YACpD,MAAM8L,WAAU,GAAI,IAAIvM,MAAM,CAACD,IAAI,CAAC8B,MAAM,CAAC;cACzCC,QAAQ,EAAE,CAAC+H,UAAU,CAACrJ,GAAG,EAAEqJ,UAAU,CAACpJ,GAAG,CAAC;cAC1CsB,IAAI,EAAE,IAAI/B,MAAM,CAACD,IAAI,CAACiC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsBzD,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJ0D,SAAS,EAAE,IAAIpC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQwH,UAAU,CAACrJ,GAAG,CAAC8B,OAAO,CAAC,CAAC,CAAC,KAAKuH,UAAU,CAACpJ,GAAG,CAAC6B,OAAO,CAAC,CAAC,CAAC,GAAG;cACzEb,MAAM,EAAE;YACV,CAAC;YACD5D,WAAW,CAACgC,KAAK,CAAC4C,IAAI,CAAC8J,WAAW;UACpC;;UAEA;UACA,IAAIwC,QAAO,IAAK,OAAOA,QAAQ,CAACvO,GAAE,KAAM,QAAO,IAAK,OAAOuO,QAAQ,CAACtO,GAAE,KAAM,QAAO,IAC/E,CAACqG,KAAK,CAACiI,QAAQ,CAACvO,GAAG,KAAK,CAACsG,KAAK,CAACiI,QAAQ,CAACtO,GAAG,MAC1CsO,QAAQ,CAACvO,GAAE,KAAMqJ,UAAU,CAACrJ,GAAE,IAAKuO,QAAQ,CAACtO,GAAE,KAAMoJ,UAAU,CAACpJ,GAAG,CAAC,EAAE;YACxE,MAAMmQ,SAAQ,GAAI,IAAI5Q,MAAM,CAACD,IAAI,CAAC8B,MAAM,CAAC;cACvCC,QAAQ,EAAE,CAACiN,QAAQ,CAACvO,GAAG,EAAEuO,QAAQ,CAACtO,GAAG,CAAC;cACtCsB,IAAI,EAAE,IAAI/B,MAAM,CAACD,IAAI,CAACiC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsBzD,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJ0D,SAAS,EAAE,IAAIpC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQ0M,QAAQ,CAACvO,GAAG,CAAC8B,OAAO,CAAC,CAAC,CAAC,KAAKyM,QAAQ,CAACtO,GAAG,CAAC6B,OAAO,CAAC,CAAC,CAAC,GAAG;cACrEb,MAAM,EAAE;YACV,CAAC;YACD5D,WAAW,CAACgC,KAAK,CAAC4C,IAAI,CAACmO,SAAS;UAClC;QACF,OAAO;UACL;UACAhT,UAAU,CAACiC,KAAK,CAACuB,OAAO,CAAC,CAACkF,KAAK,EAAEgD,KAAK,KAAK;YACzC;YACA,IAAI,CAAChD,KAAI,IAAK,OAAOA,KAAK,CAAC9F,GAAE,KAAM,QAAO,IAAK,OAAO8F,KAAK,CAAC7F,GAAE,KAAM,QAAO,IACvEqG,KAAK,CAACR,KAAK,CAAC9F,GAAG,KAAKsG,KAAK,CAACR,KAAK,CAAC7F,GAAG,CAAC,EAAE;cACxC7B,OAAO,CAACC,IAAI,CAAC,YAAYyK,KAAK,GAAG,EAAEhD,KAAK;cACxC;YACF;YAEA,MAAMoL,OAAM,GAAIpI,KAAI,KAAM;YAC1B,MAAMqI,KAAI,GAAIrI,KAAI,KAAM1L,UAAU,CAACiC,KAAK,CAACmG,MAAK,GAAI;;YAElD;YACA,MAAMpE,MAAK,GAAI,IAAI5B,MAAM,CAACD,IAAI,CAAC8B,MAAM,CAAC;cACpCC,QAAQ,EAAE,CAACwE,KAAK,CAAC9F,GAAG,EAAE8F,KAAK,CAAC7F,GAAG,CAAC;cAChCsB,IAAI,EAAE,IAAI/B,MAAM,CAACD,IAAI,CAACiC,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAIjC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAACwP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE,CAAC;gBAChEvP,KAAK,EAAE,sBAAsBzD,kBAAkB,CAAC;mEACGgT,OAAM,GAAI,EAAC,GAAI,EAAE,aAAaA,OAAM,GAAI,EAAC,GAAI,EAAE;2DACvDA,OAAM,GAAI,SAAQ,GAAKC,KAAI,GAAI,SAAQ,GAAI,SAAU;8GACFD,OAAM,GAAI,GAAE,GAAKC,KAAI,GAAI,GAAE,GAAIrI,KAAM;;iBAElI,CAAC,EAAE;gBACJlH,SAAS,EAAE,IAAIpC,MAAM,CAACD,IAAI,CAACmC,IAAI,CAACwP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE;cACtE,CAAC,CAAC;cACFrP,KAAK,EAAE,GAAGqP,OAAM,GAAI,IAAG,GAAKC,KAAI,GAAI,IAAG,GAAI,MAAMrI,KAAK,EAAG,MAAMhD,KAAK,CAAC9F,GAAG,CAAC8B,OAAO,CAAC,CAAC,CAAC,KAAKgE,KAAK,CAAC7F,GAAG,CAAC6B,OAAO,CAAC,CAAC,CAAC,GAAG;cAC/Gb,MAAM,EAAE;YACV,CAAC;YAED5D,WAAW,CAACgC,KAAK,CAAC4C,IAAI,CAACb,MAAM;UAC/B,CAAC;QACH;;QAEA;QACA,IAAI/D,WAAW,CAACgC,KAAK,CAACmG,MAAK,GAAI,CAAC,EAAE;UAChC3J,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAAC3E,WAAW,CAACgC,KAAK;QACzC;;QAEA;QACA,IAAI3B,QAAQ,CAAC2B,KAAI,IAAK3B,QAAQ,CAAC2B,KAAK,CAACuG,IAAI,EAAE;UACzC,IAAI8E,QAAO,GAAIhN,QAAQ,CAAC2B,KAAK,CAACuG,IAAG;;UAEjC;UACA,IAAI,OAAO8E,QAAO,KAAM,QAAQ,EAAE;YAChC,IAAI;cACFA,QAAO,GAAI/F,IAAI,CAACyM,KAAK,CAAC1G,QAAQ;YAChC,EAAE,OAAO3K,CAAC,EAAE;cACV3B,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE4B,CAAC;cAC5B2K,QAAO,GAAI,EAAC;YACd;UACF;UAEA,IAAItE,KAAK,CAACC,OAAO,CAACqE,QAAQ,KAAKA,QAAQ,CAAClF,MAAK,GAAI,CAAC,EAAE;YAClD;YACA,MAAMqG,UAAS,GAAInB,QAAQ,CAACtL,GAAG,CAAC0G,KAAI,IAAK;cACvC,IAAI,OAAOA,KAAI,KAAM,QAAO,IAAKA,KAAK,CAAC9F,GAAE,KAAMqR,SAAQ,IAAKvL,KAAK,CAAC7F,GAAE,KAAMoR,SAAS,EAAE;gBACnF,MAAMrR,GAAE,GAAIsR,UAAU,CAACxL,KAAK,CAAC9F,GAAG;gBAChC,MAAMC,GAAE,GAAIqR,UAAU,CAACxL,KAAK,CAAC7F,GAAG;gBAChC,IAAI,CAACqG,KAAK,CAACtG,GAAG,KAAK,CAACsG,KAAK,CAACrG,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF,OAAO,IAAImG,KAAK,CAACC,OAAO,CAACP,KAAK,KAAKA,KAAK,CAACN,MAAK,IAAK,CAAC,EAAE;gBACpD,MAAMxF,GAAE,GAAIsR,UAAU,CAACxL,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAM7F,GAAE,GAAIqR,UAAU,CAACxL,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAACQ,KAAK,CAACtG,GAAG,KAAK,CAACsG,KAAK,CAACrG,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF;cACA7B,OAAO,CAACC,IAAI,CAAC,WAAW,EAAEyH,KAAK;cAC/B,OAAO,IAAG;YACZ,CAAC,CAAC,CAAC2B,MAAM,CAACiI,KAAI,IAAKA,KAAI,KAAM,IAAI;YAEjCtR,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEuM,UAAU,CAACrG,MAAM;YAE1C,IAAIqG,UAAU,CAACrG,MAAK,GAAI,CAAC,EAAE;cACzB,MAAM+L,WAAU,GAAI,IAAI/R,MAAM,CAACD,IAAI,CAACoJ,QAAQ,CAAC;gBAC3C/C,IAAI,EAAEiG,UAAU;gBAChB3I,WAAW,EAAE,SAAS;gBACtBC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE,GAAG;gBAClBwF,WAAW,EAAE,OAAO;gBACpBsH,OAAO,EAAE;cACX,CAAC;cAED5S,QAAQ,CAAC+B,KAAI,GAAIkS,WAAU;cAC3B1V,WAAW,CAACwD,KAAK,CAAC2C,GAAG,CAACuP,WAAW;YACnC;UACF;QACF;MAEF,EAAE,OAAOpT,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;MACjC;IACF;;IAEA;IACA,MAAMqT,yBAAwB,GAAKC,WAAW,IAAK;MACjD,IAAI;QACF;QACA5D,QAAQ,CAAC;;QAET;QACAzQ,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGoS,WAAW,CAACrU,UAAU;;QAE7C;QACAG,iBAAiB,CAAC8B,KAAI,GAAIoS,WAAW,CAACjI,SAAQ;QAC9ChM,cAAc,CAAC6B,KAAI,GAAIoS,WAAW,CAACjU,cAAa;QAChDC,WAAW,CAAC4B,KAAI,GAAIoS,WAAW,CAAChU,WAAU;;QAE1C;QACAC,QAAQ,CAAC2B,KAAI,GAAIoS,WAAW,CAAC/T,QAAO;;QAEpC;QACAoT,iBAAiB,CAAC,IAAI;;QAEtB;QACA7M,UAAU,CAAC,MAAM;UACfsL,SAAS,CAAC;QACZ,CAAC,EAAE,GAAG;QAENnR,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEmS,WAAW;MAEtC,EAAE,OAAOtT,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;MAC5B;IACF;IAEAxD,SAAS,CAAC,MAAM;MACd;MACAyD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACL3D,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZE,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MACRC,oBAAoB;MAEpB2C,cAAc;MACdnB,WAAW;MACXW,UAAU;MACVoB,aAAa;MACbiB,YAAY;MACZhB,aAAa;MACbkB,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBE,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACXuE,UAAU;MACVG,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdxB,aAAa;MACb+B,qBAAqB;MACrBG,UAAU;MACVQ,WAAW;MACXM,QAAQ;MACRsE,WAAW;MACXI,QAAQ;MACRC,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXiB,SAAS;MACTf,iBAAiB;MAEjB;MACAyB,eAAe;MACfI,eAAe;MACfC,mBAAmB;MACnBE,mBAAmB;MACnBE,mBAAmB;MACnBC,oBAAoB;MACpBI,0BAA0B;MAC1BS,yBAAyB;MACzBV,iBAAiB;MAEjB;MACAY,iBAAiB,EAAG1U,IAAI,IAAKsB,gBAAgB,CAACtB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnEoW,kBAAkB,EAAG1U,KAAK,IAAK4B,iBAAiB,CAAC5B,KAAK,CAAC,EAAE1B,IAAG,IAAK;IACnE;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3c8eec196f89e122b0dde6f671e7bf3318f90399d30c4dce600f1ff8468abd24.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3c8eec196f89e122b0dde6f671e7bf3318f90399d30c4dce600f1ff8468abd24.json
new file mode 100644
index 00000000..28d8c296
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3c8eec196f89e122b0dde6f671e7bf3318f90399d30c4dce600f1ff8468abd24.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed } from 'vue';\nexport default {\n name: 'PathPlanningPanel',\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName\n };\n }\n};","map":{"version":3,"names":["ref","computed","name","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3fa6d7cc0c7d65e72f8e54943b33d47a27252f4d4acbcea5c538f9425c122f3b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3fa6d7cc0c7d65e72f8e54943b33d47a27252f4d4acbcea5c538f9425c122f3b.json
new file mode 100644
index 00000000..0b564f4b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3fa6d7cc0c7d65e72f8e54943b33d47a27252f4d4acbcea5c538f9425c122f3b.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/40d6fca70ab8b822bb748c5bbe4df395e2d22174ab8e8a5029fd30f0db605f8d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/40d6fca70ab8b822bb748c5bbe4df395e2d22174ab8e8a5029fd30f0db605f8d.json
new file mode 100644
index 00000000..a44c9896
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/40d6fca70ab8b822bb748c5bbe4df395e2d22174ab8e8a5029fd30f0db605f8d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAkB;;EAEtBA,KAAK,EAAC;AAAY;;EAEhBA,KAAK,EAAC;AAAgB;;EAIhBA,KAAK,EAAC;AAAwB;;EAY9BA,KAAK,EAAC;AAAwB;;EA8B9BA,KAAK,EAAC;AAAwB;;EA0B9BA,KAAK,EAAC;AAAwB;;EAkBtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;;uBAhH/BC,mBAAA,CA+JM,OA/JNC,UA+JM,GA9JJC,mBAAA,YAAe,EACfC,mBAAA,CAyFM,OAzFNC,UAyFM,GAxFJF,mBAAA,eAAkB,EAClBC,mBAAA,CAsFM,OAtFNE,UAsFM,GArFJC,YAAA,CAoFUC,kBAAA;gBApFQC,MAAA,CAAAC,WAAW;+DAAXD,MAAA,CAAAC,WAAW,GAAAC,MAAA;IAAGC,UAAS,EAAEH,MAAA,CAAAI,cAAc;IAAE,cAAY,EAAC;;sBACtE,MAAe,CAAfV,mBAAA,YAAe,EACfI,YAAA,CAScO,sBAAA;MATDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAOM,CAPNZ,mBAAA,CAOM,OAPNa,UAOM,GANJV,YAAA,CAKEW,0BAAA;QAJCC,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BC,cAAa,EAAEZ,MAAA,CAAAa,YAAY;QAC3B,UAAQ,EAAEb,MAAA,CAAAc,OAAO;QACjB,eAAa,EAAEd,MAAA,CAAAe;;;QAKtBrB,mBAAA,aAAgB,EAChBI,YAAA,CA2BcO,sBAAA;MA3BDC,KAAK,EAAC,OAAO;MAACC,IAAI,EAAC;;wBAC9B,MAyBM,CAzBNZ,mBAAA,CAyBM,OAzBNqB,UAyBM,GAxBJlB,YAAA,CAuBEmB,4BAAA;QAtBC,cAAY,EAAEjB,MAAA,CAAAkB,WAAW;QACzB,kBAAgB,EAAElB,MAAA,CAAAmB,cAAc;QAChC,qBAAmB,EAAEnB,MAAA,CAAAoB,iBAAiB;QACtC,WAAS,EAAEpB,MAAA,CAAAqB,QAAQ;QACnB,cAAY,EAAErB,MAAA,CAAAsB,WAAW;QACzB,eAAa,EAAEtB,MAAA,CAAAuB,YAAY;QAC3B,oBAAkB,EAAEvB,MAAA,CAAAwB,iBAAiB;QACrC,mBAAiB,EAAExB,MAAA,CAAAyB,eAAe;QAClC,gBAAc,EAAEzB,MAAA,CAAA0B,aAAa;QAC7BC,oBAAqB,EAAE3B,MAAA,CAAA4B,sBAAsB;QAC7CC,qBAAsB,EAAE7B,MAAA,CAAA8B,uBAAuB;QAC/CC,aAAa,EAAE/B,MAAA,CAAAgC,WAAW;QAC1BC,YAAW,EAAEjC,MAAA,CAAAkC,UAAU;QACvBC,YAAW,EAAEnC,MAAA,CAAAoC,UAAU;QACvBC,UAAS,EAAErC,MAAA,CAAAsC,QAAQ;QACnBC,eAAe,EAAEvC,MAAA,CAAAwC,aAAa;QAC9BC,uBAAuB,EAAEzC,MAAA,CAAA0C,qBAAqB;QAC9CC,oBAAoB,EAAE3C,MAAA,CAAA4C,kBAAkB;QACxCC,yBAAyB,EAAE7C,MAAA,CAAA8C,uBAAuB;QAClDC,uBAAwB,EAAE/C,MAAA,CAAAgD,qBAAqB;QAC/CC,gBAAgB,EAAEjD,MAAA,CAAAkD,cAAc;QAChCC,YAAY,EAAEnD,MAAA,CAAAoD;;;QAKrB1D,mBAAA,YAAe,EACfI,YAAA,CAuBcO,sBAAA;MAvBDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAqBM,CArBNZ,mBAAA,CAqBM,OArBN0D,UAqBM,GApBJvD,YAAA,CAmBEwD,8BAAA;QAlBC,aAAW,EAAEtD,MAAA,CAAAuD,UAAU;QACvB,UAAQ,EAAEvD,MAAA,CAAAc,OAAO;QACjB,oBAAkB,EAAEd,MAAA,CAAAwD,iBAAiB;QACrC,iBAAe,EAAExD,MAAA,CAAAyD,cAAc;QAC/B,cAAY,EAAEzD,MAAA,CAAA0D,WAAW;QACzB,WAAS,EAAE1D,MAAA,CAAA2D,QAAQ;QACnBjD,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BiD,UAAS,EAAE5D,MAAA,CAAA6D,QAAQ;QACnBC,UAAS,EAAE9D,MAAA,CAAA+D,QAAQ;QACnBC,aAAY,EAAEhE,MAAA,CAAAiE,WAAW;QACzBC,aAAY,EAAElE,MAAA,CAAAmE,WAAW;QACzBC,eAAe,EAAEpE,MAAA,CAAAqE,aAAa;QAC9BC,aAAa,EAAEtE,MAAA,CAAAuE,WAAW;QAC1BC,WAAW,EAAExE,MAAA,CAAAyE,SAAS;QACtBC,yBAAyB,EAAE1E,MAAA,CAAA2E,uBAAuB;QAClDC,sBAAsB,EAAE5E,MAAA,CAAA6E,oBAAoB;QAC5CC,mBAAmB,EAAE9E,MAAA,CAAA+E,iBAAiB;QACtCC,iBAAiB,EAAEhF,MAAA,CAAAiF;;;QAK1BvF,mBAAA,YAAe,EACfI,YAAA,CAacO,sBAAA;MAbDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAWM,CAXNZ,mBAAA,CAWM,OAXNuF,UAWM,GAVJpF,YAAA,CASEqF,6BAAA;QARC,gBAAc,EAAEnF,MAAA,CAAAoF,oBAAoB;QACpCC,UAAS,EAAErF,MAAA,CAAAsF,eAAe;QAC1BC,UAAS,EAAEvF,MAAA,CAAAwF,eAAe;QAC1BC,cAAc,EAAEzF,MAAA,CAAA0F,mBAAmB;QACnCC,cAAc,EAAE3F,MAAA,CAAA4F,mBAAmB;QACnCC,cAAc,EAAE7F,MAAA,CAAA8F,mBAAmB;QACnCC,eAAc,EAAE/F,MAAA,CAAAgG,oBAAoB;QACpCC,qBAAqB,EAAEjG,MAAA,CAAAkG;;;;;uDAQpCxG,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNwG,UA0BM,GAzBJrG,YAAA,CAKEsG,oBAAA;IAJCC,IAAI,EAAErG,MAAA,CAAAC,WAAW;IACjBqG,WAAU,EAAEtG,MAAA,CAAAsG,WAAW;IACvBC,UAAS,EAAEvG,MAAA,CAAAuG,UAAU;IACtBC,GAAG,EAAC;kEAGN9G,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANNiH,UAMM,GALJ3G,YAAA,CAIE4G,mBAAA;IAHCC,KAAK,EAAE3G,MAAA,CAAA4G,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJnH,mBAAA,YAAe,EACJM,MAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNsH,WAOM,GANJhH,YAAA,CAKE4G,mBAAA;IAJCC,KAAK,EAAE3G,MAAA,CAAA+G,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBtH,mBAAA,cAAiB,EACjBI,YAAA,CAmCYmH,oBAAA;gBAlCDjH,MAAA,CAAAkH,iBAAiB;+DAAjBlH,MAAA,CAAAkH,iBAAiB,GAAAhH,MAAA;IAC1ByG,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DvH,YAAA,CAA4DwH,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAtH,MAAA,IAAEF,MAAA,CAAAkH,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChD1H,YAAA,CAAgEwH,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEvH,MAAA,CAAAkD;;wBAAgB,MAAEsE,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBV1H,YAAA,CAyBU2H,kBAAA;MAzBAC,KAAK,EAAE1H,MAAA,CAAA2H,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf9H,YAAA,CAQe+H,uBAAA;QARDvH,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMYgI,oBAAA;sBANQ9H,MAAA,CAAA2H,QAAQ,CAACd,IAAI;qEAAb7G,MAAA,CAAA2H,QAAQ,CAACd,IAAI,GAAA3G,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxCjI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAAyCkI,oBAAA;YAA9B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAOe+H,uBAAA;QAPDvH,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKYgI,oBAAA;sBALQ9H,MAAA,CAAA2H,QAAQ,CAACO,KAAK;qEAAdlI,MAAA,CAAA2H,QAAQ,CAACO,KAAK,GAAAhI,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArCjI,YAAA,CAAqCkI,oBAAA;YAA1B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAsCkI,oBAAA;YAA3B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAMe+H,uBAAA;QANDvH,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEqI,mBAAA;sBAHSnI,MAAA,CAAA2H,QAAQ,CAACS,WAAW;qEAApBpI,MAAA,CAAA2H,QAAQ,CAACS,WAAW,GAAAlI,MAAA;UAC7B2G,IAAI,EAAC,UAAU;UACdwB,IAAI,EAAE","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/41292debfd3daa31b0db7a39442cf2b52cfb9612fbafe0c96e2f3236481bd729.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/41292debfd3daa31b0db7a39442cf2b52cfb9612fbafe0c96e2f3236481bd729.json
new file mode 100644
index 00000000..da82bb4a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/41292debfd3daa31b0db7a39442cf2b52cfb9612fbafe0c96e2f3236481bd729.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/419f95c061f3616535aaf5c7a19796523d15d3acf0157cf1edd604fc9b6e9b5f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/419f95c061f3616535aaf5c7a19796523d15d3acf0157cf1edd604fc9b6e9b5f.json
new file mode 100644
index 00000000..b22cc0a8
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/419f95c061f3616535aaf5c7a19796523d15d3acf0157cf1edd604fc9b6e9b5f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/41e94e2332d847d89dc8b345e2484c6d4fd194d779496933d6e56ba90d8c64ad.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/41e94e2332d847d89dc8b345e2484c6d4fd194d779496933d6e56ba90d8c64ad.json
new file mode 100644
index 00000000..43f22e73
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/41e94e2332d847d89dc8b345e2484c6d4fd194d779496933d6e56ba90d8c64ad.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/42e1b6ebf56ef6b3e99d84efd1492468e3ebe50950c61d3c02e243a4e7f0890b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/42e1b6ebf56ef6b3e99d84efd1492468e3ebe50950c61d3c02e243a4e7f0890b.json
new file mode 100644
index 00000000..437fd741
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/42e1b6ebf56ef6b3e99d84efd1492468e3ebe50950c61d3c02e243a4e7f0890b.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 显示历史路径对话框\n const showHistoryDialog = () => {\n historyDialogVisible.value = true;\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n console.log('正在获取历史路径列表...');\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`, config);\n console.log('历史路径API响应:', response.data);\n if (response.data.success) {\n historyPaths.value = response.data.data || [];\n console.log(`成功加载${historyPaths.value.length}条历史路径`);\n } else {\n ElMessage.error(response.data.message || '获取历史路径失败');\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n if (error.response) {\n console.error('响应状态:', error.response.status);\n console.error('响应数据:', error.response.data);\n ElMessage.error(`获取历史路径失败: ${error.response.data?.message || error.response.statusText}`);\n } else if (error.request) {\n console.error('请求失败,无响应');\n ElMessage.error('网络请求失败,请检查网络连接');\n } else {\n ElMessage.error('获取历史路径失败: ' + error.message);\n }\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`, config);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return {\n lng: parseFloat(point.lng),\n lat: parseFloat(point.lat),\n altitude: point.altitude || pathData.flight_altitude || 100\n };\n } else if (Array.isArray(point) && point.length >= 2) {\n return {\n lng: parseFloat(point[0]),\n lat: parseFloat(point[1]),\n altitude: point[2] || pathData.flight_altitude || 100\n };\n } else {\n console.warn(`路径点格式不正确 (索引${index}):`, point);\n return null;\n }\n }).filter(point => point !== null);\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: pathData.flight_altitude || 100,\n flightSpeed: pathData.flight_speed || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","showHistoryDialog","loadHistoryPaths","console","log","token","localStorage","getItem","config","headers","response","data","success","length","error","message","statusText","request","selectHistoryPath","loadHistoryPath","id","pathData","path_points","JSON","parse","e","isArray","map","point","index","lng","undefined","lat","parseFloat","flight_altitude","warn","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/42ec3648f4c084bd90d2ec7c2de82cf958c271243d784553610cb9c08cf051f1.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/42ec3648f4c084bd90d2ec7c2de82cf958c271243d784553610cb9c08cf051f1.json
new file mode 100644
index 00000000..95db9a62
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/42ec3648f4c084bd90d2ec7c2de82cf958c271243d784553610cb9c08cf051f1.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区原始数据:', threatZones.value);\n console.log('威胁区详细信息:');\n threatZones.value.forEach((zone, index) => {\n console.log(`威胁区 ${index + 1}:`, {\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n geometry: zone.geometry,\n description: zone.description\n });\n });\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","geometry_type","geometry_data","startPoint","slice","planningData","algorithm","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isNaN","isFinite","Number","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAoKA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAI,QAAS,KAAI;AAC5D,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAS,EAAEC,YAAW,QAAS,cAAa;AACrD,OAAOC,SAAQ,MAAO,6BAA4B;AAClD,OAAOC,aAAY,MAAO,4CAA2C;AACrE,OAAOC,eAAc,MAAO,8CAA6C;AACzE,OAAOC,iBAAgB,MAAO,gDAA+C;AAC7E,OAAOC,gBAAe,MAAO,+CAA8C;AAE3E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVN,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIX,QAAQ,CAAC;IACvB,MAAMY,YAAW,GAAIjB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMmB,WAAU,GAAInB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMoB,OAAM,GAAIpB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMqB,YAAW,GAAIrB,GAAG,CAAC,EAAE;IAC3B,MAAMsB,aAAY,GAAItB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMuB,WAAU,GAAIvB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMwB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIzB,GAAG,CAAC,IAAI;IACzB,MAAM0B,iBAAgB,GAAI1B,GAAG,CAAC,OAAO;IACrC,MAAM2B,WAAU,GAAI3B,GAAG,CAAC,QAAQ;IAChC,MAAM4B,YAAW,GAAI5B,GAAG,CAAC,IAAI;IAC7B,MAAM6B,iBAAgB,GAAI7B,GAAG,CAAC,EAAE;IAChC,MAAM8B,eAAc,GAAI9B,GAAG,CAAC,CAAC,IAAI+B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIjC,GAAG,CAAC,IAAI;IAC/B,MAAMkC,aAAY,GAAIlC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMmC,iBAAgB,GAAInC,GAAG,CAAC,KAAK;IACnC,MAAMoC,QAAO,GAAIpC,GAAG,CAAC;MACnBqC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAI1C,GAAG,CAAC,EAAE;IACzB,MAAM2C,WAAU,GAAI3C,GAAG,CAAC,EAAE;IAC1B,MAAM4C,QAAO,GAAI5C,GAAG,CAAC,IAAI;IACzB,MAAM6C,iBAAgB,GAAI7C,GAAG,CAAC,OAAO;IACrC,MAAM8C,cAAa,GAAI9C,GAAG,CAAC,GAAG;IAC9B,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMiD,oBAAmB,GAAIjD,GAAG,CAAC,EAAE;IACnC,MAAMkD,mBAAkB,GAAI,CAAC,GAAG;;IAEhC;IACA,MAAMC,SAAQ,GAAInD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMoD,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,gBAAe,GAAI;MACvBC,KAAK,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAEpD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAErD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEzD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAE1D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAE3D,IAAI,EAAE,MAAM;QAAEwD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BvD,WAAW,CAACwD,KAAI,GAAID,GAAE;MACtBhB,OAAO,CAACkB,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACF1B,SAAS,CAACwB,KAAI,GAAI,IAAIE,IAAI,CAACE,SAAS,CAACL,GAAG;UACxCvB,SAAS,CAACwB,KAAK,CAACK,EAAE,CAAC,MAAM,EAAEC,cAAc;UACzCvB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;QAC9B,EAAE,OAAOnB,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK;QACxC;MACF;;MAEA;MACAyB,WAAW,CAAC;IACd;;IAEA;IACA,MAAMA,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACFxB,OAAO,CAACkB,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMO,eAAe,CAAC;QAEtBzB,OAAO,CAACkB,GAAG,CAAC,UAAU;MAExB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM2B,UAAS,GAAKC,CAAC,IAAK;MACxB,MAAM;QAAEC,GAAG;QAAEC;MAAI,IAAIF,CAAC,CAACG,MAAK;MAE5B,IAAItE,WAAW,CAACyD,KAAI,KAAM,UAAS,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAIrE,WAAW,CAACyD,KAAI,KAAM,cAAa,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QAChE;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQzE,WAAW,CAACyD,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAQ,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA;MACJ;IACF;;IAEA;IACA,MAAMS,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACAxE,OAAO,CAACuD,KAAI,GAAI,KAAI;MACpBlD,QAAQ,CAACkD,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAF,uBAAuB,CAAC;IAC1B;;IAEA;;IAEA;IACA,MAAMG,aAAY,GAAIA,CAAA,KAAM;MAC1B1E,OAAO,CAACuD,KAAI,GAAI,CAACvD,OAAO,CAACuD,KAAI;MAC7B;MACA,IAAIzD,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;QACtClD,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;UACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;;IAIA;IACA,MAAME,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI7E,WAAW,CAACyD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIzD,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C,OAAO,WAAU;MACnB;MACA,OAAO,EAAC;IACV;;IAEA;;IAEA;IACA,MAAMc,cAAa,GAAIA,CAACH,GAAG,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACpE,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAMmB,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFoD,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,WAAWnB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAV,MAAM,CAAChB,EAAE,CAAC,OAAO,EAAE,MAAM;QACvB1E,SAAS,CAAC;UACRqG,OAAO,EAAE,UAAUrB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDpE,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5B1E,aAAa,CAACqD,KAAK,CAACkC,IAAI,CAACb,MAAM;MAC/B3E,YAAY,CAACsD,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;MAEpCjF,SAAS,CAACwG,OAAO,CAAC,WAAWxB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMK,YAAW,GAAIA,CAAA,KAAM;MACzBzF,aAAa,CAACqD,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QACpC7E,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACD1E,aAAa,CAACqD,KAAI,GAAI,EAAC;MACvBtD,YAAY,CAACsD,KAAI,GAAI,EAAC;MACtBrE,SAAS,CAACwG,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMI,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIzF,QAAQ,CAACkD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMwC,sBAAqB,GAAK7E,IAAI,IAAK;MACvCZ,iBAAiB,CAACiD,KAAI,GAAIrC,IAAG;IAC/B;;IAEA;IACA,MAAM8E,uBAAsB,GAAK7E,KAAK,IAAK;MACzCZ,WAAW,CAACgD,KAAI,GAAIpC,KAAI;IAC1B;;IAEA;IACA,MAAM8E,kBAAiB,GAAKC,MAAM,IAAK;MACrC1F,YAAY,CAAC+C,KAAI,GAAI2C,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxC3F,iBAAiB,CAAC8C,KAAI,GAAI6C,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvC5F,eAAe,CAAC6C,KAAI,GAAI+C,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACzE,SAAS,CAACwB,KAAK,EAAE;QACpBrE,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIhC,QAAQ,CAACkD,KAAI,KAAMiD,IAAI,EAAE;QAC3B;QACAnG,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAI;UACFxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOpC,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAnD,SAAS,CAACuH,IAAI,CAAC,SAAS;QACxB;MACF;MAEApG,QAAQ,CAACkD,KAAI,GAAIiD,IAAG;MACpBxG,OAAO,CAACuD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAMmD,OAAM,GAAI;QACdC,WAAW,EAAEnE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC5DkE,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEtE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC1DqE,WAAW,EAAEhE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;MACpD;MAEA,IAAI;QACFX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEgD,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACXzE,SAAS,CAACwB,KAAK,CAACyD,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZ3E,SAAS,CAACwB,KAAK,CAAC0D,OAAO,CAACP,OAAO;YAC/B;UACF,KAAK,WAAW;YACd3E,SAAS,CAACwB,KAAK,CAAC2D,SAAS,CAACR,OAAO;YACjC;QACJ;QAEAxH,SAAS,CAACuH,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOzD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1BhC,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOsD,KAAK,IAAK;MACtC;MACA,MAAMC,OAAM,GAAIpI,KAAK,CAACmI,KAAK,CAACE,GAAG;MAE/B/E,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE4D,OAAO;MACjC9E,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAE4D,OAAO,CAACE,SAAQ,IAAKF,OAAO,CAACG,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAIzH,WAAW,CAACwD,KAAK,CAACkE,cAAc,CAAC,SAAS;QAC3DnF,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEgE,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC5DkE,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEtE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkE,YAAY;QACnCN,OAAO,CAACO,UAAU,CAACD,YAAY;;QAE/B;QACAE,UAAU,CAAC,MAAM;UACf7H,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAENvF,OAAO,CAACkB,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMhB,QAAO,GAAIyG,sBAAsB,CAACV,OAAO;;MAE/C;MACA,IAAI,CAAC9G,iBAAiB,CAACiD,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE/B,iBAAiB,CAACiD,KAAK;QAChDrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC9B,WAAW,CAACgD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE9B,WAAW,CAACgD,KAAK;QAC1CrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChB,QAAQ,EAAE;QACbiB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBnD,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAM0F,QAAO,GAAI;QACf7G,IAAI,EAAEZ,iBAAiB,CAACiD,KAAK;QAC7BpC,KAAK,EAAEZ,WAAW,CAACgD,KAAK;QACxBnC,WAAW,EAAEX,iBAAiB,CAAC8C,KAAI,IAAK,EAAE;QAC1CyE,SAAS,EAAE,CAAC,GAAGtH,eAAe,CAAC6C,KAAK,CAAC;QAAE;QACvClC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFiB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuE,QAAQ;QAClCzF,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAElD,iBAAiB,CAACiD,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEjD,WAAW,CAACgD,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE/C,iBAAiB,CAAC8C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEnC,QAAQ;;QAE7B;QACA,MAAM4G,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;UAChDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,QAAQ;QAC/B,CAAC;QAEDzF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE5D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEsG,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsF,MAAM;QAE9B,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClB,MAAMsD,IAAG,GAAIF,MAAM,CAACG,IAAG;;UAEvB;UACAlJ,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;;UAEhC;UACA8B,qBAAqB,CAACF,IAAI;UAE1B9J,SAAS,CAACwG,OAAO,CAAC,MAAMlD,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAAC9D,IAAI,IAAI;UAC1E6C,OAAO,CAACkB,GAAG,CAAC,kBAAkB,EAAEwF,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;;QAE3C;QACAxF,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;MAClC;;MAEA;MACA/G,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAnC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErD,WAAW,CAACoD,KAAK,CAAC4F,MAAM;IAClD;IAEA,MAAMrB,sBAAqB,GAAKV,OAAO,IAAK;MAC1C9E,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE4D,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MAEjE,IAAI;QACF,IAAIF,OAAO,CAACG,UAAS,KAAM,aAAY,IAAKH,OAAO,CAACE,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM8B,MAAK,GAAIhC,OAAO,CAACiC,SAAS,CAAC;UACjC,MAAMnD,MAAK,GAAIkB,OAAO,CAACkC,SAAS,CAAC;UACjChH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;YAAE4F,MAAM;YAAElD;UAAO,CAAC;UACzC,OAAO;YACLhF,IAAI,EAAE,QAAQ;YACdkI,MAAM,EAAE,CAACA,MAAM,CAAClF,GAAG,EAAEkF,MAAM,CAACjF,GAAG,CAAC;YAChC+B,MAAM,EAAEA;UACV;QACF,OAAO,IAAIkB,OAAO,CAACG,UAAS,KAAM,cAAa,IAAKH,OAAO,CAACE,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAMiC,IAAG,GAAInC,OAAO,CAACoC,OAAO,CAAC;UAC7BlH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,IAAI;UAC5B,OAAO;YACLrI,IAAI,EAAE,SAAS;YACfqI,IAAI,EAAEA,IAAI,CAACjG,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;UAChD;QACF,OAAO,IAAIiD,OAAO,CAACG,UAAS,KAAM,gBAAe,IAAKH,OAAO,CAACE,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMoC,MAAK,GAAItC,OAAO,CAACuC,SAAS,CAAC;UACjCrH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkG,MAAM;UAC7B,OAAO;YACLxI,IAAI,EAAE,WAAW;YACjBwI,MAAM,EAAE,CAACA,MAAM,CAACE,YAAY,CAAC,CAAC,CAAC1F,GAAG,EAAEwF,MAAM,CAACE,YAAY,CAAC,CAAC,CAACzF,GAAG,EACrDuF,MAAM,CAACG,YAAY,CAAC,CAAC,CAAC3F,GAAG,EAAEwF,MAAM,CAACG,YAAY,CAAC,CAAC,CAAC1F,GAAG;UAC9D;QACF;MACF,EAAE,OAAO9B,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE+E,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAMvD,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFzB,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,0BAA0B;QAEtC,MAAMyE,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChD5F,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE9D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEsG,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEsF,MAAM;QAEhC,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClBpD,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEsF,MAAM,CAACG,IAAI;;UAEtC;UACAa,aAAa,CAAC,IAAI;;UAElB;UACAhB,MAAM,CAACG,IAAI,CAACrD,OAAO,CAACoD,IAAG,IAAK;YAC1BE,qBAAqB,CAACF,IAAI;UAC5B,CAAC;UAED1G,OAAO,CAACkB,GAAG,CAAC,QAAQsF,MAAM,CAACG,IAAI,CAACE,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAIN,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM2D,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAACjJ,WAAW,CAACwD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;MAEA,IAAI;QACFC,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEwF,IAAI;QAE/B,MAAMvF,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAI2D,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAMM,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC5DkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC7H,KAAK,CAAC,EAAE8B,OAAM,IAAK;QACzD;QAEAX,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEkE,YAAY;QACpCpF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ;;QAErC;QACA,IAAI2H,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnCoB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,EAAEJ,IAAI,CAAC3H,QAAQ,CAAC6E,MAAM;UAClEkB,OAAM,GAAI,IAAI3D,IAAI,CAACsG,MAAM,CAAC;YACxBX,MAAM,EAAE,IAAI3F,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,CAAC,CAAC,CAAC,EAAEJ,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,CAAC,CAAC,CAAC,CAAC;YACzElD,MAAM,EAAE8C,IAAI,CAAC3H,QAAQ,CAAC6E,MAAM;YAC5B,GAAGwB;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3CoB,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEwF,IAAI,CAAC3H,QAAQ,CAACkI,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAAC3H,QAAQ,CAACkI,IAAI,CAACjG,GAAG,CAACmG,KAAI,IAAK,IAAIhG,IAAI,CAACuG,MAAM,CAACP,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;UAChFrC,OAAM,GAAI,IAAI3D,IAAI,CAACwG,OAAO,CAAC;YACzBV,IAAI,EAAEA,IAAI;YACV,GAAG7B;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7CoB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ,CAACqI,MAAM;UAC5C,MAAMA,MAAK,GAAI,IAAIjG,IAAI,CAACyG,MAAM,CAC5B,IAAIzG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,IAAIjG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,CAClE;UACAtC,OAAM,GAAI,IAAI3D,IAAI,CAAC0G,SAAS,CAAC;YAC3BT,MAAM,EAAEA,MAAM;YACd,GAAGhC;UACL,CAAC;QACH;QAEA,IAAIN,OAAO,EAAE;UACX9E,OAAO,CAACkB,GAAG,CAAC,kBAAkB;;UAE9B;UACAzD,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;;UAE7B;UACAhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE,IAAImG,OAAM;;UAE9B;UACA,MAAMgD,aAAY,GAAIjK,WAAW,CAACoD,KAAK,CAAC8G,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACrJ,EAAC,KAAM+H,IAAI,CAAC/H,EAAE;UACvE,IAAImJ,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBjK,WAAW,CAACoD,KAAK,CAACkC,IAAI,CAACuD,IAAI;YAC3B1G,OAAO,CAACkB,GAAG,CAAC,WAAW;UACzB,OAAO;YACLlB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACA4D,OAAO,CAACxD,EAAE,CAAC,OAAO,EAAE,MAAM;YACxBtB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEwF,IAAI,CAAC/H,EAAE;YAC9BsJ,UAAU,CAACvB,IAAI,CAAC/H,EAAE;UACpB,CAAC;;UAED;UACA2G,UAAU,CAAC,MAAM;YACf7H,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENvF,OAAO,CAACkB,GAAG,CAAC,OAAOwF,IAAI,CAAC/H,EAAE,WAAW;QAEvC,OAAO;UACLqB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE2G,IAAI,CAAC/H,EAAE,EAAEoB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMkI,UAAS,GAAKtJ,EAAE,IAAK;MACzBJ,cAAc,CAAC0C,KAAI,GAAItC,EAAC;MACxB,MAAMmG,OAAM,GAAIhH,YAAY,CAACa,EAAE;MAC/B,IAAImG,OAAO,EAAE;QACX;QACAA,OAAO,CAACO,UAAU,CAAC;UACjBf,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACA1G,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAAC0E,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACrJ,EAAC,KAAMA,EAAE,EAAE;YACf,MAAMuJ,YAAW,GAAIpK,YAAY,CAACkK,CAAC,CAACrJ,EAAE;YACtC,IAAIuJ,YAAY,EAAE;cAChBA,YAAY,CAAC7C,UAAU,CAAC;gBACtBf,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAM4D,UAAS,GAAI,MAAOxJ,EAAE,IAAK;MAC/B,IAAI;QACFqB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE1B,MAAMgH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBjH,EAAE,EAAE,EAAE;UACtDkH,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACpD,OAAO,EAAE;UAClB;UACA,MAAM0B,OAAM,GAAIhH,YAAY,CAACa,EAAE;UAC/B,IAAImG,OAAO,EAAE;YACXrH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;YAChC,OAAOhH,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACoD,KAAI,GAAIpD,WAAW,CAACoD,KAAK,CAACmH,MAAM,CAAC1B,IAAG,IAAKA,IAAI,CAAC/H,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAAC0C,KAAI,KAAMtC,EAAE,EAAE;YAC/BJ,cAAc,CAAC0C,KAAI,GAAI,IAAG;UAC5B;UAEArE,SAAS,CAACwG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAI4H,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMoF,QAAO,GAAK3B,IAAI,IAAK;MACzBhI,QAAQ,CAACuC,KAAI,GAAI;QAAE,GAAGyF;MAAK;MAC3BjI,iBAAiB,CAACwC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMqH,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFtI,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAExC,QAAQ,CAACuC,KAAK,CAACtC,EAAE;QAEzC,MAAMgH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBlH,QAAQ,CAACuC,KAAK,CAACtC,EAAE,EAAE,EAAE;UACrEkH,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBrH,IAAI,EAAEF,QAAQ,CAACuC,KAAK,CAACrC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACuC,KAAK,CAACpC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACuC,KAAK,CAACnC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC6G,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACpD,OAAO,EAAE;UAClB;UACA,MAAMsD,IAAG,GAAI7I,WAAW,CAACoD,KAAK,CAACsH,IAAI,CAACP,CAAA,IAAKA,CAAC,CAACrJ,EAAC,KAAMD,QAAQ,CAACuC,KAAK,CAACtC,EAAE;UACnE,IAAI+H,IAAI,EAAE;YACRA,IAAI,CAAC9H,IAAG,GAAIF,QAAQ,CAACuC,KAAK,CAACrC,IAAG;YAC9B8H,IAAI,CAAC7H,KAAI,GAAIH,QAAQ,CAACuC,KAAK,CAACpC,KAAI;YAChC6H,IAAI,CAAC5H,WAAU,GAAIJ,QAAQ,CAACuC,KAAK,CAACnC,WAAU;;YAE5C;YACA,MAAMgG,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;YACpC,IAAImG,OAAO,EAAE;cACXA,OAAO,CAACO,UAAU,CAAC;gBACjBhB,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,CAACwB,KAAK;gBAC9CoE,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,CAACwB,KAAK;gBAC5CqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC7H,KAAK,CAAC,CAAC8B;cAC7C,CAAC;YACH;UACF;UAEA/D,SAAS,CAACwG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsF,MAAM,CAACG,IAAI;QAErC,OAAO;UACL,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;MAEAxE,iBAAiB,CAACwC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMuG,aAAY,GAAI,MAAAA,CAAOgB,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK3K,WAAW,CAACoD,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAM4B,OAAM,GAAI5K,WAAW,CAACoD,KAAK,CAACD,GAAG,CAAC0F,IAAG,IAAKA,IAAI,CAAC/H,EAAE;UAErDqB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuH,OAAO;UAEjC,MAAM9C,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;YAChDC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACP,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cAAEyC,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAAC9C,QAAQ,CAACS,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAACpD,OAAO,EAAE;YACnB,MAAM,IAAImD,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,WAAW;UAC/C;UAEAjD,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEsF,MAAM,CAACG,IAAI;QACvC;;QAEA;QACAgC,MAAM,CAACC,MAAM,CAAC9K,YAAY,CAAC,CAACwF,OAAO,CAACwB,OAAM,IAAK;UAC7C,IAAIrH,WAAW,CAACwD,KAAK,EAAE;YACrBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF,CAAC;;QAED;QACAjH,WAAW,CAACoD,KAAI,GAAI,EAAC;QACrB0H,MAAM,CAACE,IAAI,CAAC/K,YAAY,CAAC,CAACwF,OAAO,CAACwF,GAAE,IAAK;UACvC,OAAOhL,YAAY,CAACgL,GAAG;QACzB,CAAC;QACDvK,cAAc,CAAC0C,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACuH,WAAW,EAAE;UAChB5L,SAAS,CAACwG,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOrD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAACyI,WAAW,EAAE;UAChB5L,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAM8F,qBAAoB,GAAKC,MAAM,IAAK;MACxCxK,aAAa,CAACyC,KAAI,GAAI+H,MAAK;;MAE3B;MACAnL,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;QACpC,IAAImG,OAAO,EAAE;UACX,IAAIkE,MAAM,CAACC,QAAQ,CAACvC,IAAI,CAAC9H,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;UAC/B,OAAO;YACLrH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAMoE,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIrL,WAAW,CAACoD,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAE;MACxC/J,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;QACpC,IAAImG,OAAM,IAAKA,OAAO,CAACuC,SAAS,EAAE;UAChCD,MAAM,CAAC+B,MAAM,CAACrE,OAAO,CAACuC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAAC3H,QAAQ,EAAE+H,MAAM,EAAE;UAChCM,MAAM,CAAC+B,MAAM,CAACzC,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM;QACpC;MACF,CAAC;MAEDrJ,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAMpF,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACnE,OAAO,CAACuD,KAAI,IAAK,CAACxD,WAAW,CAACwD,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMkI,UAAS,GAAIrK,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI;;MAE7C;MACA7H,UAAU,CAACiC,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;;MAElC;MACA,MAAMS,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;wGAGuC2J,UAAU;;WAEvG,CAAC;UACFvG,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMsG,UAAU;MACzB,CAAC;MAED5L,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BrD,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;;MAE7B;MACA,IAAItD,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB;MAEA1M,SAAS,CAACwG,OAAO,CAAC,SAASiG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC7L,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAIjC,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;MACzC;MAEA,MAAMgG,IAAG,GAAIjI,UAAU,CAACiC,KAAK,CAACD,GAAG,CAACuI,CAAA,IAAK,CAACA,CAAC,CAAC3H,GAAG,EAAE2H,CAAC,CAAC1H,GAAG,CAAC;MAErD3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEA,IAAI;QACV5C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE;MACf,CAAC;MAEDhM,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAChE,QAAQ,CAAC+B,KAAK;IACtC;;IAEA;IACA,MAAMyI,WAAU,GAAKC,KAAK,IAAK;MAC7B3K,UAAU,CAACiC,KAAK,CAAC2I,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB7K,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAE2C,CAAC,KAAK;QACrCC,kBAAkB,CAAC5C,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,EAAEiI,CAAA,GAAI,CAAC;MAChD,CAAC;MAED,IAAI9K,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB,OAAO,IAAIpK,QAAQ,CAAC+B,KAAK,EAAE;QACzBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;IACtB;IAEA,MAAM8I,kBAAiB,GAAIA,CAACnI,GAAG,EAAEC,GAAG,EAAE8H,KAAK,KAAK;MAC9C,MAAMxI,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,MAAMmB,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;wGAGuCiK,KAAK;;WAElG,CAAC;UACF7G,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAM4G,KAAK;MACpB,CAAC;MAEDlM,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BrD,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAMuH,gBAAe,GAAIA,CAAA,KAAM;MAC7B5K,WAAW,CAACgC,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QAClC7E,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACDrD,WAAW,CAACgC,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM+I,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAIhL,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/BjK,SAAS,CAACqN,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFjK,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE/B,iBAAiB,CAAC8B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK,CAAC4F,MAAM;QAC7C7G,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErD,WAAW,CAACoD,KAAK;QACzCjB,OAAO,CAACkB,GAAG,CAAC,UAAU;QACtBrD,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAAC,CAACoD,IAAI,EAAEiD,KAAK,KAAK;UACzC3J,OAAO,CAACkB,GAAG,CAAC,OAAOyI,KAAI,GAAI,CAAC,GAAG,EAAE;YAC/BhL,EAAE,EAAE+H,IAAI,CAAC/H,EAAE;YACXC,IAAI,EAAE8H,IAAI,CAAC9H,IAAI;YACfC,KAAK,EAAE6H,IAAI,CAAC7H,KAAK;YACjBqL,aAAa,EAAExD,IAAI,CAAC3H,QAAQ,EAAEH,IAAG,IAAK8H,IAAI,CAACwD,aAAa;YACxDC,aAAa,EAAEzD,IAAI,CAAC3H,QAAO,IAAK2H,IAAI,CAACyD,aAAa;YAClDpL,QAAQ,EAAE2H,IAAI,CAAC3H,QAAQ;YACvBD,WAAW,EAAE4H,IAAI,CAAC5H;UACpB,CAAC;QACH,CAAC;QAED,MAAMsL,UAAS,GAAIpL,UAAU,CAACiC,KAAK,CAAC,CAAC;QACrC,MAAMtD,YAAW,GAAIqB,UAAU,CAACiC,KAAK,CAACoJ,KAAK,CAAC,CAAC,GAAE;;QAE/C;QACA,MAAMC,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVxI,GAAG,EAAEwI,UAAU,CAACxI,GAAG;YACnBC,GAAG,EAAEuI,UAAU,CAACvI;UAClB,CAAC;UACDlE,YAAY,EAAEA,YAAY,CAACqD,GAAG,CAACmG,KAAI,KAAM;YACvCvF,GAAG,EAAEuF,KAAK,CAACvF,GAAG;YACdC,GAAG,EAAEsF,KAAK,CAACtF;UACb,CAAC,CAAC,CAAC;UACH0I,SAAS,EAAEpL,iBAAiB,CAAC8B,KAAI,IAAK,OAAO;UAAE;UAC/C7B,cAAc,EAAEA,cAAc,CAAC6B,KAAK;UACpC5B,WAAW,EAAEA,WAAW,CAAC4B,KAAK;UAC9BpD,WAAW,EAAEA,WAAW,CAACoD,KAAI,IAAKpD,WAAW,CAACoD,KAAK,CAAC4F,MAAK,GAAI,IAAIhJ,WAAW,CAACoD,KAAK,CAACD,GAAG,CAAC0F,IAAG,KAAM;YAC9F/H,EAAE,EAAE+H,IAAI,CAAC/H,EAAE;YACXC,IAAI,EAAE8H,IAAI,CAAC9H,IAAI;YACfC,KAAK,EAAE6H,IAAI,CAAC7H,KAAK;YACjBqL,aAAa,EAAExD,IAAI,CAAC3H,QAAQ,EAAEH,IAAG,IAAK8H,IAAI,CAACwD,aAAa;YACxDC,aAAa,EAAEzD,IAAI,CAAC3H,QAAO,IAAK2H,IAAI,CAACyD,aAAa;YAClDrL,WAAW,EAAE4H,IAAI,CAAC5H;UACpB,CAAC,CAAC,IAAI;QACR;QAEAkB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAEoJ,YAAY;;QAExC;QACA,MAAM3E,QAAO,GAAI,MAAMC,KAAK,CAAC,oBAAoB,EAAE;UACjDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACqE,YAAY;QACnC,CAAC;QAED,IAAI,CAAC3E,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvBmG,MAAM,EAAEP,QAAQ,CAACO,MAAM;YACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;YAC/BpG,KAAK,EAAEsG;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWZ,QAAQ,CAACO,MAAM,MAAMG,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEsF,MAAM;QAE7B,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClB,MAAM;YAAEuD,IAAI;YAAE6D;UAAQ,IAAIhE,MAAK;;UAE/B;UACAlH,QAAQ,CAAC2B,KAAI,GAAI;YACfwJ,QAAQ,EAAEC,IAAI,CAACC,KAAK,CAAChE,IAAI,CAAC8D,QAAO,IAAKD,OAAO,EAAEI,aAAY,IAAK,CAAC,CAAC;YAClEC,QAAQ,EAAElE,IAAI,CAACmE,cAAa,IAAKN,OAAO,EAAEO,aAAY,IAAK,CAAC;YAC5DC,UAAU,EAAErE,IAAI,CAACsE,WAAW,EAAEpE,MAAK,IAAK2D,OAAO,EAAEU,aAAY,IAAK,CAAC;YACnEX,SAAS,EAAE5D,IAAI,CAAC4D,SAAQ,IAAK/D,MAAM,CAAC+D,SAAS;YAC7CY,kBAAkB,EAAExE,IAAI,CAACyE,oBAAmB,IAAKZ,OAAO,EAAEW,kBAAiB,IAAK,EAAE;YAClFE,WAAW,EAAEb,OAAO,EAAEa,WAAU,IAAK;UACvC;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACA,MAAMC,QAAO,GAAI5E,IAAI,CAACsE,WAAU,IAAKtE,IAAI,CAACM,IAAG,IAAK,EAAC;UACnDuE,4BAA4B,CAACD,QAAQ,EAAE5N,YAAY,EAAE6M,OAAO,EAAEa,WAAW;UAEzEzO,SAAS,CAACwG,OAAO,CAAC,GAAGqI,gBAAgB,CAACjF,MAAM,CAAC+D,SAAS,CAAC,YAAY;UAEnE,MAAMmB,WAAU,GAAI/E,IAAI,CAACyE,oBAAoB,EAAEvE,MAAK,IAAK2D,OAAO,EAAEW,kBAAkB,EAAEtE,MAAK,IAAK;UAChG,IAAI6E,WAAU,GAAI,CAAC,EAAE;YACnB9O,SAAS,CAACuH,IAAI,CAAC,QAAQuH,WAAW,OAAO;UAC3C;;UAEA;UACA,IAAIlB,OAAO,EAAEa,WAAU,IAAKb,OAAO,CAACa,WAAW,CAACxE,MAAK,GAAI,CAAC,EAAE;YAC1D,MAAM8E,SAAQ,GAAInB,OAAO,CAACa,WAAW,CAACrK,GAAG,CAAC,CAAC4K,MAAM,EAAEjC,KAAK,KACtD,GAAGA,KAAI,GAAI,CAAC,KAAKiC,MAAM,CAACC,MAAM,CAACjK,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAK4I,MAAM,CAACC,MAAM,CAAChK,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,GAAG4I,MAAM,CAACE,YAAW,GAAI,SAAQ,GAAI,EAAE,EACvH,CAAC,CAACC,IAAI,CAAC,IAAI;YAEXzG,UAAU,CAAC,MAAM;cACf1I,SAAS,CAAC;gBACRqG,OAAO,EAAE,aAAa0I,SAAS,EAAE;gBACjC/M,IAAI,EAAE,MAAM;gBACZiM,QAAQ,EAAE,KAAK;gBACfmB,SAAS,EAAE;cACb,CAAC;YACH,CAAC,EAAE,IAAI;UACT;QAEF,OAAO;UACL,MAAM,IAAIzF,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BnD,SAAS,CAACmD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAACkD,OAAO;MAC5C;IACF;;IAEA;IACA,MAAMwI,gBAAe,GAAKlB,SAAS,IAAK;MACtC,MAAM0B,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAAC1B,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMiB,4BAA2B,GAAIA,CAACc,WAAW,EAAEC,eAAe,EAAElB,WAAW,KAAK;MAClF,IAAI,CAAC5N,WAAW,CAACwD,KAAI,IAAK,CAACqL,WAAU,IAAKA,WAAW,CAACzF,MAAK,GAAI,CAAC,EAAE;MAElE,MAAM1F,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE;QACtBsL,UAAU,EAAEF,WAAW,CAACzF,MAAM;QAC9B4F,WAAW,EAAEF,eAAe,CAAC1F,MAAM;QACnCwE,WAAW,EAAEA;MACf,CAAC;;MAED;MACA,MAAMqB,UAAS,GAAIJ,WAAW,CAACtL,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;MAElE3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEyF,UAAU;QAChBrI,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE,OAAO;QACpBlF,aAAa,EAAE;MACjB,CAAC;MAED9G,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAChE,QAAQ,CAAC+B,KAAK;MAEpC,MAAM0L,OAAM,GAAI,EAAC;;MAEjB;MACA,MAAMC,WAAU,GAAI,IAAIzL,IAAI,CAACoB,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAAC8J,WAAW,CAAC,CAAC,CAAC,CAAC1K,GAAG,EAAE0K,WAAW,CAAC,CAAC,CAAC,CAACzK,GAAG,CAAC;QAClDY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFoD,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,IAAI;QACX8J,MAAM,EAAE;MACV,CAAC;MAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC0J,WAAW;MACjCD,OAAO,CAACxJ,IAAI,CAACyJ,WAAW;;MAExB;MACA,IAAIvB,WAAU,IAAKA,WAAW,CAACxE,MAAK,GAAI,CAAC,EAAE;QACzCwE,WAAW,CAAC/H,OAAO,CAAC,CAACsI,MAAM,EAAEjC,KAAK,KAAK;UACrC,MAAMmD,UAAS,GAAInD,KAAI,GAAI;UAC3B,MAAMoD,UAAS,GAAInB,MAAM,CAACE,YAAW;UACrC,MAAM7N,WAAU,GAAI2N,MAAM,CAAC3N,WAAU;;UAErC;UACA,IAAImC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAI2M,UAAU,EAAE;YACd,QAAQ9O,WAAW;cACjB,KAAK,KAAK;gBACRmC,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,QAAQ;gBACXA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,MAAM;gBACTA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,UAAU;gBACbA,KAAI,GAAI,SAAQ,EAAE;gBAClB;YACJ;UACF;UAEA,MAAM4M,YAAW,GAAI,IAAI7L,IAAI,CAACoB,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAACC,MAAM,CAACjK,GAAG,EAAEgK,MAAM,CAACC,MAAM,CAAChK,GAAG,CAAC;YAChDY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;yDAEZU,KAAK;2GAC6C0M,UAAU;oBACjGC,UAAS,GAAI,8EAA6E,GAAI,EAAE;;eAErG,CAAC;cACFjK,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAE,MAAM+J,UAAU,GAAGC,UAAS,GAAI,KAAK9O,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3E4O,MAAM,EAAE;UACV,CAAC;UAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC8J,YAAY;UAClCL,OAAO,CAACxJ,IAAI,CAAC6J,YAAY;QAC3B,CAAC;MACH,OAAO;QACL;QACAT,eAAe,CAACjJ,OAAO,CAAC,CAACsI,MAAM,EAAEjC,KAAK,KAAK;UACzC,MAAMsD,YAAW,GAAItD,KAAI,GAAI;UAC7B,MAAMuD,YAAW,GAAIvD,KAAI,KAAM4C,eAAe,CAAC1F,MAAK,GAAI;UAExD,MAAMmG,YAAW,GAAI,IAAI7L,IAAI,CAACoB,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAAChK,GAAG,EAAEgK,MAAM,CAAC/J,GAAG,CAAC;YAClCY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;yDAEZwN,YAAW,GAAI,SAAQ,GAAI,SAAS;2GACcA,YAAW,GAAI,GAAE,GAAID,YAAY;;eAE7H,CAAC;cACFnK,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAEmK,YAAW,GAAI,IAAG,GAAI,MAAMD,YAAY,EAAE;YACjDJ,MAAM,EAAE;UACV,CAAC;UAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC8J,YAAY;UAClCL,OAAO,CAACxJ,IAAI,CAAC6J,YAAY;QAC3B,CAAC;MACH;MAEA/N,WAAW,CAACgC,KAAI,GAAI0L,OAAM;;MAE1B;MACArH,UAAU,CAAC,MAAM;QACf,IAAIpG,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC,CAACrG,QAAQ,CAAC+B,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;QAC1E;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMqK,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAIpM,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA4I,gBAAgB,CAAC;IACnB;IAEA,MAAMsD,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAIvC,aAAY,GAAI;MACpB,KAAK,IAAId,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAI9K,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAEiD,CAAC,EAAE,EAAE;QACpD,MAAMsD,EAAC,GAAIpO,UAAU,CAACiC,KAAK,CAAC6I,CAAC;QAC7B,MAAMuD,EAAC,GAAIrO,UAAU,CAACiC,KAAK,CAAC6I,CAAA,GAAI,CAAC;QACjCc,aAAY,IAAK0C,WAAW,CAACF,EAAE,CAACvL,GAAG,EAAEuL,EAAE,CAACxL,GAAG,EAAEyL,EAAE,CAACxL,GAAG,EAAEwL,EAAE,CAACzL,GAAG;MAC7D;MACA,OAAOgJ,aAAY;IACrB;IAEA,MAAM0C,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAI7C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIL,IAAG,GAAI/C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI7C,IAAI,CAACmD,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI9C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAIvD,IAAI,CAACwD,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIrD,IAAI,CAACwD,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BrD,IAAI,CAACyD,GAAG,CAACP,EAAE,IAAIlD,IAAI,CAACyD,GAAG,CAACL,EAAE,IAC1BpD,IAAI,CAACwD,GAAG,CAACF,EAAE,GAAC,CAAC,IAAItD,IAAI,CAACwD,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAI1D,IAAI,CAAC2D,KAAK,CAAC3D,IAAI,CAAC4D,IAAI,CAACL,CAAC,CAAC,EAAEvD,IAAI,CAAC4D,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAON,CAAA,GAAIS,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAM1R,YAAY,CAAC2R,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtB9P,IAAI,EAAE;QACR,CAAC;QAEDhC,SAAS,CAACwG,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNxG,SAAS,CAACuH,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAMwK,QAAO,GAAIA,CAAA,KAAM;MACrB9E,gBAAgB,CAAC;MAEjB,IAAI3K,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;MAEAjC,UAAU,CAACiC,KAAI,GAAI,EAAC;MACpB3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;MAEpBrE,SAAS,CAACwG,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAMwL,uBAAsB,GAAKrE,SAAS,IAAK;MAC7CpL,iBAAiB,CAAC8B,KAAI,GAAIsJ,SAAQ;IACpC;;IAEA;IACA,MAAMsE,oBAAmB,GAAKC,QAAQ,IAAK;MACzC1P,cAAc,CAAC6B,KAAI,GAAI6N,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnC3P,WAAW,CAAC4B,KAAI,GAAI+N,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIjQ,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMuD,UAAS,GAAIpL,UAAU,CAACiC,KAAK,CAAC,CAAC;MACrCxD,WAAW,CAACwD,KAAK,CAACiO,SAAS,CAAC,CAAC9E,UAAU,CAACxI,GAAG,EAAEwI,UAAU,CAACvI,GAAG,CAAC;MAC5DpE,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAIpQ,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAMwI,QAAO,GAAIrQ,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC;MAC7DpJ,WAAW,CAACwD,KAAK,CAACiO,SAAS,CAAC,CAACG,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;MACxDpE,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,iBAAgB,GAAKC,WAAW,IAAK;MACzC,IAAI,CAACA,WAAU,IAAKA,WAAW,CAAC1I,MAAK,KAAM,CAAC,EAAE;QAC5CjK,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,IAAI;QACF;QACA,MAAMyP,SAAQ,GAAID,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEvI,KAAK,KAAKuI,GAAE,GAAIvI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAIoI,WAAW,CAAC1I,MAAK;QAC3F,MAAM8I,SAAQ,GAAIJ,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEvI,KAAK,KAAKuI,GAAE,GAAIvI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAIoI,WAAW,CAAC1I,MAAK;QAE3F7G,OAAO,CAACkB,GAAG,CAAC,aAAasO,SAAS,KAAKG,SAAS,GAAG;;QAEnD;QACAlS,WAAW,CAACwD,KAAK,CAACiO,SAAS,CAAC,CAACM,SAAS,EAAEG,SAAS,CAAC;;QAElD;QACA,IAAIJ,WAAW,CAAC1I,MAAK,KAAM,CAAC,EAAE;UAC5BpJ,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAAC,EAAE;QAC9B,OAAO;UACL;UACA,MAAMS,IAAG,GAAIL,WAAW,CAACvO,GAAG,CAACuI,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMsG,IAAG,GAAIN,WAAW,CAACvO,GAAG,CAACuI,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMuG,OAAM,GAAIpF,IAAI,CAACqF,GAAG,CAAC,GAAGH,IAAI,IAAIlF,IAAI,CAACsF,GAAG,CAAC,GAAGJ,IAAI;UACpD,MAAMK,OAAM,GAAIvF,IAAI,CAACqF,GAAG,CAAC,GAAGF,IAAI,IAAInF,IAAI,CAACsF,GAAG,CAAC,GAAGH,IAAI;UACpD,MAAMK,OAAM,GAAIxF,IAAI,CAACqF,GAAG,CAACD,OAAO,EAAEG,OAAO;UAEzC,IAAIE,IAAG,GAAI,EAAC;UACZ,IAAID,OAAM,GAAI,IAAI,EAAEC,IAAG,GAAI,EAAC,MACvB,IAAID,OAAM,GAAI,GAAG,EAAEC,IAAG,GAAI,EAAC,MAC3B,IAAID,OAAM,GAAI,CAAC,EAAEC,IAAG,GAAI,EAAC,MACzBA,IAAG,GAAI;UAEZ1S,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAACgB,IAAI;QAChC;QAEAvT,SAAS,CAACwG,OAAO,CAAC,QAAQmM,WAAW,CAAC1I,MAAM,SAAS;MACvD,EAAE,OAAOuJ,WAAW,EAAE;QACpBpQ,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEqQ,WAAW;QACrCxT,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMsQ,SAAQ,GAAIA,CAAA,KAAM;MACtBrQ,OAAO,CAACkB,GAAG,CAAC,sCAAsC,EAAElC,UAAU,CAACiC,KAAK,CAAC4F,MAAM;MAE3E,IAAI,CAAC7H,UAAU,CAACiC,KAAI,IAAKjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;QACtD7G,OAAO,CAACC,IAAI,CAAC,SAAS;QACtBrD,SAAS,CAACqN,OAAO,CAAC,UAAU;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,CAACxM,WAAW,CAACwD,KAAK,EAAE;UACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS;UACvBnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;UACxB;QACF;;QAEA;QACA,IAAI,CAACqB,MAAM,CAACD,IAAG,IAAK,CAACC,MAAM,CAACD,IAAI,CAACyG,MAAM,EAAE;UACvC5H,OAAO,CAACD,KAAK,CAAC,oBAAoB;UAClCnD,SAAS,CAACmD,KAAK,CAAC,YAAY;UAC5B;QACF;QAEAC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK;;QAEtC;QACA,MAAMmG,MAAK,GAAI,IAAIhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAC;;QAEtC;QACA,IAAI0I,gBAAe,GAAI;QACvB,MAAMf,WAAU,GAAI,EAAC;QAErBvQ,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAEwC,KAAK,KAAK;UACzC,IAAIxC,KAAI,IAAK,OAAOA,KAAK,CAACvF,GAAE,KAAM,QAAO,IAAK,OAAOuF,KAAK,CAACtF,GAAE,KAAM,QAAO,IACtE,CAAC0O,KAAK,CAACpJ,KAAK,CAACvF,GAAG,KAAK,CAAC2O,KAAK,CAACpJ,KAAK,CAACtF,GAAG,KACrC2O,QAAQ,CAACrJ,KAAK,CAACvF,GAAG,KAAK4O,QAAQ,CAACrJ,KAAK,CAACtF,GAAG,KACzCsF,KAAK,CAACvF,GAAE,IAAK,CAAC,GAAE,IAAKuF,KAAK,CAACvF,GAAE,IAAK,GAAE,IACpCuF,KAAK,CAACtF,GAAE,IAAK,CAAC,EAAC,IAAKsF,KAAK,CAACtF,GAAE,IAAK,EAAE,EAAE;YAEvC;YACA,MAAMD,GAAE,GAAI6O,MAAM,CAACtJ,KAAK,CAACvF,GAAG;YAC5B,MAAMC,GAAE,GAAI4O,MAAM,CAACtJ,KAAK,CAACtF,GAAG;YAE5B,IAAI,CAAC0O,KAAK,CAAC3O,GAAG,KAAK,CAAC2O,KAAK,CAAC1O,GAAG,KAAK2O,QAAQ,CAAC5O,GAAG,KAAK4O,QAAQ,CAAC3O,GAAG,CAAC,EAAE;cAChE0N,WAAW,CAACpM,IAAI,CAAC,CAACvB,GAAG,EAAEC,GAAG,CAAC;cAC3ByO,gBAAgB,EAAC;cACjBtQ,OAAO,CAACkB,GAAG,CAAC,UAAUyI,KAAI,GAAI,CAAC,MAAM/H,GAAG,KAAKC,GAAG,GAAG;YACrD,OAAO;cACL7B,OAAO,CAACC,IAAI,CAAC,UAAU0J,KAAI,GAAI,CAAC,GAAG,EAAExC,KAAK;YAC5C;UACF,OAAO;YACLnH,OAAO,CAACC,IAAI,CAAC,SAAS0J,KAAI,GAAI,CAAC,GAAG,EAAExC,KAAK;UAC3C;QACF,CAAC;QAED,IAAImJ,gBAAe,KAAM,CAAC,EAAE;UAC1BtQ,OAAO,CAACD,KAAK,CAAC,UAAU;UACxBnD,SAAS,CAACmD,KAAK,CAAC,SAAS;UACzB;QACF;;QAEA;QACAwP,WAAW,CAACjM,OAAO,CAAC,CAACoN,KAAK,EAAE/G,KAAK,KAAK;UACpC,IAAI;YACFvC,MAAM,CAAC+B,MAAM,CAACuH,KAAK;YACnB1Q,OAAO,CAACkB,GAAG,CAAC,WAAWyI,KAAI,GAAI,CAAC,MAAM+G,KAAK,CAAC,CAAC,CAAC,KAAKA,KAAK,CAAC,CAAC,CAAC,GAAG;UAChE,EAAE,OAAOC,WAAW,EAAE;YACpB3Q,OAAO,CAACD,KAAK,CAAC,aAAa4J,KAAI,GAAI,CAAC,GAAG,EAAE+G,KAAK,EAAEC,WAAW;UAC7D;QACF,CAAC;;QAED;QACA,IAAIC,SAAS,EAAEC,SAAQ;QACvB,IAAI;UACFD,SAAQ,GAAIxJ,MAAM,CAACE,YAAY,CAAC;UAChCuJ,SAAQ,GAAIzJ,MAAM,CAACG,YAAY,CAAC;QAClC,EAAE,OAAOuJ,cAAc,EAAE;UACvB9Q,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE+Q,cAAc;UACzClU,SAAS,CAACmD,KAAK,CAAC,UAAU;UAC1BuP,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEAvP,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE;UACnB0P,SAAS,EAAE,CAACA,SAAS,CAAChP,GAAG,EAAEgP,SAAS,CAAC/O,GAAG,CAAC;UACzCgP,SAAS,EAAE,CAACA,SAAS,CAACjP,GAAG,EAAEiP,SAAS,CAAChP,GAAG;QAC1C,CAAC;;QAED;QACA,IAAI,CAAC+O,SAAQ,IAAK,CAACC,SAAQ,IACvBN,KAAK,CAACK,SAAS,CAAChP,GAAG,KAAK2O,KAAK,CAACK,SAAS,CAAC/O,GAAG,KAC3C0O,KAAK,CAACM,SAAS,CAACjP,GAAG,KAAK2O,KAAK,CAACM,SAAS,CAAChP,GAAG,KAC3C,CAAC2O,QAAQ,CAACI,SAAS,CAAChP,GAAG,KAAK,CAAC4O,QAAQ,CAACI,SAAS,CAAC/O,GAAG,KACnD,CAAC2O,QAAQ,CAACK,SAAS,CAACjP,GAAG,KAAK,CAAC4O,QAAQ,CAACK,SAAS,CAAChP,GAAG,CAAC,EAAE;UACxD7B,OAAO,CAACD,KAAK,CAAC,YAAY;UAC1BnD,SAAS,CAACqN,OAAO,CAAC,gBAAgB;UAClCqF,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,MAAMO,OAAM,GAAIpF,IAAI,CAACqG,GAAG,CAACF,SAAS,CAACjP,GAAE,GAAIgP,SAAS,CAAChP,GAAG;QACtD,MAAMqO,OAAM,GAAIvF,IAAI,CAACqG,GAAG,CAACF,SAAS,CAAChP,GAAE,GAAI+O,SAAS,CAAC/O,GAAG;QAEtD,IAAIiO,OAAM,GAAI,MAAK,IAAKG,OAAM,GAAI,MAAM,EAAE;UACxCjQ,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BqP,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEA,IAAIO,OAAM,GAAI,GAAE,IAAKG,OAAM,GAAI,EAAE,EAAE;UACjCjQ,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7BqP,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,IAAI;UACF9R,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;UAC7DpH,OAAO,CAACkB,GAAG,CAAC,UAAU;QACxB,EAAE,OAAO8P,WAAW,EAAE;UACpBhR,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEiR,WAAW;UACtCpU,SAAS,CAACqN,OAAO,CAAC,gBAAgB;UAClCqF,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEAvP,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEoP,gBAAgB,EAAE,MAAM;QACnD1T,SAAS,CAACwG,OAAO,CAAC,QAAQkN,gBAAgB,SAAS;MAErD,EAAE,OAAOvQ,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK;QACrCnD,SAAS,CAACmD,KAAK,CAAC,YAAW,GAAIA,KAAK,CAACkD,OAAO;MAC9C;IACF;;IAEA;;IAEA;IACA,MAAMgO,eAAc,GAAKhK,IAAI,IAAK;MAChC,IAAI,CAACxJ,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,MAAMjC,QAAO,GAAI,IAAIkC,MAAM,CAACD,IAAI,CAACqI,QAAQ,CAAC;UACxCvC,IAAI,EAAEA,IAAI,CAACgE,WAAW,CAACjK,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC,CAAC;UAC3DwC,WAAW,EAAE4C,IAAI,CAAC7G,KAAI,IAAK,SAAS;UACpCkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,GAAG;UAClBkF,WAAW,EAAE,OAAO;UACpByH,OAAO,EAAE,IAAI;UACbC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QAC3B,CAAC;;QAED;QACA,MAAM/G,UAAS,GAAInD,IAAI,CAACgE,WAAW,CAAC,CAAC;QACrC,MAAMoE,QAAO,GAAIpI,IAAI,CAACgE,WAAW,CAAChE,IAAI,CAACgE,WAAW,CAACpE,MAAK,GAAI,CAAC;QAE7D,MAAM+F,WAAU,GAAI,IAAIxL,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;UACzCC,QAAQ,EAAE,CAAC4H,UAAU,CAACxI,GAAG,EAAEwI,UAAU,CAACvI,GAAG,CAAC;UAC1CY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsB/C,kBAAkB,CAAC;;uDAELmH,IAAI,CAAC7G,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJ0C,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAGkE,IAAI,CAAC9J,IAAI,OAAO;UAC1B0P,MAAM,EAAE;QACV,CAAC;QAED,MAAMuE,SAAQ,GAAI,IAAIhQ,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;UACvCC,QAAQ,EAAE,CAAC6M,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;UACtCY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsB/C,kBAAkB,CAAC;;uDAELmH,IAAI,CAAC7G,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJ0C,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAGkE,IAAI,CAAC9J,IAAI,OAAO;UAC1B0P,MAAM,EAAE;QACV,CAAC;;QAED;QACArN,mBAAmB,CAACyH,IAAI,CAACtI,EAAE,IAAI;UAC7BO,QAAQ;UACR0N,WAAW;UACXwE;QACF;;QAEA;QACA3T,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC,CAAChE,QAAQ,EAAE0N,WAAW,EAAEwE,SAAS,CAAC;QAExDxU,SAAS,CAACwG,OAAO,CAAC,UAAU6D,IAAI,CAAC9J,IAAI,EAAE;MACzC,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMsR,eAAc,GAAKpK,IAAI,IAAK;MAChC,IAAI,CAACxJ,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAMiE,QAAO,GAAI1F,mBAAmB,CAACyH,IAAI,CAACtI,EAAE;MAC5C,IAAIuG,QAAQ,EAAE;QACZzH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAAC,CAAC2B,QAAQ,CAAChG,QAAQ,EAAEgG,QAAQ,CAAC0H,WAAW,EAAE1H,QAAQ,CAACkM,SAAS,CAAC;QACtF,OAAO5R,mBAAmB,CAACyH,IAAI,CAACtI,EAAE;QAClC/B,SAAS,CAACuH,IAAI,CAAC,UAAU8C,IAAI,CAAC9J,IAAI,EAAE;MACtC;IACF;;IAEA;IACA,MAAMmU,mBAAkB,GAAKC,KAAK,IAAK;MACrCA,KAAK,CAACjO,OAAO,CAAC2D,IAAG,IAAK;QACpB,IAAI,CAAC1H,oBAAoB,CAAC0B,KAAK,CAACgI,QAAQ,CAAChC,IAAI,CAACtI,EAAE,CAAC,EAAE;UACjDsS,eAAe,CAAChK,IAAI;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAMuK,mBAAkB,GAAIA,CAAA,KAAM;MAChC7I,MAAM,CAACE,IAAI,CAACrJ,mBAAmB,CAAC,CAAC8D,OAAO,CAACmO,MAAK,IAAK;QACjD,MAAMvM,QAAO,GAAI1F,mBAAmB,CAACiS,MAAM;QAC3C,IAAIvM,QAAO,IAAKzH,WAAW,CAACwD,KAAK,EAAE;UACjCxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAAC,CAAC2B,QAAQ,CAAChG,QAAQ,EAAEgG,QAAQ,CAAC0H,WAAW,EAAE1H,QAAQ,CAACkM,SAAS,CAAC;QACxF;MACF,CAAC;MACD;MACAzI,MAAM,CAACE,IAAI,CAACrJ,mBAAmB,CAAC,CAAC8D,OAAO,CAACwF,GAAE,IAAK,OAAOtJ,mBAAmB,CAACsJ,GAAG,CAAC;MAC/ElM,SAAS,CAACuH,IAAI,CAAC,WAAW;IAC5B;;IAEA;IACA,MAAMuN,mBAAkB,GAAKzK,IAAI,IAAK;MACpC,IAAI,CAACxJ,WAAW,CAACwD,KAAI,IAAK,CAACgG,IAAI,CAACgE,WAAU,IAAKhE,IAAI,CAACgE,WAAW,CAACpE,MAAK,KAAM,CAAC,EAAE;MAE9E,IAAI;QACF,MAAMO,MAAK,GAAI,IAAIhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAC;QACtCX,IAAI,CAACgE,WAAW,CAAC3H,OAAO,CAAC6D,KAAI,IAAK;UAChCC,MAAM,CAAC+B,MAAM,CAAC,CAAChC,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;QACtC,CAAC;QACDpE,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3DxK,SAAS,CAACwG,OAAO,CAAC,YAAY6D,IAAI,CAAC9J,IAAI,EAAE;MAC3C,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAM4R,oBAAmB,GAAK1K,IAAI,IAAK;MACrC;MACA0H,QAAQ,CAAC;;MAET;MACA3P,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGgG,IAAI,CAACgE,WAAW;MACvC9L,iBAAiB,CAAC8B,KAAI,GAAIgG,IAAI,CAACsD,SAAQ,IAAK,OAAM;MAClDnL,cAAc,CAAC6B,KAAI,GAAIgG,IAAI,CAAC2K,eAAc,IAAK,GAAE;MACjDvS,WAAW,CAAC4B,KAAI,GAAIgG,IAAI,CAAC4K,YAAW,IAAK,EAAC;;MAE1C;MACArU,WAAW,CAACyD,KAAI,GAAI,cAAa;;MAEjC;MACA6Q,iBAAiB,CAAC;MAElBlV,SAAS,CAACwG,OAAO,CAAC,UAAU6D,IAAI,CAAC9J,IAAI,SAAS;IAChD;;IAEA;IACA,MAAM4U,0BAAyB,GAAKC,OAAO,IAAK;MAC9CzS,oBAAoB,CAAC0B,KAAI,GAAI+Q,OAAM;IACrC;;IAEA;IACA,MAAMF,iBAAgB,GAAIA,CAACG,aAAY,GAAI,KAAK,KAAK;MACnD,IAAI,CAACxU,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIlC,WAAW,CAACgC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChCpJ,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACtE,WAAW,CAACgC,KAAK;UAC1ChC,WAAW,CAACgC,KAAI,GAAI,EAAC;QACvB;QAEA,IAAI/B,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;UACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;QACtB;QAEA,IAAIjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;QAEnC,IAAIoL,aAAa,EAAE;UACjB;UACA,MAAM7H,UAAS,GAAIpL,UAAU,CAACiC,KAAK,CAAC,CAAC;UACrC,MAAMoO,QAAO,GAAIrQ,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC;;UAE7D;UACA,IAAIuD,UAAS,IAAK,OAAOA,UAAU,CAACxI,GAAE,KAAM,QAAO,IAAK,OAAOwI,UAAU,CAACvI,GAAE,KAAM,QAAO,IACrF,CAAC0O,KAAK,CAACnG,UAAU,CAACxI,GAAG,KAAK,CAAC2O,KAAK,CAACnG,UAAU,CAACvI,GAAG,CAAC,EAAE;YACpD,MAAM+K,WAAU,GAAI,IAAIxL,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;cACzCC,QAAQ,EAAE,CAAC4H,UAAU,CAACxI,GAAG,EAAEwI,UAAU,CAACvI,GAAG,CAAC;cAC1CY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsB/C,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJgD,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQqH,UAAU,CAACxI,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKoH,UAAU,CAACvI,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,GAAG;cACzE6J,MAAM,EAAE;YACV,CAAC;YACD5N,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACyJ,WAAW;UACpC;;UAEA;UACA,IAAIyC,QAAO,IAAK,OAAOA,QAAQ,CAACzN,GAAE,KAAM,QAAO,IAAK,OAAOyN,QAAQ,CAACxN,GAAE,KAAM,QAAO,IAC/E,CAAC0O,KAAK,CAAClB,QAAQ,CAACzN,GAAG,KAAK,CAAC2O,KAAK,CAAClB,QAAQ,CAACxN,GAAG,MAC1CwN,QAAQ,CAACzN,GAAE,KAAMwI,UAAU,CAACxI,GAAE,IAAKyN,QAAQ,CAACxN,GAAE,KAAMuI,UAAU,CAACvI,GAAG,CAAC,EAAE;YACxE,MAAMuP,SAAQ,GAAI,IAAIhQ,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;cACvCC,QAAQ,EAAE,CAAC6M,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;cACtCY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsB/C,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJgD,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQsM,QAAQ,CAACzN,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKqM,QAAQ,CAACxN,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,GAAG;cACrE6J,MAAM,EAAE;YACV,CAAC;YACD5N,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACiO,SAAS;UAClC;QACF,OAAO;UACL;UACApS,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAEwC,KAAK,KAAK;YACzC;YACA,IAAI,CAACxC,KAAI,IAAK,OAAOA,KAAK,CAACvF,GAAE,KAAM,QAAO,IAAK,OAAOuF,KAAK,CAACtF,GAAE,KAAM,QAAO,IACvE0O,KAAK,CAACpJ,KAAK,CAACvF,GAAG,KAAK2O,KAAK,CAACpJ,KAAK,CAACtF,GAAG,CAAC,EAAE;cACxC7B,OAAO,CAACC,IAAI,CAAC,YAAY0J,KAAK,GAAG,EAAExC,KAAK;cACxC;YACF;YAEA,MAAM+K,OAAM,GAAIvI,KAAI,KAAM;YAC1B,MAAMwI,KAAI,GAAIxI,KAAI,KAAM3K,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI;;YAElD;YACA,MAAMvE,MAAK,GAAI,IAAIlB,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;cACpCC,QAAQ,EAAE,CAAC2E,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;cAChCY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAACsP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE,CAAC;gBAChErP,KAAK,EAAE,sBAAsB/C,kBAAkB,CAAC;mEACGoS,OAAM,GAAI,EAAC,GAAI,EAAE,aAAaA,OAAM,GAAI,EAAC,GAAI,EAAE;2DACvDA,OAAM,GAAI,SAAQ,GAAKC,KAAI,GAAI,SAAQ,GAAI,SAAU;8GACFD,OAAM,GAAI,GAAE,GAAKC,KAAI,GAAI,GAAE,GAAIxI,KAAM;;iBAElI,CAAC,EAAE;gBACJ7G,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAACsP,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE;cACtE,CAAC,CAAC;cACFnP,KAAK,EAAE,GAAGmP,OAAM,GAAI,IAAG,GAAKC,KAAI,GAAI,IAAG,GAAI,MAAMxI,KAAK,EAAG,MAAMxC,KAAK,CAACvF,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKmE,KAAK,CAACtF,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,GAAG;cAC/G6J,MAAM,EAAE;YACV,CAAC;YAED5N,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;UAC/B,CAAC;QACH;;QAEA;QACA,IAAIrD,WAAW,CAACgC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChCpJ,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACjE,WAAW,CAACgC,KAAK;QACzC;;QAEA;QACA,IAAI3B,QAAQ,CAAC2B,KAAI,IAAK3B,QAAQ,CAAC2B,KAAK,CAACgG,IAAI,EAAE;UACzC,IAAIsE,QAAO,GAAIjM,QAAQ,CAAC2B,KAAK,CAACgG,IAAG;;UAEjC;UACA,IAAI,OAAOsE,QAAO,KAAM,QAAQ,EAAE;YAChC,IAAI;cACFA,QAAO,GAAIvF,IAAI,CAACoM,KAAK,CAAC7G,QAAQ;YAChC,EAAE,OAAO5J,CAAC,EAAE;cACV3B,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE4B,CAAC;cAC5B4J,QAAO,GAAI,EAAC;YACd;UACF;UAEA,IAAI8G,KAAK,CAACC,OAAO,CAAC/G,QAAQ,KAAKA,QAAQ,CAAC1E,MAAK,GAAI,CAAC,EAAE;YAClD;YACA,MAAM6F,UAAS,GAAInB,QAAQ,CAACvK,GAAG,CAACmG,KAAI,IAAK;cACvC,IAAI,OAAOA,KAAI,KAAM,QAAO,IAAKA,KAAK,CAACvF,GAAE,KAAM2Q,SAAQ,IAAKpL,KAAK,CAACtF,GAAE,KAAM0Q,SAAS,EAAE;gBACnF,MAAM3Q,GAAE,GAAI4Q,UAAU,CAACrL,KAAK,CAACvF,GAAG;gBAChC,MAAMC,GAAE,GAAI2Q,UAAU,CAACrL,KAAK,CAACtF,GAAG;gBAChC,IAAI,CAAC0O,KAAK,CAAC3O,GAAG,KAAK,CAAC2O,KAAK,CAAC1O,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF,OAAO,IAAIwQ,KAAK,CAACC,OAAO,CAACnL,KAAK,KAAKA,KAAK,CAACN,MAAK,IAAK,CAAC,EAAE;gBACpD,MAAMjF,GAAE,GAAI4Q,UAAU,CAACrL,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAMtF,GAAE,GAAI2Q,UAAU,CAACrL,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAACoJ,KAAK,CAAC3O,GAAG,KAAK,CAAC2O,KAAK,CAAC1O,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF;cACA7B,OAAO,CAACC,IAAI,CAAC,WAAW,EAAEkH,KAAK;cAC/B,OAAO,IAAG;YACZ,CAAC,CAAC,CAACiB,MAAM,CAACsI,KAAI,IAAKA,KAAI,KAAM,IAAI;YAEjC1Q,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEwL,UAAU,CAAC7F,MAAM;YAE1C,IAAI6F,UAAU,CAAC7F,MAAK,GAAI,CAAC,EAAE;cACzB,MAAM4L,WAAU,GAAI,IAAIrR,MAAM,CAACD,IAAI,CAACqI,QAAQ,CAAC;gBAC3CvC,IAAI,EAAEyF,UAAU;gBAChBrI,WAAW,EAAE,SAAS;gBACtBC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE,GAAG;gBAClBkF,WAAW,EAAE,OAAO;gBACpByH,OAAO,EAAE;cACX,CAAC;cAEDhS,QAAQ,CAAC+B,KAAI,GAAIwR,WAAU;cAC3BhV,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACuP,WAAW;YACnC;UACF;QACF;MAEF,EAAE,OAAO1S,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;MACjC;IACF;;IAEA;IACA,MAAM2S,yBAAwB,GAAKC,WAAW,IAAK;MACjD,IAAI;QACF;QACAhE,QAAQ,CAAC;;QAET;QACA3P,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAG0R,WAAW,CAAC3T,UAAU;;QAE7C;QACAG,iBAAiB,CAAC8B,KAAI,GAAI0R,WAAW,CAACpI,SAAQ;QAC9CnL,cAAc,CAAC6B,KAAI,GAAI0R,WAAW,CAACvT,cAAa;QAChDC,WAAW,CAAC4B,KAAI,GAAI0R,WAAW,CAACtT,WAAU;;QAE1C;QACAC,QAAQ,CAAC2B,KAAI,GAAI0R,WAAW,CAACrT,QAAO;;QAEpC;QACAwS,iBAAiB,CAAC,IAAI;;QAEtB;QACAxM,UAAU,CAAC,MAAM;UACf+K,SAAS,CAAC;QACZ,CAAC,EAAE,GAAG;QAENrQ,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEyR,WAAW;MAEtC,EAAE,OAAO5S,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;MAC5B;IACF;IAEAxD,SAAS,CAAC,MAAM;MACd;MACAyD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACL3D,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZE,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MACRC,oBAAoB;MAEpB2C,cAAc;MACdnB,WAAW;MACXW,UAAU;MACVU,aAAa;MACbiB,YAAY;MACZhB,aAAa;MACbmB,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBE,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACXgE,UAAU;MACVE,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdd,aAAa;MACbuB,qBAAqB;MACrBG,UAAU;MACVQ,WAAW;MACXM,QAAQ;MACRuE,WAAW;MACXI,QAAQ;MACRC,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXiB,SAAS;MACTf,iBAAiB;MAEjB;MACA2B,eAAe;MACfI,eAAe;MACfC,mBAAmB;MACnBE,mBAAmB;MACnBE,mBAAmB;MACnBC,oBAAoB;MACpBI,0BAA0B;MAC1BW,yBAAyB;MACzBZ,iBAAiB;MAEjB;MACAc,iBAAiB,EAAGhU,IAAI,IAAKsB,gBAAgB,CAACtB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnE0V,kBAAkB,EAAGhU,KAAK,IAAK4B,iBAAiB,CAAC5B,KAAK,CAAC,EAAE1B,IAAG,IAAK;IACnE;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/43e5a1dd8bee20ad6ee2c0a17b38737b4cf1b662d8114a97607995857a9aabf5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/43e5a1dd8bee20ad6ee2c0a17b38737b4cf1b662d8114a97607995857a9aabf5.json
new file mode 100644
index 00000000..d3e95f4e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/43e5a1dd8bee20ad6ee2c0a17b38737b4cf1b662d8114a97607995857a9aabf5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n overlay.setOptions({\n clickable: isClickable\n });\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","cursor","zIndex","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/445a01694265ce0924d6c967bd9a9039fd3d761faffcc170aca84041ca1520e9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/445a01694265ce0924d6c967bd9a9039fd3d761faffcc170aca84041ca1520e9.json
new file mode 100644
index 00000000..33bf4b47
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/445a01694265ce0924d6c967bd9a9039fd3d761faffcc170aca84041ca1520e9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1,\n clickable: isClickable // 在非威胁区模式下完全禁用点击\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域交互状态已更新,可点击: ${isClickable},当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n } else {\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n console.log('非威胁区模式,事件将传播到地图');\n // 不调用stopPropagation,让事件继续传播\n return true; // 允许事件继续传播\n }\n };\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","clickable","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/448a53749ab91c5b267eed3fe5da30424ce84ff4e6d00b8a5db224c81c5708a6.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/448a53749ab91c5b267eed3fe5da30424ce84ff4e6d00b8a5db224c81c5708a6.json
new file mode 100644
index 00000000..d3aa82fb
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/448a53749ab91c5b267eed3fe5da30424ce84ff4e6d00b8a5db224c81c5708a6.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/44b376097422caa1dc0c6c85dfb54c691ce5d741152515258e3718c6831b8f06.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/44b376097422caa1dc0c6c85dfb54c691ce5d741152515258e3718c6831b8f06.json
new file mode 100644
index 00000000..51211fb3
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/44b376097422caa1dc0c6c85dfb54c691ce5d741152515258e3718c6831b8f06.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 显示历史路径对话框\n const showHistoryDialog = () => {\n historyDialogVisible.value = true;\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`);\n if (response.data.success) {\n historyPaths.value = response.data.data;\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n ElMessage.error('获取历史路径失败');\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathData.path_points || [],\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: pathData.flight_altitude || 100,\n flightSpeed: pathData.flight_speed || 10,\n pathInfo: {\n algorithm: pathData.algorithm,\n distance: pathData.distance,\n duration: pathData.estimated_time,\n pointCount: pathData.waypoint_count,\n threatZonesAvoided: pathData.threat_zones_avoided || []\n }\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","showHistoryDialog","loadHistoryPaths","response","data","success","error","console","selectHistoryPath","loadHistoryPath","id","pathData","path_points","flight_altitude","flight_speed","distance","duration","estimated_time","pointCount","waypoint_count","threatZonesAvoided","threat_zones_avoided","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4520721d4c4eda532d6ca3c039d65a5ebe9601d8e1342a33a0bdaeea6fba2957.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4520721d4c4eda532d6ca3c039d65a5ebe9601d8e1342a33a0bdaeea6fba2957.json
new file mode 100644
index 00000000..d34962ee
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4520721d4c4eda532d6ca3c039d65a5ebe9601d8e1342a33a0bdaeea6fba2957.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/484daefb14eae690b960052bacb5154f0a67b29a0c3913b1fc060a885dc7e21d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/484daefb14eae690b960052bacb5154f0a67b29a0c3913b1fc060a885dc7e21d.json
new file mode 100644
index 00000000..b49ae92b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/484daefb14eae690b960052bacb5154f0a67b29a0c3913b1fc060a885dc7e21d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4a57263ad8eaaf8bd33b6660e626526a41023d9cfeb4338819c1edec1451684d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4a57263ad8eaaf8bd33b6660e626526a41023d9cfeb4338819c1edec1451684d.json
new file mode 100644
index 00000000..7786aa92
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4a57263ad8eaaf8bd33b6660e626526a41023d9cfeb4338819c1edec1451684d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1,\n clickable: isClickable // 在非威胁区模式下完全禁用点击\n });\n\n // 动态管理点击事件监听器\n if (overlay._zoneClickHandler) {\n // 先移除现有的事件监听器\n overlay.off('click', overlay._zoneClickHandler);\n\n // 只在威胁区模式下重新绑定\n if (isClickable) {\n overlay.on('click', overlay._zoneClickHandler);\n }\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域交互状态已更新,可点击: ${isClickable},当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n };\n\n // 保存事件处理函数引用,用于动态管理\n overlay._zoneClickHandler = handleZoneClick;\n\n // 只在威胁区模式下绑定点击事件\n if (activePanel.value === 'threatZone') {\n overlay.on('click', handleZoneClick);\n }\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","clickable","_zoneClickHandler","off","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/53aecba35d48c1d9380b2a5103ba67cc2262a6f46ebde68b3552e756993526cc.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/53aecba35d48c1d9380b2a5103ba67cc2262a6f46ebde68b3552e756993526cc.json
new file mode 100644
index 00000000..634ab6f9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/53aecba35d48c1d9380b2a5103ba67cc2262a6f46ebde68b3552e756993526cc.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 额外处理:动态管理事件监听器\n if (!isClickable && overlay.off && overlay._threatZoneClickHandler) {\n // 移除点击事件监听器\n overlay.off('click', overlay._threatZoneClickHandler);\n } else if (isClickable && overlay.on && overlay._threatZoneClickHandler) {\n // 重新绑定点击事件监听器(先移除再添加,避免重复绑定)\n overlay.off('click', overlay._threatZoneClickHandler);\n overlay.on('click', overlay._threatZoneClickHandler);\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n };\n\n // 保存事件处理函数的引用,以便后续移除\n overlay._threatZoneClickHandler = handleZoneClick;\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","off","_threatZoneClickHandler","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/54dbfa237556e34f88a7d18d4a170d5d951654f1fe0ff9887c178f18176bd85b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/54dbfa237556e34f88a7d18d4a170d5d951654f1fe0ff9887c178f18176bd85b.json
new file mode 100644
index 00000000..b54a0365
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/54dbfa237556e34f88a7d18d4a170d5d951654f1fe0ff9887c178f18176bd85b.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/556baf0fc4dc55e4ade3500d00095fa1b32978c21181d353468da24e0c7f0e0e.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/556baf0fc4dc55e4ade3500d00095fa1b32978c21181d353468da24e0c7f0e0e.json
new file mode 100644
index 00000000..47eee409
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/556baf0fc4dc55e4ade3500d00095fa1b32978c21181d353468da24e0c7f0e0e.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning') {\n // 路径规划 - 直接添加路径点,无需检查addMode\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 额外处理:动态管理事件监听器\n if (!isClickable && overlay.off && overlay._threatZoneClickHandler) {\n // 移除点击事件监听器\n overlay.off('click', overlay._threatZoneClickHandler);\n } else if (isClickable && overlay.on && overlay._threatZoneClickHandler) {\n // 重新绑定点击事件监听器(先移除再添加,避免重复绑定)\n overlay.off('click', overlay._threatZoneClickHandler);\n overlay.on('click', overlay._threatZoneClickHandler);\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n };\n\n // 保存事件处理函数的引用,以便后续移除\n overlay._threatZoneClickHandler = handleZoneClick;\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value\n });\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","off","_threatZoneClickHandler","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/55eab26be7d8f266c7d14697bf8f2090ec0058741aef1af7c8b335a2e4a3f287.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/55eab26be7d8f266c7d14697bf8f2090ec0058741aef1af7c8b335a2e4a3f287.json
new file mode 100644
index 00000000..4d88f6b7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/55eab26be7d8f266c7d14697bf8f2090ec0058741aef1af7c8b335a2e4a3f287.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAkB;;EAEtBA,KAAK,EAAC;AAAY;;EAEhBA,KAAK,EAAC;AAAgB;;EAIhBA,KAAK,EAAC;AAAwB;;EAY9BA,KAAK,EAAC;AAAwB;;EA8B9BA,KAAK,EAAC;AAAwB;;EA0B9BA,KAAK,EAAC;AAAwB;;EAkBtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;;uBAhH/BC,mBAAA,CA+JM,OA/JNC,UA+JM,GA9JJC,mBAAA,YAAe,EACfC,mBAAA,CAyFM,OAzFNC,UAyFM,GAxFJF,mBAAA,eAAkB,EAClBC,mBAAA,CAsFM,OAtFNE,UAsFM,GArFJC,YAAA,CAoFUC,kBAAA;gBApFQC,IAAA,CAAAC,WAAW;+DAAXD,IAAA,CAAAC,WAAW,GAAAC,MAAA;IAAGC,UAAS,EAAEH,IAAA,CAAAI,cAAc;IAAE,cAAY,EAAC;;sBACtE,MAAe,CAAfV,mBAAA,YAAe,EACfI,YAAA,CAScO,sBAAA;MATDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAOM,CAPNZ,mBAAA,CAOM,OAPNa,UAOM,GANJV,YAAA,CAKEW,0BAAA;QAJCC,eAAe,EAAEV,IAAA,CAAAW,aAAa;QAC9BC,cAAa,EAAEZ,IAAA,CAAAa,YAAY;QAC3B,UAAQ,EAAEb,IAAA,CAAAc,OAAO;QACjB,eAAa,EAAEd,IAAA,CAAAe;;;QAKtBrB,mBAAA,aAAgB,EAChBI,YAAA,CA2BcO,sBAAA;MA3BDC,KAAK,EAAC,OAAO;MAACC,IAAI,EAAC;;wBAC9B,MAyBM,CAzBNZ,mBAAA,CAyBM,OAzBNqB,UAyBM,GAxBJlB,YAAA,CAuBEmB,4BAAA;QAtBC,cAAY,EAAEjB,IAAA,CAAAkB,WAAW;QACzB,kBAAgB,EAAElB,IAAA,CAAAmB,cAAc;QAChC,qBAAmB,EAAEnB,IAAA,CAAAoB,iBAAiB;QACtC,WAAS,EAAEpB,IAAA,CAAAqB,QAAQ;QACnB,cAAY,EAAErB,IAAA,CAAAsB,WAAW;QACzB,eAAa,EAAEtB,IAAA,CAAAuB,YAAY;QAC3B,oBAAkB,EAAEvB,IAAA,CAAAwB,iBAAiB;QACrC,mBAAiB,EAAExB,IAAA,CAAAyB,eAAe;QAClC,gBAAc,EAAEzB,IAAA,CAAA0B,aAAa;QAC7BC,oBAAqB,EAAE3B,IAAA,CAAA4B,sBAAsB;QAC7CC,qBAAsB,EAAE7B,IAAA,CAAA8B,uBAAuB;QAC/CC,aAAa,EAAE/B,IAAA,CAAAgC,WAAW;QAC1BC,YAAW,EAAEjC,IAAA,CAAAkC,UAAU;QACvBC,YAAW,EAAEnC,IAAA,CAAAoC,UAAU;QACvBC,UAAS,EAAErC,IAAA,CAAAsC,QAAQ;QACnBC,eAAe,EAAEvC,IAAA,CAAAwC,aAAa;QAC9BC,uBAAuB,EAAEzC,IAAA,CAAA0C,qBAAqB;QAC9CC,oBAAoB,EAAE3C,IAAA,CAAA4C,kBAAkB;QACxCC,yBAAyB,EAAE7C,IAAA,CAAA8C,uBAAuB;QAClDC,uBAAwB,EAAE/C,IAAA,CAAAgD,qBAAqB;QAC/CC,gBAAgB,EAAEjD,IAAA,CAAAkD,cAAc;QAChCC,YAAY,EAAEnD,IAAA,CAAAoD;;;QAKrB1D,mBAAA,YAAe,EACfI,YAAA,CAuBcO,sBAAA;MAvBDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAqBM,CArBNZ,mBAAA,CAqBM,OArBN0D,UAqBM,GApBJvD,YAAA,CAmBEwD,8BAAA;QAlBC,aAAW,EAAEtD,IAAA,CAAAuD,UAAU;QACvB,UAAQ,EAAEvD,IAAA,CAAAc,OAAO;QACjB,oBAAkB,EAAEd,IAAA,CAAAwD,iBAAiB;QACrC,iBAAe,EAAExD,IAAA,CAAAyD,cAAc;QAC/B,cAAY,EAAEzD,IAAA,CAAA0D,WAAW;QACzB,WAAS,EAAE1D,IAAA,CAAA2D,QAAQ;QACnBjD,eAAe,EAAEV,IAAA,CAAAW,aAAa;QAC9BiD,UAAS,EAAE5D,IAAA,CAAA6D,QAAQ;QACnBC,UAAS,EAAE9D,IAAA,CAAA+D,QAAQ;QACnBC,aAAY,EAAEhE,IAAA,CAAAiE,WAAW;QACzBC,aAAY,EAAElE,IAAA,CAAAmE,WAAW;QACzBC,eAAe,EAAEpE,IAAA,CAAAqE,aAAa;QAC9BC,aAAa,EAAEtE,IAAA,CAAAuE,WAAW;QAC1BC,WAAW,EAAExE,IAAA,CAAAyE,SAAS;QACtBC,yBAAyB,EAAE1E,IAAA,CAAA2E,uBAAuB;QAClDC,sBAAsB,EAAE5E,IAAA,CAAA6E,oBAAoB;QAC5CC,mBAAmB,EAAE9E,IAAA,CAAA+E,iBAAiB;QACtCC,iBAAiB,EAAEhF,IAAA,CAAAiF;;;QAK1BvF,mBAAA,YAAe,EACfI,YAAA,CAacO,sBAAA;MAbDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAWM,CAXNZ,mBAAA,CAWM,OAXNuF,UAWM,GAVJpF,YAAA,CASEqF,6BAAA;QARC,gBAAc,EAAEnF,IAAA,CAAAoF,oBAAoB;QACpCC,UAAS,EAAErF,IAAA,CAAAsF,eAAe;QAC1BC,UAAS,EAAEvF,IAAA,CAAAwF,eAAe;QAC1BC,cAAc,EAAEzF,IAAA,CAAA0F,mBAAmB;QACnCC,cAAc,EAAE3F,IAAA,CAAA4F,mBAAmB;QACnCC,cAAc,EAAE7F,IAAA,CAAA8F,mBAAmB;QACnCC,eAAc,EAAE/F,IAAA,CAAAgG,oBAAoB;QACpCC,qBAAqB,EAAEjG,IAAA,CAAAkG;;;;;uDAQpCxG,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNwG,UA0BM,GAzBJrG,YAAA,CAKEsG,oBAAA;IAJCC,IAAI,EAAErG,IAAA,CAAAC,WAAW;IACjBqG,WAAU,EAAEtG,IAAA,CAAAsG,WAAW;IACvBC,UAAS,EAAEvG,IAAA,CAAAuG,UAAU;IACtBC,GAAG,EAAC;kEAGN9G,mBAAA,YAAe,EACJM,IAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANNiH,UAMM,GALJ3G,YAAA,CAIE4G,mBAAA;IAHCC,KAAK,EAAE3G,IAAA,CAAA4G,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJnH,mBAAA,YAAe,EACJM,IAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNsH,WAOM,GANJhH,YAAA,CAKE4G,mBAAA;IAJCC,KAAK,EAAE3G,IAAA,CAAA+G,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBtH,mBAAA,cAAiB,EACjBI,YAAA,CAmCYmH,oBAAA;gBAlCDjH,IAAA,CAAAkH,iBAAiB;+DAAjBlH,IAAA,CAAAkH,iBAAiB,GAAAhH,MAAA;IAC1ByG,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DvH,YAAA,CAA4DwH,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAtH,MAAA,IAAEF,IAAA,CAAAkH,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChD1H,YAAA,CAAgEwH,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEvH,IAAA,CAAAkD;;wBAAgB,MAAEsE,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBV1H,YAAA,CAyBU2H,kBAAA;MAzBAC,KAAK,EAAE1H,IAAA,CAAA2H,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf9H,YAAA,CAQe+H,uBAAA;QARDvH,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMYgI,oBAAA;sBANQ9H,IAAA,CAAA2H,QAAQ,CAACd,IAAI;qEAAb7G,IAAA,CAAA2H,QAAQ,CAACd,IAAI,GAAA3G,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxCjI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAAyCkI,oBAAA;YAA9B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAOe+H,uBAAA;QAPDvH,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKYgI,oBAAA;sBALQ9H,IAAA,CAAA2H,QAAQ,CAACO,KAAK;qEAAdlI,IAAA,CAAA2H,QAAQ,CAACO,KAAK,GAAAhI,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArCjI,YAAA,CAAqCkI,oBAAA;YAA1B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAsCkI,oBAAA;YAA3B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAMe+H,uBAAA;QANDvH,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEqI,mBAAA;sBAHSnI,IAAA,CAAA2H,QAAQ,CAACS,WAAW;qEAApBpI,IAAA,CAAA2H,QAAQ,CAACS,WAAW,GAAAlI,MAAA;UAC7B2G,IAAI,EAAC,UAAU;UACdwB,IAAI,EAAE","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/579dc3235dc5614aef282344055b2fb47646c7d2f27554c740752cec03350bbf.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/579dc3235dc5614aef282344055b2fb47646c7d2f27554c740752cec03350bbf.json
new file mode 100644
index 00000000..f41f628d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/579dc3235dc5614aef282344055b2fb47646c7d2f27554c740752cec03350bbf.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAkB;;EAEtBA,KAAK,EAAC;AAAY;;EAEhBA,KAAK,EAAC;AAAgB;;EAIhBA,KAAK,EAAC;AAAwB;;EAY9BA,KAAK,EAAC;AAAwB;;EA8B9BA,KAAK,EAAC;AAAwB;;EA0B9BA,KAAK,EAAC;AAAwB;;EAkBtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;;uBAhH/BC,mBAAA,CA+JM,OA/JNC,UA+JM,GA9JJC,mBAAA,YAAe,EACfC,mBAAA,CAyFM,OAzFNC,UAyFM,GAxFJF,mBAAA,eAAkB,EAClBC,mBAAA,CAsFM,OAtFNE,UAsFM,GArFJC,YAAA,CAoFUC,kBAAA;gBApFQC,MAAA,CAAAC,WAAW;+DAAXD,MAAA,CAAAC,WAAW,GAAAC,MAAA;IAAGC,UAAS,EAAEH,MAAA,CAAAI,cAAc;IAAE,cAAY,EAAC;;sBACtE,MAAe,CAAfV,mBAAA,YAAe,EACfI,YAAA,CAScO,sBAAA;MATDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAOM,CAPNZ,mBAAA,CAOM,OAPNa,UAOM,GANJV,YAAA,CAKEW,0BAAA;QAJCC,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BC,cAAa,EAAEZ,MAAA,CAAAa,YAAY;QAC3B,UAAQ,EAAEb,MAAA,CAAAc,OAAO;QACjB,eAAa,EAAEd,MAAA,CAAAe;;;QAKtBrB,mBAAA,aAAgB,EAChBI,YAAA,CA2BcO,sBAAA;MA3BDC,KAAK,EAAC,OAAO;MAACC,IAAI,EAAC;;wBAC9B,MAyBM,CAzBNZ,mBAAA,CAyBM,OAzBNqB,UAyBM,GAxBJlB,YAAA,CAuBEmB,4BAAA;QAtBC,cAAY,EAAEjB,MAAA,CAAAkB,WAAW;QACzB,kBAAgB,EAAElB,MAAA,CAAAmB,cAAc;QAChC,qBAAmB,EAAEnB,MAAA,CAAAoB,iBAAiB;QACtC,WAAS,EAAEpB,MAAA,CAAAqB,QAAQ;QACnB,cAAY,EAAErB,MAAA,CAAAsB,WAAW;QACzB,eAAa,EAAEtB,MAAA,CAAAuB,YAAY;QAC3B,oBAAkB,EAAEvB,MAAA,CAAAwB,iBAAiB;QACrC,mBAAiB,EAAExB,MAAA,CAAAyB,eAAe;QAClC,gBAAc,EAAEzB,MAAA,CAAA0B,aAAa;QAC7BC,oBAAqB,EAAE3B,MAAA,CAAA4B,sBAAsB;QAC7CC,qBAAsB,EAAE7B,MAAA,CAAA8B,uBAAuB;QAC/CC,aAAa,EAAE/B,MAAA,CAAAgC,WAAW;QAC1BC,YAAW,EAAEjC,MAAA,CAAAkC,UAAU;QACvBC,YAAW,EAAEnC,MAAA,CAAAoC,UAAU;QACvBC,UAAS,EAAErC,MAAA,CAAAsC,QAAQ;QACnBC,eAAe,EAAEvC,MAAA,CAAAwC,aAAa;QAC9BC,uBAAuB,EAAEzC,MAAA,CAAA0C,qBAAqB;QAC9CC,oBAAoB,EAAE3C,MAAA,CAAA4C,kBAAkB;QACxCC,yBAAyB,EAAE7C,MAAA,CAAA8C,uBAAuB;QAClDC,uBAAwB,EAAE/C,MAAA,CAAAgD,qBAAqB;QAC/CC,gBAAgB,EAAEjD,MAAA,CAAAkD,cAAc;QAChCC,YAAY,EAAEnD,MAAA,CAAAoD;;;QAKrB1D,mBAAA,YAAe,EACfI,YAAA,CAuBcO,sBAAA;MAvBDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAqBM,CArBNZ,mBAAA,CAqBM,OArBN0D,UAqBM,GApBJvD,YAAA,CAmBEwD,8BAAA;QAlBC,aAAW,EAAEtD,MAAA,CAAAuD,UAAU;QACvB,UAAQ,EAAEvD,MAAA,CAAAc,OAAO;QACjB,oBAAkB,EAAEd,MAAA,CAAAwD,iBAAiB;QACrC,iBAAe,EAAExD,MAAA,CAAAyD,cAAc;QAC/B,cAAY,EAAEzD,MAAA,CAAA0D,WAAW;QACzB,WAAS,EAAE1D,MAAA,CAAA2D,QAAQ;QACnBjD,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BiD,UAAS,EAAE5D,MAAA,CAAA6D,QAAQ;QACnBC,UAAS,EAAE9D,MAAA,CAAA+D,QAAQ;QACnBC,aAAY,EAAEhE,MAAA,CAAAiE,WAAW;QACzBC,aAAY,EAAElE,MAAA,CAAAmE,WAAW;QACzBC,eAAe,EAAEpE,MAAA,CAAAqE,aAAa;QAC9BC,aAAa,EAAEtE,MAAA,CAAAuE,WAAW;QAC1BC,WAAW,EAAExE,MAAA,CAAAyE,SAAS;QACtBC,yBAAyB,EAAE1E,MAAA,CAAA2E,uBAAuB;QAClDC,sBAAsB,EAAE5E,MAAA,CAAA6E,oBAAoB;QAC5CC,mBAAmB,EAAE9E,MAAA,CAAA+E,iBAAiB;QACtCC,iBAAiB,EAAEhF,MAAA,CAAAiF;;;QAK1BvF,mBAAA,YAAe,EACfI,YAAA,CAacO,sBAAA;MAbDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAWM,CAXNZ,mBAAA,CAWM,OAXNuF,UAWM,GAVJpF,YAAA,CASEqF,6BAAA;QARC,gBAAc,EAAEnF,MAAA,CAAAoF,oBAAoB;QACpCC,UAAS,EAAErF,MAAA,CAAAsF,eAAe;QAC1BC,UAAS,EAAEvF,MAAA,CAAAwF,eAAe;QAC1BC,cAAc,EAAEzF,MAAA,CAAA0F,mBAAmB;QACnCC,cAAc,EAAE3F,MAAA,CAAA4F,mBAAmB;QACnCC,cAAc,EAAE7F,MAAA,CAAA8F,mBAAmB;QACnCC,eAAc,EAAE/F,MAAA,CAAAgG,oBAAoB;QACpCC,qBAAqB,EAAEjG,MAAA,CAAAkG;;;;;uDAQpCxG,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNwG,UA0BM,GAzBJrG,YAAA,CAKEsG,oBAAA;IAJCC,IAAI,EAAErG,MAAA,CAAAC,WAAW;IACjBqG,WAAU,EAAEtG,MAAA,CAAAsG,WAAW;IACvBC,UAAS,EAAEvG,MAAA,CAAAuG,UAAU;IACtBC,GAAG,EAAC;kEAGN9G,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANNiH,UAMM,GALJ3G,YAAA,CAIE4G,mBAAA;IAHCC,KAAK,EAAE3G,MAAA,CAAA4G,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJnH,mBAAA,YAAe,EACJM,MAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNsH,WAOM,GANJhH,YAAA,CAKE4G,mBAAA;IAJCC,KAAK,EAAE3G,MAAA,CAAA+G,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBtH,mBAAA,cAAiB,EACjBI,YAAA,CAmCYmH,oBAAA;gBAlCDjH,MAAA,CAAAkH,iBAAiB;+DAAjBlH,MAAA,CAAAkH,iBAAiB,GAAAhH,MAAA;IAC1ByG,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DvH,YAAA,CAA4DwH,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAtH,MAAA,IAAEF,MAAA,CAAAkH,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChD1H,YAAA,CAAgEwH,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEvH,MAAA,CAAAkD;;wBAAgB,MAAEsE,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBV1H,YAAA,CAyBU2H,kBAAA;MAzBAC,KAAK,EAAE1H,MAAA,CAAA2H,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf9H,YAAA,CAQe+H,uBAAA;QARDvH,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMYgI,oBAAA;sBANQ9H,MAAA,CAAA2H,QAAQ,CAACd,IAAI;qEAAb7G,MAAA,CAAA2H,QAAQ,CAACd,IAAI,GAAA3G,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxCjI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAAyCkI,oBAAA;YAA9B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAOe+H,uBAAA;QAPDvH,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKYgI,oBAAA;sBALQ9H,MAAA,CAAA2H,QAAQ,CAACO,KAAK;qEAAdlI,MAAA,CAAA2H,QAAQ,CAACO,KAAK,GAAAhI,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArCjI,YAAA,CAAqCkI,oBAAA;YAA1B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAsCkI,oBAAA;YAA3B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAMe+H,uBAAA;QANDvH,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEqI,mBAAA;sBAHSnI,MAAA,CAAA2H,QAAQ,CAACS,WAAW;qEAApBpI,MAAA,CAAA2H,QAAQ,CAACS,WAAW,GAAAlI,MAAA;UAC7B2G,IAAI,EAAC,UAAU;UACdwB,IAAI,EAAE","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/595638e3bdcbdd8b3d4b4de05f2c9f8ac0696bf7ec39091fe2e3f43f8d8918e9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/595638e3bdcbdd8b3d4b4de05f2c9f8ac0696bf7ec39091fe2e3f43f8d8918e9.json
new file mode 100644
index 00000000..946d151b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/595638e3bdcbdd8b3d4b4de05f2c9f8ac0696bf7ec39091fe2e3f43f8d8918e9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5b114093c31e7f54864e0ad802f5119135a9582ecf23a3f60fb6637918fd5046.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5b114093c31e7f54864e0ad802f5119135a9582ecf23a3f60fb6637918fd5046.json
new file mode 100644
index 00000000..83d1db32
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5b114093c31e7f54864e0ad802f5119135a9582ecf23a3f60fb6637918fd5046.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAmKA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAI,QAAS,KAAI;AAC5D,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAS,EAAEC,YAAW,QAAS,cAAa;AACrD,OAAOC,SAAQ,MAAO,6BAA4B;AAClD,OAAOC,aAAY,MAAO,4CAA2C;AACrE,OAAOC,eAAc,MAAO,8CAA6C;AACzE,OAAOC,iBAAgB,MAAO,gDAA+C;AAC7E,OAAOC,gBAAe,MAAO,+CAA8C;AAE3E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVN,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIX,QAAQ,CAAC;IACvB,MAAMY,YAAW,GAAIjB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMmB,WAAU,GAAInB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMoB,OAAM,GAAIpB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMqB,YAAW,GAAIrB,GAAG,CAAC,EAAE;IAC3B,MAAMsB,aAAY,GAAItB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMuB,WAAU,GAAIvB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMwB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIzB,GAAG,CAAC,IAAI;IACzB,MAAM0B,iBAAgB,GAAI1B,GAAG,CAAC,OAAO;IACrC,MAAM2B,WAAU,GAAI3B,GAAG,CAAC,QAAQ;IAChC,MAAM4B,YAAW,GAAI5B,GAAG,CAAC,IAAI;IAC7B,MAAM6B,iBAAgB,GAAI7B,GAAG,CAAC,EAAE;IAChC,MAAM8B,eAAc,GAAI9B,GAAG,CAAC,CAAC,IAAI+B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIjC,GAAG,CAAC,IAAI;IAC/B,MAAMkC,aAAY,GAAIlC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMmC,iBAAgB,GAAInC,GAAG,CAAC,KAAK;IACnC,MAAMoC,QAAO,GAAIpC,GAAG,CAAC;MACnBqC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAI1C,GAAG,CAAC,EAAE;IACzB,MAAM2C,WAAU,GAAI3C,GAAG,CAAC,EAAE;IAC1B,MAAM4C,QAAO,GAAI5C,GAAG,CAAC,IAAI;IACzB,MAAM6C,iBAAgB,GAAI7C,GAAG,CAAC,OAAO;IACrC,MAAM8C,cAAa,GAAI9C,GAAG,CAAC,GAAG;IAC9B,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMiD,oBAAmB,GAAIjD,GAAG,CAAC,EAAE;IACnC,MAAMkD,mBAAkB,GAAI,CAAC,GAAG;;IAEhC;IACA,MAAMC,SAAQ,GAAInD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMoD,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,gBAAe,GAAI;MACvBC,KAAK,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAEpD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAErD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEzD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAE1D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAE3D,IAAI,EAAE,MAAM;QAAEwD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BvD,WAAW,CAACwD,KAAI,GAAID,GAAE;MACtBhB,OAAO,CAACkB,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACF1B,SAAS,CAACwB,KAAI,GAAI,IAAIE,IAAI,CAACE,SAAS,CAACL,GAAG;UACxCvB,SAAS,CAACwB,KAAK,CAACK,EAAE,CAAC,MAAM,EAAEC,cAAc;UACzCvB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;QAC9B,EAAE,OAAOnB,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK;QACxC;MACF;;MAEA;MACAyB,WAAW,CAAC;IACd;;IAEA;IACA,MAAMA,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACFxB,OAAO,CAACkB,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMO,eAAe,CAAC;QAEtBzB,OAAO,CAACkB,GAAG,CAAC,UAAU;MAExB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM2B,UAAS,GAAKC,CAAC,IAAK;MACxB,MAAM;QAAEC,GAAG;QAAEC;MAAI,IAAIF,CAAC,CAACG,MAAK;MAE5B,IAAItE,WAAW,CAACyD,KAAI,KAAM,UAAS,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAIrE,WAAW,CAACyD,KAAI,KAAM,cAAa,IAAKvD,OAAO,CAACuD,KAAK,EAAE;QAChE;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQzE,WAAW,CAACyD,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAQ,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA;MACJ;IACF;;IAEA;IACA,MAAMS,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACAxE,OAAO,CAACuD,KAAI,GAAI,KAAI;MACpBlD,QAAQ,CAACkD,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAF,uBAAuB,CAAC;IAC1B;;IAEA;;IAEA;IACA,MAAMG,aAAY,GAAIA,CAAA,KAAM;MAC1B1E,OAAO,CAACuD,KAAI,GAAI,CAACvD,OAAO,CAACuD,KAAI;MAC7B;MACA,IAAIzD,WAAW,CAACyD,KAAI,KAAM,YAAY,EAAE;QACtClD,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;UACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;;IAIA;IACA,MAAME,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI7E,WAAW,CAACyD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIzD,WAAW,CAACyD,KAAI,KAAM,cAAc,EAAE;QAC/C,OAAO,WAAU;MACnB;MACA,OAAO,EAAC;IACV;;IAEA;;IAEA;IACA,MAAMc,cAAa,GAAIA,CAACH,GAAG,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACpE,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAMmB,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFoD,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,WAAWnB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAV,MAAM,CAAChB,EAAE,CAAC,OAAO,EAAE,MAAM;QACvB1E,SAAS,CAAC;UACRqG,OAAO,EAAE,UAAUrB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDpE,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5B1E,aAAa,CAACqD,KAAK,CAACkC,IAAI,CAACb,MAAM;MAC/B3E,YAAY,CAACsD,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;MAEpCjF,SAAS,CAACwG,OAAO,CAAC,WAAWxB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMK,YAAW,GAAIA,CAAA,KAAM;MACzBzF,aAAa,CAACqD,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QACpC7E,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACD1E,aAAa,CAACqD,KAAI,GAAI,EAAC;MACvBtD,YAAY,CAACsD,KAAI,GAAI,EAAC;MACtBrE,SAAS,CAACwG,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMI,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIzF,QAAQ,CAACkD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIlD,QAAQ,CAACkD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMwC,sBAAqB,GAAK7E,IAAI,IAAK;MACvCZ,iBAAiB,CAACiD,KAAI,GAAIrC,IAAG;IAC/B;;IAEA;IACA,MAAM8E,uBAAsB,GAAK7E,KAAK,IAAK;MACzCZ,WAAW,CAACgD,KAAI,GAAIpC,KAAI;IAC1B;;IAEA;IACA,MAAM8E,kBAAiB,GAAKC,MAAM,IAAK;MACrC1F,YAAY,CAAC+C,KAAI,GAAI2C,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxC3F,iBAAiB,CAAC8C,KAAI,GAAI6C,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvC5F,eAAe,CAAC6C,KAAI,GAAI+C,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACzE,SAAS,CAACwB,KAAK,EAAE;QACpBrE,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIhC,QAAQ,CAACkD,KAAI,KAAMiD,IAAI,EAAE;QAC3B;QACAnG,QAAQ,CAACkD,KAAI,GAAI,IAAG;QACpB,IAAI;UACFxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOpC,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAnD,SAAS,CAACuH,IAAI,CAAC,SAAS;QACxB;MACF;MAEApG,QAAQ,CAACkD,KAAI,GAAIiD,IAAG;MACpBxG,OAAO,CAACuD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAMmD,OAAM,GAAI;QACdC,WAAW,EAAEnE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC5DkE,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEtE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;QAC1DqE,WAAW,EAAEhE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;MACpD;MAEA,IAAI;QACFX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEgD,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACXzE,SAAS,CAACwB,KAAK,CAACyD,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZ3E,SAAS,CAACwB,KAAK,CAAC0D,OAAO,CAACP,OAAO;YAC/B;UACF,KAAK,WAAW;YACd3E,SAAS,CAACwB,KAAK,CAAC2D,SAAS,CAACR,OAAO;YACjC;QACJ;QAEAxH,SAAS,CAACuH,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOzD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1BhC,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOsD,KAAK,IAAK;MACtC;MACA,MAAMC,OAAM,GAAIpI,KAAK,CAACmI,KAAK,CAACE,GAAG;MAE/B/E,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE4D,OAAO;MACjC9E,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAE4D,OAAO,CAACE,SAAQ,IAAKF,OAAO,CAACG,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAIzH,WAAW,CAACwD,KAAK,CAACkE,cAAc,CAAC,SAAS;QAC3DnF,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEgE,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC5DkE,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEtE,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAACb,KAAK;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACxC,WAAW,CAACgD,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkE,YAAY;QACnCN,OAAO,CAACO,UAAU,CAACD,YAAY;;QAE/B;QACAE,UAAU,CAAC,MAAM;UACf7H,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAENvF,OAAO,CAACkB,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMhB,QAAO,GAAIyG,sBAAsB,CAACV,OAAO;;MAE/C;MACA,IAAI,CAAC9G,iBAAiB,CAACiD,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE/B,iBAAiB,CAACiD,KAAK;QAChDrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC9B,WAAW,CAACgD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE9B,WAAW,CAACgD,KAAK;QAC1CrE,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChB,QAAQ,EAAE;QACbiB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBnD,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAM0F,QAAO,GAAI;QACf7G,IAAI,EAAEZ,iBAAiB,CAACiD,KAAK;QAC7BpC,KAAK,EAAEZ,WAAW,CAACgD,KAAK;QACxBnC,WAAW,EAAEX,iBAAiB,CAAC8C,KAAI,IAAK,EAAE;QAC1CyE,SAAS,EAAE,CAAC,GAAGtH,eAAe,CAAC6C,KAAK,CAAC;QAAE;QACvClC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFiB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuE,QAAQ;QAClCzF,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAElD,iBAAiB,CAACiD,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEjD,WAAW,CAACgD,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE/C,iBAAiB,CAAC8C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEnC,QAAQ;;QAE7B;QACA,MAAM4G,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;UAChDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,QAAQ;QAC/B,CAAC;QAEDzF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE5D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEsG,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsF,MAAM;QAE9B,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClB,MAAMsD,IAAG,GAAIF,MAAM,CAACG,IAAG;;UAEvB;UACAlJ,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;;UAEhC;UACA8B,qBAAqB,CAACF,IAAI;UAE1B9J,SAAS,CAACwG,OAAO,CAAC,MAAMlD,gBAAgB,CAAClC,iBAAiB,CAACiD,KAAK,CAAC,CAAC9D,IAAI,IAAI;UAC1E6C,OAAO,CAACkB,GAAG,CAAC,kBAAkB,EAAEwF,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;;QAE3C;QACAxF,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;MAClC;;MAEA;MACA/G,QAAQ,CAACkD,KAAI,GAAI,IAAG;MACpB,IAAIxB,SAAS,CAACwB,KAAK,EAAE;QACnBxB,SAAS,CAACwB,KAAK,CAACkB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAnC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErD,WAAW,CAACoD,KAAK,CAAC4F,MAAM;IAClD;IAEA,MAAMrB,sBAAqB,GAAKV,OAAO,IAAK;MAC1C9E,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE4D,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MAEjE,IAAI;QACF,IAAIF,OAAO,CAACG,UAAS,KAAM,aAAY,IAAKH,OAAO,CAACE,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM8B,MAAK,GAAIhC,OAAO,CAACiC,SAAS,CAAC;UACjC,MAAMnD,MAAK,GAAIkB,OAAO,CAACkC,SAAS,CAAC;UACjChH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;YAAE4F,MAAM;YAAElD;UAAO,CAAC;UACzC,OAAO;YACLhF,IAAI,EAAE,QAAQ;YACdkI,MAAM,EAAE,CAACA,MAAM,CAAClF,GAAG,EAAEkF,MAAM,CAACjF,GAAG,CAAC;YAChC+B,MAAM,EAAEA;UACV;QACF,OAAO,IAAIkB,OAAO,CAACG,UAAS,KAAM,cAAa,IAAKH,OAAO,CAACE,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAMiC,IAAG,GAAInC,OAAO,CAACoC,OAAO,CAAC;UAC7BlH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE+F,IAAI;UAC5B,OAAO;YACLrI,IAAI,EAAE,SAAS;YACfqI,IAAI,EAAEA,IAAI,CAACjG,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;UAChD;QACF,OAAO,IAAIiD,OAAO,CAACG,UAAS,KAAM,gBAAe,IAAKH,OAAO,CAACE,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMoC,MAAK,GAAItC,OAAO,CAACuC,SAAS,CAAC;UACjCrH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkG,MAAM;UAC7B,OAAO;YACLxI,IAAI,EAAE,WAAW;YACjBwI,MAAM,EAAE,CAACA,MAAM,CAACE,YAAY,CAAC,CAAC,CAAC1F,GAAG,EAAEwF,MAAM,CAACE,YAAY,CAAC,CAAC,CAACzF,GAAG,EACrDuF,MAAM,CAACG,YAAY,CAAC,CAAC,CAAC3F,GAAG,EAAEwF,MAAM,CAACG,YAAY,CAAC,CAAC,CAAC1F,GAAG;UAC9D;QACF;MACF,EAAE,OAAO9B,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE+E,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAMvD,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFzB,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,0BAA0B;QAEtC,MAAMyE,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChD5F,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE9D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEsG,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEsF,MAAM;QAEhC,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClBpD,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEsF,MAAM,CAACG,IAAI;;UAEtC;UACAa,aAAa,CAAC,IAAI;;UAElB;UACAhB,MAAM,CAACG,IAAI,CAACrD,OAAO,CAACoD,IAAG,IAAK;YAC1BE,qBAAqB,CAACF,IAAI;UAC5B,CAAC;UAED1G,OAAO,CAACkB,GAAG,CAAC,QAAQsF,MAAM,CAACG,IAAI,CAACE,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAIN,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM2D,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAACjJ,WAAW,CAACwD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;MAEA,IAAI;QACFC,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEwF,IAAI;QAE/B,MAAMvF,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAI2D,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAMM,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC5DkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC7H,KAAK,CAAC,EAAE8B,OAAM,IAAK;QACzD;QAEAX,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEkE,YAAY;QACpCpF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ;;QAErC;QACA,IAAI2H,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnCoB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,EAAEJ,IAAI,CAAC3H,QAAQ,CAAC6E,MAAM;UAClEkB,OAAM,GAAI,IAAI3D,IAAI,CAACsG,MAAM,CAAC;YACxBX,MAAM,EAAE,IAAI3F,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,CAAC,CAAC,CAAC,EAAEJ,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM,CAAC,CAAC,CAAC,CAAC;YACzElD,MAAM,EAAE8C,IAAI,CAAC3H,QAAQ,CAAC6E,MAAM;YAC5B,GAAGwB;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3CoB,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEwF,IAAI,CAAC3H,QAAQ,CAACkI,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAAC3H,QAAQ,CAACkI,IAAI,CAACjG,GAAG,CAACmG,KAAI,IAAK,IAAIhG,IAAI,CAACuG,MAAM,CAACP,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;UAChFrC,OAAM,GAAI,IAAI3D,IAAI,CAACwG,OAAO,CAAC;YACzBV,IAAI,EAAEA,IAAI;YACV,GAAG7B;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAAC3H,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7CoB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAAC3H,QAAQ,CAACqI,MAAM;UAC5C,MAAMA,MAAK,GAAI,IAAIjG,IAAI,CAACyG,MAAM,CAC5B,IAAIzG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,IAAIjG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAAC3H,QAAQ,CAACqI,MAAM,CAAC,CAAC,CAAC,CAClE;UACAtC,OAAM,GAAI,IAAI3D,IAAI,CAAC0G,SAAS,CAAC;YAC3BT,MAAM,EAAEA,MAAM;YACd,GAAGhC;UACL,CAAC;QACH;QAEA,IAAIN,OAAO,EAAE;UACX9E,OAAO,CAACkB,GAAG,CAAC,kBAAkB;;UAE9B;UACAzD,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;;UAE7B;UACAhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE,IAAImG,OAAM;;UAE9B;UACA,MAAMgD,aAAY,GAAIjK,WAAW,CAACoD,KAAK,CAAC8G,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACrJ,EAAC,KAAM+H,IAAI,CAAC/H,EAAE;UACvE,IAAImJ,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBjK,WAAW,CAACoD,KAAK,CAACkC,IAAI,CAACuD,IAAI;YAC3B1G,OAAO,CAACkB,GAAG,CAAC,WAAW;UACzB,OAAO;YACLlB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACA4D,OAAO,CAACxD,EAAE,CAAC,OAAO,EAAE,MAAM;YACxBtB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEwF,IAAI,CAAC/H,EAAE;YAC9BsJ,UAAU,CAACvB,IAAI,CAAC/H,EAAE;UACpB,CAAC;;UAED;UACA2G,UAAU,CAAC,MAAM;YACf7H,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENvF,OAAO,CAACkB,GAAG,CAAC,OAAOwF,IAAI,CAAC/H,EAAE,WAAW;QAEvC,OAAO;UACLqB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE2G,IAAI,CAAC/H,EAAE,EAAEoB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMkI,UAAS,GAAKtJ,EAAE,IAAK;MACzBJ,cAAc,CAAC0C,KAAI,GAAItC,EAAC;MACxB,MAAMmG,OAAM,GAAIhH,YAAY,CAACa,EAAE;MAC/B,IAAImG,OAAO,EAAE;QACX;QACAA,OAAO,CAACO,UAAU,CAAC;UACjBf,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACA1G,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAAC0E,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACrJ,EAAC,KAAMA,EAAE,EAAE;YACf,MAAMuJ,YAAW,GAAIpK,YAAY,CAACkK,CAAC,CAACrJ,EAAE;YACtC,IAAIuJ,YAAY,EAAE;cAChBA,YAAY,CAAC7C,UAAU,CAAC;gBACtBf,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAM4D,UAAS,GAAI,MAAOxJ,EAAE,IAAK;MAC/B,IAAI;QACFqB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE1B,MAAMgH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBjH,EAAE,EAAE,EAAE;UACtDkH,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACpD,OAAO,EAAE;UAClB;UACA,MAAM0B,OAAM,GAAIhH,YAAY,CAACa,EAAE;UAC/B,IAAImG,OAAO,EAAE;YACXrH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;YAChC,OAAOhH,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACoD,KAAI,GAAIpD,WAAW,CAACoD,KAAK,CAACmH,MAAM,CAAC1B,IAAG,IAAKA,IAAI,CAAC/H,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAAC0C,KAAI,KAAMtC,EAAE,EAAE;YAC/BJ,cAAc,CAAC0C,KAAI,GAAI,IAAG;UAC5B;UAEArE,SAAS,CAACwG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAI4H,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMoF,QAAO,GAAK3B,IAAI,IAAK;MACzBhI,QAAQ,CAACuC,KAAI,GAAI;QAAE,GAAGyF;MAAK;MAC3BjI,iBAAiB,CAACwC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMqH,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFtI,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAExC,QAAQ,CAACuC,KAAK,CAACtC,EAAE;QAEzC,MAAMgH,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBlH,QAAQ,CAACuC,KAAK,CAACtC,EAAE,EAAE,EAAE;UACrEkH,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBrH,IAAI,EAAEF,QAAQ,CAACuC,KAAK,CAACrC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACuC,KAAK,CAACpC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACuC,KAAK,CAACnC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC6G,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACpD,OAAO,EAAE;UAClB;UACA,MAAMsD,IAAG,GAAI7I,WAAW,CAACoD,KAAK,CAACsH,IAAI,CAACP,CAAA,IAAKA,CAAC,CAACrJ,EAAC,KAAMD,QAAQ,CAACuC,KAAK,CAACtC,EAAE;UACnE,IAAI+H,IAAI,EAAE;YACRA,IAAI,CAAC9H,IAAG,GAAIF,QAAQ,CAACuC,KAAK,CAACrC,IAAG;YAC9B8H,IAAI,CAAC7H,KAAI,GAAIH,QAAQ,CAACuC,KAAK,CAACpC,KAAI;YAChC6H,IAAI,CAAC5H,WAAU,GAAIJ,QAAQ,CAACuC,KAAK,CAACnC,WAAU;;YAE5C;YACA,MAAMgG,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;YACpC,IAAImG,OAAO,EAAE;cACXA,OAAO,CAACO,UAAU,CAAC;gBACjBhB,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,CAACwB,KAAK;gBAC9CoE,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC9H,IAAI,CAAC,CAACwB,KAAK;gBAC5CqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC7H,KAAK,CAAC,CAAC8B;cAC7C,CAAC;YACH;UACF;UAEA/D,SAAS,CAACwG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsF,MAAM,CAACG,IAAI;QAErC,OAAO;UACL,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;MAEAxE,iBAAiB,CAACwC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMuG,aAAY,GAAI,MAAAA,CAAOgB,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK3K,WAAW,CAACoD,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAM4B,OAAM,GAAI5K,WAAW,CAACoD,KAAK,CAACD,GAAG,CAAC0F,IAAG,IAAKA,IAAI,CAAC/H,EAAE;UAErDqB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuH,OAAO;UAEjC,MAAM9C,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;YAChDC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACP,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cAAEyC,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAAC9C,QAAQ,CAACS,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAACpD,OAAO,EAAE;YACnB,MAAM,IAAImD,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,WAAW;UAC/C;UAEAjD,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEsF,MAAM,CAACG,IAAI;QACvC;;QAEA;QACAgC,MAAM,CAACC,MAAM,CAAC9K,YAAY,CAAC,CAACwF,OAAO,CAACwB,OAAM,IAAK;UAC7C,IAAIrH,WAAW,CAACwD,KAAK,EAAE;YACrBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF,CAAC;;QAED;QACAjH,WAAW,CAACoD,KAAI,GAAI,EAAC;QACrB0H,MAAM,CAACE,IAAI,CAAC/K,YAAY,CAAC,CAACwF,OAAO,CAACwF,GAAE,IAAK;UACvC,OAAOhL,YAAY,CAACgL,GAAG;QACzB,CAAC;QACDvK,cAAc,CAAC0C,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACuH,WAAW,EAAE;UAChB5L,SAAS,CAACwG,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOrD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAACyI,WAAW,EAAE;UAChB5L,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAM8F,qBAAoB,GAAKC,MAAM,IAAK;MACxCxK,aAAa,CAACyC,KAAI,GAAI+H,MAAK;;MAE3B;MACAnL,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;QACpC,IAAImG,OAAO,EAAE;UACX,IAAIkE,MAAM,CAACC,QAAQ,CAACvC,IAAI,CAAC9H,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;UAC/B,OAAO;YACLrH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAMoE,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIrL,WAAW,CAACoD,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAE;MACxC/J,WAAW,CAACoD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAIhH,YAAY,CAAC4I,IAAI,CAAC/H,EAAE;QACpC,IAAImG,OAAM,IAAKA,OAAO,CAACuC,SAAS,EAAE;UAChCD,MAAM,CAAC+B,MAAM,CAACrE,OAAO,CAACuC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAAC3H,QAAQ,EAAE+H,MAAM,EAAE;UAChCM,MAAM,CAAC+B,MAAM,CAACzC,IAAI,CAAC3H,QAAQ,CAAC+H,MAAM;QACpC;MACF,CAAC;MAEDrJ,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAMpF,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACnE,OAAO,CAACuD,KAAI,IAAK,CAACxD,WAAW,CAACwD,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMkI,UAAS,GAAIrK,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI;;MAE7C;MACA7H,UAAU,CAACiC,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;;MAElC;MACA,MAAMS,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;wGAGuC2J,UAAU;;WAEvG,CAAC;UACFvG,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMsG,UAAU;MACzB,CAAC;MAED5L,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BrD,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;;MAE7B;MACA,IAAItD,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB;MAEA1M,SAAS,CAACwG,OAAO,CAAC,SAASiG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC7L,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAIjC,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;MACzC;MAEA,MAAMgG,IAAG,GAAIjI,UAAU,CAACiC,KAAK,CAACD,GAAG,CAACuI,CAAA,IAAK,CAACA,CAAC,CAAC3H,GAAG,EAAE2H,CAAC,CAAC1H,GAAG,CAAC;MAErD3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEA,IAAI;QACV5C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE;MACf,CAAC;MAEDhM,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAChE,QAAQ,CAAC+B,KAAK;IACtC;;IAEA;IACA,MAAMyI,WAAU,GAAKC,KAAK,IAAK;MAC7B3K,UAAU,CAACiC,KAAK,CAAC2I,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB7K,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAE2C,CAAC,KAAK;QACrCC,kBAAkB,CAAC5C,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,EAAEiI,CAAA,GAAI,CAAC;MAChD,CAAC;MAED,IAAI9K,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB,OAAO,IAAIpK,QAAQ,CAAC+B,KAAK,EAAE;QACzBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;IACtB;IAEA,MAAM8I,kBAAiB,GAAIA,CAACnI,GAAG,EAAEC,GAAG,EAAE8H,KAAK,KAAK;MAC9C,MAAMxI,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,MAAMmB,MAAK,GAAI,IAAInB,IAAI,CAACoB,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACZ,GAAG,EAAEC,GAAG,CAAC;QACpBY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;wGAGuCiK,KAAK;;WAElG,CAAC;UACF7G,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAM4G,KAAK;MACpB,CAAC;MAEDlM,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BrD,WAAW,CAACgC,KAAK,CAACkC,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAMuH,gBAAe,GAAIA,CAAA,KAAM;MAC7B5K,WAAW,CAACgC,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QAClC7E,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACDrD,WAAW,CAACgC,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM+I,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAIhL,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/BjK,SAAS,CAACqN,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFjK,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE/B,iBAAiB,CAAC8B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK,CAAC4F,MAAM;QAC7C7G,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAErD,WAAW,CAACoD,KAAK;QAErC,MAAMiJ,UAAS,GAAIlL,UAAU,CAACiC,KAAK,CAAC,CAAC;QACrC,MAAMtD,YAAW,GAAIqB,UAAU,CAACiC,KAAK,CAACkJ,KAAK,CAAC,CAAC,GAAE;;QAE/C;QACA,MAAMC,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVtI,GAAG,EAAEsI,UAAU,CAACtI,GAAG;YACnBC,GAAG,EAAEqI,UAAU,CAACrI;UAClB,CAAC;UACDlE,YAAY,EAAEA,YAAY,CAACqD,GAAG,CAACmG,KAAI,KAAM;YACvCvF,GAAG,EAAEuF,KAAK,CAACvF,GAAG;YACdC,GAAG,EAAEsF,KAAK,CAACtF;UACb,CAAC,CAAC,CAAC;UACHwI,SAAS,EAAElL,iBAAiB,CAAC8B,KAAI,IAAK,OAAO;UAAE;UAC/C7B,cAAc,EAAEA,cAAc,CAAC6B,KAAK;UACpC5B,WAAW,EAAEA,WAAW,CAAC4B,KAAK;UAC9BpD,WAAW,EAAEA,WAAW,CAACoD,KAAI,IAAKpD,WAAW,CAACoD,KAAK,CAAC4F,MAAK,GAAI,IAAIhJ,WAAW,CAACoD,KAAK,CAACD,GAAG,CAAC0F,IAAG,KAAM;YAC9F/H,EAAE,EAAE+H,IAAI,CAAC/H,EAAE;YACXC,IAAI,EAAE8H,IAAI,CAAC9H,IAAI;YACfC,KAAK,EAAE6H,IAAI,CAAC7H,KAAK;YACjByL,aAAa,EAAE5D,IAAI,CAAC3H,QAAQ,EAAEH,IAAG,IAAK8H,IAAI,CAAC4D,aAAa;YACxDC,aAAa,EAAE7D,IAAI,CAAC3H,QAAO,IAAK2H,IAAI,CAAC6D,aAAa;YAClDzL,WAAW,EAAE4H,IAAI,CAAC5H;UACpB,CAAC,CAAC,IAAI;QACR;QAEAkB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAEkJ,YAAY;;QAExC;QACA,MAAMzE,QAAO,GAAI,MAAMC,KAAK,CAAC,oBAAoB,EAAE;UACjDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACmE,YAAY;QACnC,CAAC;QAED,IAAI,CAACzE,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCtG,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvBmG,MAAM,EAAEP,QAAQ,CAACO,MAAM;YACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;YAC/BpG,KAAK,EAAEsG;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWZ,QAAQ,CAACO,MAAM,MAAMG,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCzG,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEsF,MAAM;QAE7B,IAAIA,MAAM,CAACpD,OAAO,EAAE;UAClB,MAAM;YAAEuD,IAAI;YAAE6D;UAAQ,IAAIhE,MAAK;;UAE/B;UACAlH,QAAQ,CAAC2B,KAAI,GAAI;YACfwJ,QAAQ,EAAEC,IAAI,CAACC,KAAK,CAAChE,IAAI,CAAC8D,QAAO,IAAKD,OAAO,EAAEI,aAAY,IAAK,CAAC,CAAC;YAClEC,QAAQ,EAAElE,IAAI,CAACmE,cAAa,IAAKN,OAAO,EAAEO,aAAY,IAAK,CAAC;YAC5DC,UAAU,EAAErE,IAAI,CAACsE,WAAW,EAAEpE,MAAK,IAAK2D,OAAO,EAAEU,aAAY,IAAK,CAAC;YACnEb,SAAS,EAAE1D,IAAI,CAAC0D,SAAQ,IAAK7D,MAAM,CAAC6D,SAAS;YAC7Cc,kBAAkB,EAAExE,IAAI,CAACyE,oBAAmB,IAAKZ,OAAO,EAAEW,kBAAiB,IAAK,EAAE;YAClFE,WAAW,EAAEb,OAAO,EAAEa,WAAU,IAAK;UACvC;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACA,MAAMC,QAAO,GAAI5E,IAAI,CAACsE,WAAU,IAAKtE,IAAI,CAACM,IAAG,IAAK,EAAC;UACnDuE,4BAA4B,CAACD,QAAQ,EAAE5N,YAAY,EAAE6M,OAAO,EAAEa,WAAW;UAEzEzO,SAAS,CAACwG,OAAO,CAAC,GAAGqI,gBAAgB,CAACjF,MAAM,CAAC6D,SAAS,CAAC,YAAY;UAEnE,MAAMqB,WAAU,GAAI/E,IAAI,CAACyE,oBAAoB,EAAEvE,MAAK,IAAK2D,OAAO,EAAEW,kBAAkB,EAAEtE,MAAK,IAAK;UAChG,IAAI6E,WAAU,GAAI,CAAC,EAAE;YACnB9O,SAAS,CAACuH,IAAI,CAAC,QAAQuH,WAAW,OAAO;UAC3C;;UAEA;UACA,IAAIlB,OAAO,EAAEa,WAAU,IAAKb,OAAO,CAACa,WAAW,CAACxE,MAAK,GAAI,CAAC,EAAE;YAC1D,MAAM8E,SAAQ,GAAInB,OAAO,CAACa,WAAW,CAACrK,GAAG,CAAC,CAAC4K,MAAM,EAAEjC,KAAK,KACtD,GAAGA,KAAI,GAAI,CAAC,KAAKiC,MAAM,CAACC,MAAM,CAACjK,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAK4I,MAAM,CAACC,MAAM,CAAChK,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,GAAG4I,MAAM,CAACE,YAAW,GAAI,SAAQ,GAAI,EAAE,EACvH,CAAC,CAACC,IAAI,CAAC,IAAI;YAEXzG,UAAU,CAAC,MAAM;cACf1I,SAAS,CAAC;gBACRqG,OAAO,EAAE,aAAa0I,SAAS,EAAE;gBACjC/M,IAAI,EAAE,MAAM;gBACZiM,QAAQ,EAAE,KAAK;gBACfmB,SAAS,EAAE;cACb,CAAC;YACH,CAAC,EAAE,IAAI;UACT;QAEF,OAAO;UACL,MAAM,IAAIzF,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BnD,SAAS,CAACmD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAACkD,OAAO;MAC5C;IACF;;IAEA;IACA,MAAMwI,gBAAe,GAAKpB,SAAS,IAAK;MACtC,MAAM4B,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAAC5B,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMmB,4BAA2B,GAAIA,CAACc,WAAW,EAAEC,eAAe,EAAElB,WAAW,KAAK;MAClF,IAAI,CAAC5N,WAAW,CAACwD,KAAI,IAAK,CAACqL,WAAU,IAAKA,WAAW,CAACzF,MAAK,GAAI,CAAC,EAAE;MAElE,MAAM1F,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE;QACtBsL,UAAU,EAAEF,WAAW,CAACzF,MAAM;QAC9B4F,WAAW,EAAEF,eAAe,CAAC1F,MAAM;QACnCwE,WAAW,EAAEA;MACf,CAAC;;MAED;MACA,MAAMqB,UAAS,GAAIJ,WAAW,CAACtL,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;MAElE3C,QAAQ,CAAC+B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEyF,UAAU;QAChBrI,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE,OAAO;QACpBlF,aAAa,EAAE;MACjB,CAAC;MAED9G,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAChE,QAAQ,CAAC+B,KAAK;MAEpC,MAAM0L,OAAM,GAAI,EAAC;;MAEjB;MACA,MAAMC,WAAU,GAAI,IAAIzL,IAAI,CAACoB,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAAC8J,WAAW,CAAC,CAAC,CAAC,CAAC1K,GAAG,EAAE0K,WAAW,CAAC,CAAC,CAAC,CAACzK,GAAG,CAAC;QAClDY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFoD,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,IAAI;QACX8J,MAAM,EAAE;MACV,CAAC;MAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC0J,WAAW;MACjCD,OAAO,CAACxJ,IAAI,CAACyJ,WAAW;;MAExB;MACA,IAAIvB,WAAU,IAAKA,WAAW,CAACxE,MAAK,GAAI,CAAC,EAAE;QACzCwE,WAAW,CAAC/H,OAAO,CAAC,CAACsI,MAAM,EAAEjC,KAAK,KAAK;UACrC,MAAMmD,UAAS,GAAInD,KAAI,GAAI;UAC3B,MAAMoD,UAAS,GAAInB,MAAM,CAACE,YAAW;UACrC,MAAM7N,WAAU,GAAI2N,MAAM,CAAC3N,WAAU;;UAErC;UACA,IAAImC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAI2M,UAAU,EAAE;YACd,QAAQ9O,WAAW;cACjB,KAAK,KAAK;gBACRmC,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,QAAQ;gBACXA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,MAAM;gBACTA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,UAAU;gBACbA,KAAI,GAAI,SAAQ,EAAE;gBAClB;YACJ;UACF;UAEA,MAAM4M,YAAW,GAAI,IAAI7L,IAAI,CAACoB,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAACC,MAAM,CAACjK,GAAG,EAAEgK,MAAM,CAACC,MAAM,CAAChK,GAAG,CAAC;YAChDY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;yDAEZU,KAAK;2GAC6C0M,UAAU;oBACjGC,UAAS,GAAI,8EAA6E,GAAI,EAAE;;eAErG,CAAC;cACFjK,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAE,MAAM+J,UAAU,GAAGC,UAAS,GAAI,KAAK9O,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3E4O,MAAM,EAAE;UACV,CAAC;UAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC8J,YAAY;UAClCL,OAAO,CAACxJ,IAAI,CAAC6J,YAAY;QAC3B,CAAC;MACH,OAAO;QACL;QACAT,eAAe,CAACjJ,OAAO,CAAC,CAACsI,MAAM,EAAEjC,KAAK,KAAK;UACzC,MAAMsD,YAAW,GAAItD,KAAI,GAAI;UAC7B,MAAMuD,YAAW,GAAIvD,KAAI,KAAM4C,eAAe,CAAC1F,MAAK,GAAI;UAExD,MAAMmG,YAAW,GAAI,IAAI7L,IAAI,CAACoB,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAAChK,GAAG,EAAEgK,MAAM,CAAC/J,GAAG,CAAC;YAClCY,IAAI,EAAE,IAAItB,IAAI,CAACuB,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAIxB,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;yDAEZwN,YAAW,GAAI,SAAQ,GAAI,SAAS;2GACcA,YAAW,GAAI,GAAE,GAAID,YAAY;;eAE7H,CAAC;cACFnK,SAAS,EAAE,IAAI3B,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAEmK,YAAW,GAAI,IAAG,GAAI,MAAMD,YAAY,EAAE;YACjDJ,MAAM,EAAE;UACV,CAAC;UAEDpP,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC8J,YAAY;UAClCL,OAAO,CAACxJ,IAAI,CAAC6J,YAAY;QAC3B,CAAC;MACH;MAEA/N,WAAW,CAACgC,KAAI,GAAI0L,OAAM;;MAE1B;MACArH,UAAU,CAAC,MAAM;QACf,IAAIpG,QAAQ,CAAC+B,KAAK,EAAE;UAClBxD,WAAW,CAACwD,KAAK,CAACsE,UAAU,CAAC,CAACrG,QAAQ,CAAC+B,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;QAC1E;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMqK,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAIpM,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA4I,gBAAgB,CAAC;IACnB;IAEA,MAAMsD,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAIvC,aAAY,GAAI;MACpB,KAAK,IAAId,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAI9K,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAEiD,CAAC,EAAE,EAAE;QACpD,MAAMsD,EAAC,GAAIpO,UAAU,CAACiC,KAAK,CAAC6I,CAAC;QAC7B,MAAMuD,EAAC,GAAIrO,UAAU,CAACiC,KAAK,CAAC6I,CAAA,GAAI,CAAC;QACjCc,aAAY,IAAK0C,WAAW,CAACF,EAAE,CAACvL,GAAG,EAAEuL,EAAE,CAACxL,GAAG,EAAEyL,EAAE,CAACxL,GAAG,EAAEwL,EAAE,CAACzL,GAAG;MAC7D;MACA,OAAOgJ,aAAY;IACrB;IAEA,MAAM0C,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAI7C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIL,IAAG,GAAI/C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI7C,IAAI,CAACmD,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACN,IAAI,GAACF,IAAI,IAAI9C,IAAI,CAACmD,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAIvD,IAAI,CAACwD,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIrD,IAAI,CAACwD,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BrD,IAAI,CAACyD,GAAG,CAACP,EAAE,IAAIlD,IAAI,CAACyD,GAAG,CAACL,EAAE,IAC1BpD,IAAI,CAACwD,GAAG,CAACF,EAAE,GAAC,CAAC,IAAItD,IAAI,CAACwD,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAI1D,IAAI,CAAC2D,KAAK,CAAC3D,IAAI,CAAC4D,IAAI,CAACL,CAAC,CAAC,EAAEvD,IAAI,CAAC4D,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAON,CAAA,GAAIS,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAM1R,YAAY,CAAC2R,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtB9P,IAAI,EAAE;QACR,CAAC;QAEDhC,SAAS,CAACwG,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNxG,SAAS,CAACuH,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAMwK,QAAO,GAAIA,CAAA,KAAM;MACrB9E,gBAAgB,CAAC;MAEjB,IAAI3K,QAAQ,CAAC+B,KAAK,EAAE;QAClBxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAACrE,QAAQ,CAAC+B,KAAK;QACvC/B,QAAQ,CAAC+B,KAAI,GAAI,IAAG;MACtB;MAEAjC,UAAU,CAACiC,KAAI,GAAI,EAAC;MACpB3B,QAAQ,CAAC2B,KAAI,GAAI,IAAG;MAEpBrE,SAAS,CAACwG,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAMwL,uBAAsB,GAAKvE,SAAS,IAAK;MAC7ClL,iBAAiB,CAAC8B,KAAI,GAAIoJ,SAAQ;IACpC;;IAEA;IACA,MAAMwE,oBAAmB,GAAKC,QAAQ,IAAK;MACzC1P,cAAc,CAAC6B,KAAI,GAAI6N,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnC3P,WAAW,CAAC4B,KAAI,GAAI+N,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIjQ,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMqD,UAAS,GAAIlL,UAAU,CAACiC,KAAK,CAAC,CAAC;MACrCxD,WAAW,CAACwD,KAAK,CAACiO,SAAS,CAAC,CAAChF,UAAU,CAACtI,GAAG,EAAEsI,UAAU,CAACrI,GAAG,CAAC;MAC5DpE,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAIpQ,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAMwI,QAAO,GAAIrQ,UAAU,CAACiC,KAAK,CAACjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,GAAI,CAAC;MAC7DpJ,WAAW,CAACwD,KAAK,CAACiO,SAAS,CAAC,CAACG,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;MACxDpE,WAAW,CAACwD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,SAAQ,GAAIA,CAAA,KAAM;MACtBtP,OAAO,CAACkB,GAAG,CAAC,sCAAsC,EAAElC,UAAU,CAACiC,KAAK,CAAC4F,MAAM;MAE3E,IAAI,CAAC7H,UAAU,CAACiC,KAAI,IAAKjC,UAAU,CAACiC,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;QACtD7G,OAAO,CAACC,IAAI,CAAC,SAAS;QACtBrD,SAAS,CAACqN,OAAO,CAAC,UAAU;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,CAACxM,WAAW,CAACwD,KAAK,EAAE;UACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS;UACvBnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;UACxB;QACF;;QAEA;QACA,IAAI,CAACqB,MAAM,CAACD,IAAG,IAAK,CAACC,MAAM,CAACD,IAAI,CAACyG,MAAM,EAAE;UACvC5H,OAAO,CAACD,KAAK,CAAC,oBAAoB;UAClCnD,SAAS,CAACmD,KAAK,CAAC,YAAY;UAC5B;QACF;QAEAC,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAElC,UAAU,CAACiC,KAAK;;QAEtC;QACA,MAAMmG,MAAK,GAAI,IAAIhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAC;;QAEtC;QACA,IAAI2H,gBAAe,GAAI;QACvBvQ,UAAU,CAACiC,KAAK,CAACqC,OAAO,CAAC,CAAC6D,KAAK,EAAEwC,KAAK,KAAK;UACzC,IAAIxC,KAAI,IAAK,OAAOA,KAAK,CAACvF,GAAE,KAAM,QAAO,IAAK,OAAOuF,KAAK,CAACtF,GAAE,KAAM,QAAQ,EAAE;YAC3EuF,MAAM,CAAC+B,MAAM,CAAC,CAAChC,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;YACpC0N,gBAAgB,EAAC;YACjBvP,OAAO,CAACkB,GAAG,CAAC,QAAQyI,KAAI,GAAI,CAAC,MAAMxC,KAAK,CAACvF,GAAG,KAAKuF,KAAK,CAACtF,GAAG,GAAG;UAC/D,OAAO;YACL7B,OAAO,CAACC,IAAI,CAAC,SAAS0J,KAAI,GAAI,CAAC,GAAG,EAAExC,KAAK;UAC3C;QACF,CAAC;QAED,IAAIoI,gBAAe,KAAM,CAAC,EAAE;UAC1BvP,OAAO,CAACD,KAAK,CAAC,UAAU;UACxBnD,SAAS,CAACmD,KAAK,CAAC,SAAS;UACzB;QACF;;QAEA;QACAtC,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;;QAE7DpH,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEqO,gBAAgB,EAAE,MAAM;QACnD3S,SAAS,CAACwG,OAAO,CAAC,QAAQmM,gBAAgB,SAAS;MAErD,EAAE,OAAOxP,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK;QACrCnD,SAAS,CAACmD,KAAK,CAAC,YAAW,GAAIA,KAAK,CAACkD,OAAO;MAC9C;IACF;;IAEA;;IAEA;IACA,MAAMuM,eAAc,GAAKvI,IAAI,IAAK;MAChC,IAAI,CAACxJ,WAAW,CAACwD,KAAI,IAAK,CAACG,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,MAAMjC,QAAO,GAAI,IAAIkC,MAAM,CAACD,IAAI,CAACqI,QAAQ,CAAC;UACxCvC,IAAI,EAAEA,IAAI,CAACgE,WAAW,CAACjK,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC,CAAC;UAC3DwC,WAAW,EAAE4C,IAAI,CAAC7G,KAAI,IAAK,SAAS;UACpCkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,GAAG;UAClBkF,WAAW,EAAE,OAAO;UACpBgG,OAAO,EAAE,IAAI;UACbC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QAC3B,CAAC;;QAED;QACA,MAAMxF,UAAS,GAAIjD,IAAI,CAACgE,WAAW,CAAC,CAAC;QACrC,MAAMoE,QAAO,GAAIpI,IAAI,CAACgE,WAAW,CAAChE,IAAI,CAACgE,WAAW,CAACpE,MAAK,GAAI,CAAC;QAE7D,MAAM+F,WAAU,GAAI,IAAIxL,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;UACzCC,QAAQ,EAAE,CAAC0H,UAAU,CAACtI,GAAG,EAAEsI,UAAU,CAACrI,GAAG,CAAC;UAC1CY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;uDAEZuH,IAAI,CAAC7G,KAAI,IAAK,SAAS;;;aAGjE,CAAC;YACF0C,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAGkE,IAAI,CAAC9J,IAAI,OAAO;UAC1B0P,MAAM,EAAE;QACV,CAAC;QAED,MAAM8C,SAAQ,GAAI,IAAIvO,MAAM,CAACD,IAAI,CAACoB,MAAM,CAAC;UACvCC,QAAQ,EAAE,CAAC6M,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;UACtCY,IAAI,EAAE,IAAIrB,MAAM,CAACD,IAAI,CAACuB,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAIvB,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,4BAA2B,GAAInD,gBAAgB,CAAC;;uDAEZuH,IAAI,CAAC7G,KAAI,IAAK,SAAS;;;aAGjE,CAAC;YACF0C,SAAS,EAAE,IAAI1B,MAAM,CAACD,IAAI,CAACyB,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAGkE,IAAI,CAAC9J,IAAI,OAAO;UAC1B0P,MAAM,EAAE;QACV,CAAC;;QAED;QACArN,mBAAmB,CAACyH,IAAI,CAACtI,EAAE,IAAI;UAC7BO,QAAQ;UACR0N,WAAW;UACX+C;QACF;;QAEA;QACAlS,WAAW,CAACwD,KAAK,CAACiC,GAAG,CAAC,CAAChE,QAAQ,EAAE0N,WAAW,EAAE+C,SAAS,CAAC;QAExD/S,SAAS,CAACwG,OAAO,CAAC,UAAU6D,IAAI,CAAC9J,IAAI,EAAE;MACzC,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAM6P,eAAc,GAAK3I,IAAI,IAAK;MAChC,IAAI,CAACxJ,WAAW,CAACwD,KAAK,EAAE;MAExB,MAAMiE,QAAO,GAAI1F,mBAAmB,CAACyH,IAAI,CAACtI,EAAE;MAC5C,IAAIuG,QAAQ,EAAE;QACZzH,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAAC,CAAC2B,QAAQ,CAAChG,QAAQ,EAAEgG,QAAQ,CAAC0H,WAAW,EAAE1H,QAAQ,CAACyK,SAAS,CAAC;QACtF,OAAOnQ,mBAAmB,CAACyH,IAAI,CAACtI,EAAE;QAClC/B,SAAS,CAACuH,IAAI,CAAC,UAAU8C,IAAI,CAAC9J,IAAI,EAAE;MACtC;IACF;;IAEA;IACA,MAAM0S,mBAAkB,GAAKC,KAAK,IAAK;MACrCA,KAAK,CAACxM,OAAO,CAAC2D,IAAG,IAAK;QACpB,IAAI,CAAC1H,oBAAoB,CAAC0B,KAAK,CAACgI,QAAQ,CAAChC,IAAI,CAACtI,EAAE,CAAC,EAAE;UACjD6Q,eAAe,CAACvI,IAAI;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAM8I,mBAAkB,GAAIA,CAAA,KAAM;MAChCpH,MAAM,CAACE,IAAI,CAACrJ,mBAAmB,CAAC,CAAC8D,OAAO,CAAC0M,MAAK,IAAK;QACjD,MAAM9K,QAAO,GAAI1F,mBAAmB,CAACwQ,MAAM;QAC3C,IAAI9K,QAAO,IAAKzH,WAAW,CAACwD,KAAK,EAAE;UACjCxD,WAAW,CAACwD,KAAK,CAACsC,MAAM,CAAC,CAAC2B,QAAQ,CAAChG,QAAQ,EAAEgG,QAAQ,CAAC0H,WAAW,EAAE1H,QAAQ,CAACyK,SAAS,CAAC;QACxF;MACF,CAAC;MACD;MACAhH,MAAM,CAACE,IAAI,CAACrJ,mBAAmB,CAAC,CAAC8D,OAAO,CAACwF,GAAE,IAAK,OAAOtJ,mBAAmB,CAACsJ,GAAG,CAAC;MAC/ElM,SAAS,CAACuH,IAAI,CAAC,WAAW;IAC5B;;IAEA;IACA,MAAM8L,mBAAkB,GAAKhJ,IAAI,IAAK;MACpC,IAAI,CAACxJ,WAAW,CAACwD,KAAI,IAAK,CAACgG,IAAI,CAACgE,WAAU,IAAKhE,IAAI,CAACgE,WAAW,CAACpE,MAAK,KAAM,CAAC,EAAE;MAE9E,IAAI;QACF,MAAMO,MAAK,GAAI,IAAIhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAC;QACtCX,IAAI,CAACgE,WAAW,CAAC3H,OAAO,CAAC6D,KAAI,IAAK;UAChCC,MAAM,CAAC+B,MAAM,CAAC,CAAChC,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;QACtC,CAAC;QACDpE,WAAW,CAACwD,KAAK,CAACmI,SAAS,CAAChC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3DxK,SAAS,CAACwG,OAAO,CAAC,YAAY6D,IAAI,CAAC9J,IAAI,EAAE;MAC3C,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMmQ,oBAAmB,GAAKjJ,IAAI,IAAK;MACrC;MACA0H,QAAQ,CAAC;;MAET;MACA3P,UAAU,CAACiC,KAAI,GAAI,CAAC,GAAGgG,IAAI,CAACgE,WAAW;MACvC9L,iBAAiB,CAAC8B,KAAI,GAAIgG,IAAI,CAACoD,SAAQ,IAAK,OAAM;MAClDjL,cAAc,CAAC6B,KAAI,GAAIgG,IAAI,CAACkJ,eAAc,IAAK,GAAE;MACjD9Q,WAAW,CAAC4B,KAAI,GAAIgG,IAAI,CAACmJ,YAAW,IAAK,EAAC;;MAE1C;MACA5S,WAAW,CAACyD,KAAI,GAAI,cAAa;;MAEjC;MACAoP,iBAAiB,CAAC;MAElBzT,SAAS,CAACwG,OAAO,CAAC,UAAU6D,IAAI,CAAC9J,IAAI,SAAS;IAChD;;IAEA;IACA,MAAMmT,0BAAyB,GAAKC,OAAO,IAAK;MAC9ChR,oBAAoB,CAAC0B,KAAI,GAAIsP,OAAM;IACrC;IAEAhU,SAAS,CAAC,MAAM;MACd;MACAyD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACL3D,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZE,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MACRC,oBAAoB;MAEpB2C,cAAc;MACdnB,WAAW;MACXW,UAAU;MACVU,aAAa;MACbiB,YAAY;MACZhB,aAAa;MACbmB,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBE,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACXgE,UAAU;MACVE,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdd,aAAa;MACbuB,qBAAqB;MACrBG,UAAU;MACVQ,WAAW;MACXM,QAAQ;MACRuE,WAAW;MACXI,QAAQ;MACRC,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXE,SAAS;MAET;MACAkB,iBAAiB,EAAG5R,IAAI,IAAKsB,gBAAgB,CAACtB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnEsT,kBAAkB,EAAG5R,KAAK,IAAK4B,iBAAiB,CAAC5B,KAAK,CAAC,EAAE1B,IAAG,IAAK;IACnE;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5bc319cfee1b5bed85a8203836a565dca05af8c4ecc25e586ffcffbbd4657969.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5bc319cfee1b5bed85a8203836a565dca05af8c4ecc25e586ffcffbbd4657969.json
new file mode 100644
index 00000000..9005d3a8
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5bc319cfee1b5bed85a8203836a565dca05af8c4ecc25e586ffcffbbd4657969.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5c525a5c547c58724a63a14f6b1ed2b474d71c68b6fb25d44d420153a0198b4d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5c525a5c547c58724a63a14f6b1ed2b474d71c68b6fb25d44d420153a0198b4d.json
new file mode 100644
index 00000000..72ddba5a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5c525a5c547c58724a63a14f6b1ed2b474d71c68b6fb25d44d420153a0198b4d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n if (activePanel.value === 'threatZone') {\n // 威胁区设置模式:处理威胁区选择\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n } else {\n // 其他模式:手动触发地图点击事件\n console.log('非威胁区模式,手动触发地图点击事件');\n try {\n // 获取点击位置\n const lnglat = e.lnglat;\n console.log('手动触发地图点击:', lnglat);\n\n // 手动调用地图点击处理函数\n onMapClick({\n lnglat\n });\n } catch (error) {\n console.error('手动触发地图点击失败:', error);\n }\n }\n };\n\n // 威胁区域始终绑定点击事件\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5de49a199a89178e4b7e87d3a352bafbc766460243591bb97eab35ffdcdaa579.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5de49a199a89178e4b7e87d3a352bafbc766460243591bb97eab35ffdcdaa579.json
new file mode 100644
index 00000000..5e8e10fc
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5de49a199a89178e4b7e87d3a352bafbc766460243591bb97eab35ffdcdaa579.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5f383ff1c7c0aa90f7c747a1da44ce4df3f38a72e789650d8498d333914df8f5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5f383ff1c7c0aa90f7c747a1da44ce4df3f38a72e789650d8498d333914df8f5.json
new file mode 100644
index 00000000..d0e4c1d9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5f383ff1c7c0aa90f7c747a1da44ce4df3f38a72e789650d8498d333914df8f5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: _ctx.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: _ctx.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => _ctx.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: _ctx.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString(_ctx.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => _ctx.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.confirmLoadPath,\n disabled: !_ctx.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => _ctx.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: _ctx.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': _ctx.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => _ctx.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: _ctx.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => _ctx.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString(_ctx.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), _ctx.filteredHistoryPaths.length === 0 && !_ctx.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, _ctx.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","$setup","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/60cb67da8cfd03f3073a0e024d7e86f4233de241f79382a2fd454212cb9ba705.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/60cb67da8cfd03f3073a0e024d7e86f4233de241f79382a2fd454212cb9ba705.json
new file mode 100644
index 00000000..91728941
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/60cb67da8cfd03f3073a0e024d7e86f4233de241f79382a2fd454212cb9ba705.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/61894336ed82c137ecd06ea914e46cbced39cf12e8c74395ed5542753d9c34c4.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/61894336ed82c137ecd06ea914e46cbced39cf12e8c74395ed5542753d9c34c4.json
new file mode 100644
index 00000000..a5b6b5a7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/61894336ed82c137ecd06ea914e46cbced39cf12e8c74395ed5542753d9c34c4.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/62384d9fc8791dac53f3ce701edef71410b0ea7cb8f6e9bd003c505c05feb5b5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/62384d9fc8791dac53f3ce701edef71410b0ea7cb8f6e9bd003c505c05feb5b5.json
new file mode 100644
index 00000000..aa0d54b7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/62384d9fc8791dac53f3ce701edef71410b0ea7cb8f6e9bd003c505c05feb5b5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/63f2bee747f809f9dd5ec21ee8299853510c2816d5ecedd8d3d418df1d8f3cfd.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/63f2bee747f809f9dd5ec21ee8299853510c2816d5ecedd8d3d418df1d8f3cfd.json
new file mode 100644
index 00000000..2c2e2ee2
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/63f2bee747f809f9dd5ec21ee8299853510c2816d5ecedd8d3d418df1d8f3cfd.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_path_history_panel","_ctx","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAkB;;EAEtBA,KAAK,EAAC;AAAY;;EAEhBA,KAAK,EAAC;AAAgB;;EAIhBA,KAAK,EAAC;AAAwB;;EAY9BA,KAAK,EAAC;AAAwB;;EA8B9BA,KAAK,EAAC;AAAwB;;EAyB9BA,KAAK,EAAC;AAAwB;;EAkBtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;;uBA/G/BC,mBAAA,CA8JM,OA9JNC,UA8JM,GA7JJC,mBAAA,YAAe,EACfC,mBAAA,CAwFM,OAxFNC,UAwFM,GAvFJF,mBAAA,eAAkB,EAClBC,mBAAA,CAqFM,OArFNE,UAqFM,GApFJC,YAAA,CAmFUC,kBAAA;gBAnFQC,MAAA,CAAAC,WAAW;+DAAXD,MAAA,CAAAC,WAAW,GAAAC,MAAA;IAAGC,UAAS,EAAEH,MAAA,CAAAI,cAAc;IAAE,cAAY,EAAC;;sBACtE,MAAe,CAAfV,mBAAA,YAAe,EACfI,YAAA,CAScO,sBAAA;MATDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAOM,CAPNZ,mBAAA,CAOM,OAPNa,UAOM,GANJV,YAAA,CAKEW,0BAAA;QAJCC,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BC,cAAa,EAAEZ,MAAA,CAAAa,YAAY;QAC3B,UAAQ,EAAEb,MAAA,CAAAc,OAAO;QACjB,eAAa,EAAEd,MAAA,CAAAe;;;QAKtBrB,mBAAA,aAAgB,EAChBI,YAAA,CA2BcO,sBAAA;MA3BDC,KAAK,EAAC,OAAO;MAACC,IAAI,EAAC;;wBAC9B,MAyBM,CAzBNZ,mBAAA,CAyBM,OAzBNqB,UAyBM,GAxBJlB,YAAA,CAuBEmB,4BAAA;QAtBC,cAAY,EAAEjB,MAAA,CAAAkB,WAAW;QACzB,kBAAgB,EAAElB,MAAA,CAAAmB,cAAc;QAChC,qBAAmB,EAAEnB,MAAA,CAAAoB,iBAAiB;QACtC,WAAS,EAAEpB,MAAA,CAAAqB,QAAQ;QACnB,cAAY,EAAErB,MAAA,CAAAsB,WAAW;QACzB,eAAa,EAAEtB,MAAA,CAAAuB,YAAY;QAC3B,oBAAkB,EAAEvB,MAAA,CAAAwB,iBAAiB;QACrC,mBAAiB,EAAExB,MAAA,CAAAyB,eAAe;QAClC,gBAAc,EAAEzB,MAAA,CAAA0B,aAAa;QAC7BC,oBAAqB,EAAE3B,MAAA,CAAA4B,sBAAsB;QAC7CC,qBAAsB,EAAE7B,MAAA,CAAA8B,uBAAuB;QAC/CC,aAAa,EAAE/B,MAAA,CAAAgC,WAAW;QAC1BC,YAAW,EAAEjC,MAAA,CAAAkC,UAAU;QACvBC,YAAW,EAAEnC,MAAA,CAAAoC,UAAU;QACvBC,UAAS,EAAErC,MAAA,CAAAsC,QAAQ;QACnBC,eAAe,EAAEvC,MAAA,CAAAwC,aAAa;QAC9BC,uBAAuB,EAAEzC,MAAA,CAAA0C,qBAAqB;QAC9CC,oBAAoB,EAAE3C,MAAA,CAAA4C,kBAAkB;QACxCC,yBAAyB,EAAE7C,MAAA,CAAA8C,uBAAuB;QAClDC,uBAAwB,EAAE/C,MAAA,CAAAgD,qBAAqB;QAC/CC,gBAAgB,EAAEjD,MAAA,CAAAkD,cAAc;QAChCC,YAAY,EAAEnD,MAAA,CAAAoD;;;QAKrB1D,mBAAA,YAAe,EACfI,YAAA,CAsBcO,sBAAA;MAtBDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAoBM,CApBNZ,mBAAA,CAoBM,OApBN0D,UAoBM,GAnBJvD,YAAA,CAkBEwD,8BAAA;QAjBC,aAAW,EAAEtD,MAAA,CAAAuD,UAAU;QACvB,UAAQ,EAAEvD,MAAA,CAAAc,OAAO;QACjB,oBAAkB,EAAEd,MAAA,CAAAwD,iBAAiB;QACrC,iBAAe,EAAExD,MAAA,CAAAyD,cAAc;QAC/B,cAAY,EAAEzD,MAAA,CAAA0D,WAAW;QACzB,WAAS,EAAE1D,MAAA,CAAA2D,QAAQ;QACnBjD,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BiD,UAAS,EAAE5D,MAAA,CAAA6D,QAAQ;QACnBC,UAAS,EAAE9D,MAAA,CAAA+D,QAAQ;QACnBC,aAAY,EAAEhE,MAAA,CAAAiE,WAAW;QACzBC,aAAY,EAAElE,MAAA,CAAAmE,WAAW;QACzBC,eAAe,EAAEpE,MAAA,CAAAqE,aAAa;QAC9BC,aAAa,EAAEtE,MAAA,CAAAuE,WAAW;QAC1BC,WAAW,EAAExE,MAAA,CAAAyE,SAAS;QACtBC,yBAAyB,EAAE1E,MAAA,CAAA2E,uBAAuB;QAClDC,sBAAsB,EAAE5E,MAAA,CAAA6E,oBAAoB;QAC5CC,mBAAmB,EAAE9E,MAAA,CAAA+E;;;QAK5BrF,mBAAA,YAAe,EACfI,YAAA,CAacO,sBAAA;MAbDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAWM,CAXNZ,mBAAA,CAWM,OAXNqF,UAWM,GAVJlF,YAAA,CASEmF,6BAAA;QARC,gBAAc,EAAEC,IAAA,CAAAC,oBAAoB;QACpCC,UAAS,EAAEF,IAAA,CAAAG,eAAe;QAC1BC,UAAS,EAAEJ,IAAA,CAAAK,eAAe;QAC1BC,cAAc,EAAEN,IAAA,CAAAO,mBAAmB;QACnCC,cAAc,EAAER,IAAA,CAAAS,mBAAmB;QACnCC,cAAc,EAAEV,IAAA,CAAAW,mBAAmB;QACnCC,eAAc,EAAEZ,IAAA,CAAAa,oBAAoB;QACpCC,qBAAqB,EAAEd,IAAA,CAAAe;;;;;uDAQpCvG,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNuG,UA0BM,GAzBJpG,YAAA,CAKEqG,oBAAA;IAJCC,IAAI,EAAEpG,MAAA,CAAAC,WAAW;IACjBoG,WAAU,EAAErG,MAAA,CAAAqG,WAAW;IACvBC,UAAS,EAAEtG,MAAA,CAAAsG,UAAU;IACtBC,GAAG,EAAC;kEAGN7G,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANNgH,UAMM,GALJ1G,YAAA,CAIE2G,mBAAA;IAHCC,KAAK,EAAE1G,MAAA,CAAA2G,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJlH,mBAAA,YAAe,EACJM,MAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNqH,WAOM,GANJ/G,YAAA,CAKE2G,mBAAA;IAJCC,KAAK,EAAE1G,MAAA,CAAA8G,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBrH,mBAAA,cAAiB,EACjBI,YAAA,CAmCYkH,oBAAA;gBAlCDhH,MAAA,CAAAiH,iBAAiB;+DAAjBjH,MAAA,CAAAiH,iBAAiB,GAAA/G,MAAA;IAC1BwG,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DtH,YAAA,CAA4DuH,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAArH,MAAA,IAAEF,MAAA,CAAAiH,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChDzH,YAAA,CAAgEuH,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEtH,MAAA,CAAAkD;;wBAAgB,MAAEqE,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBVzH,YAAA,CAyBU0H,kBAAA;MAzBAC,KAAK,EAAEzH,MAAA,CAAA0H,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf7H,YAAA,CAQe8H,uBAAA;QARDtH,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMY+H,oBAAA;sBANQ7H,MAAA,CAAA0H,QAAQ,CAACd,IAAI;qEAAb5G,MAAA,CAAA0H,QAAQ,CAACd,IAAI,GAAA1G,MAAA;UAAE4H,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxChI,YAAA,CAAwCiI,oBAAA;YAA7BzH,KAAK,EAAC,MAAM;YAAC0H,KAAK,EAAC;cAC9BlI,YAAA,CAA0CiI,oBAAA;YAA/BzH,KAAK,EAAC,MAAM;YAAC0H,KAAK,EAAC;cAC9BlI,YAAA,CAA2CiI,oBAAA;YAAhCzH,KAAK,EAAC,MAAM;YAAC0H,KAAK,EAAC;cAC9BlI,YAAA,CAAyCiI,oBAAA;YAA9BzH,KAAK,EAAC,MAAM;YAAC0H,KAAK,EAAC;cAC9BlI,YAAA,CAA0CiI,oBAAA;YAA/BzH,KAAK,EAAC,MAAM;YAAC0H,KAAK,EAAC;;;;;UAGlClI,YAAA,CAOe8H,uBAAA;QAPDtH,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKY+H,oBAAA;sBALQ7H,MAAA,CAAA0H,QAAQ,CAACO,KAAK;qEAAdjI,MAAA,CAAA0H,QAAQ,CAACO,KAAK,GAAA/H,MAAA;UAAE4H,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArChI,YAAA,CAAqCiI,oBAAA;YAA1BzH,KAAK,EAAC,KAAK;YAAC0H,KAAK,EAAC;cAC7BlI,YAAA,CAAwCiI,oBAAA;YAA7BzH,KAAK,EAAC,KAAK;YAAC0H,KAAK,EAAC;cAC7BlI,YAAA,CAAsCiI,oBAAA;YAA3BzH,KAAK,EAAC,KAAK;YAAC0H,KAAK,EAAC;cAC7BlI,YAAA,CAA2CiI,oBAAA;YAAhCzH,KAAK,EAAC,MAAM;YAAC0H,KAAK,EAAC;;;;;UAGlClI,YAAA,CAMe8H,uBAAA;QANDtH,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEoI,mBAAA;sBAHSlI,MAAA,CAAA0H,QAAQ,CAACS,WAAW;qEAApBnI,MAAA,CAAA0H,QAAQ,CAACS,WAAW,GAAAjI,MAAA;UAC7B0G,IAAI,EAAC,UAAU;UACdwB,IAAI,EAAE","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/643b7514d6704a6261f7bebf48aabd74ec1d576e3801ddb9ffced758766a0704.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/643b7514d6704a6261f7bebf48aabd74ec1d576e3801ddb9ffced758766a0704.json
new file mode 100644
index 00000000..c35443ab
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/643b7514d6704a6261f7bebf48aabd74ec1d576e3801ddb9ffced758766a0704.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n } else {\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n console.log('非威胁区模式,事件将传播到地图');\n // 不调用stopPropagation,让事件继续传播\n return true; // 允许事件继续传播\n }\n };\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/666811919e2257b774e99f5f8e99778737386e7b2e30d6d216097f0ddc596ed3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/666811919e2257b774e99f5f8e99778737386e7b2e30d6d216097f0ddc596ed3.json
new file mode 100644
index 00000000..05baaf68
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/666811919e2257b774e99f5f8e99778737386e7b2e30d6d216097f0ddc596ed3.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/66d5d81d688c91655a49ae5395639d6a4cf2f66a1b73df8c89711e8e9f70657f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/66d5d81d688c91655a49ae5395639d6a4cf2f66a1b73df8c89711e8e9f70657f.json
new file mode 100644
index 00000000..2357be7d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/66d5d81d688c91655a49ae5395639d6a4cf2f66a1b73df8c89711e8e9f70657f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/687519a7610a1b9febae91c96c3a06bf941d001dcf57e1a3fced775dffd1083f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/687519a7610a1b9febae91c96c3a06bf941d001dcf57e1a3fced775dffd1083f.json
new file mode 100644
index 00000000..40d29258
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/687519a7610a1b9febae91c96c3a06bf941d001dcf57e1a3fced775dffd1083f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 测试API连接\n const testApiConnection = async () => {\n try {\n console.log('测试API连接:', `${API_URL}/api/path-planning/history/all`);\n const response = await fetch(`${API_URL}/api/path-planning/history/all`);\n console.log('API响应状态:', response.status);\n const data = await response.json();\n console.log('API响应数据:', data);\n return data;\n } catch (error) {\n console.error('API连接测试失败:', error);\n return null;\n }\n };\n\n // 显示历史路径对话框\n const showHistoryDialog = async () => {\n historyDialogVisible.value = true;\n\n // 先测试API连接\n console.log('当前API_URL:', API_URL);\n const testResult = await testApiConnection();\n if (!testResult) {\n ElMessage.error('无法连接到后端服务,请确保后端服务已启动');\n return;\n }\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n console.log('正在获取历史路径列表...');\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`, config);\n console.log('历史路径API响应:', response.data);\n if (response.data.success) {\n historyPaths.value = response.data.data || [];\n console.log(`成功加载${historyPaths.value.length}条历史路径`);\n } else {\n ElMessage.error(response.data.message || '获取历史路径失败');\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n if (error.response) {\n console.error('响应状态:', error.response.status);\n console.error('响应数据:', error.response.data);\n ElMessage.error(`获取历史路径失败: ${error.response.data?.message || error.response.statusText}`);\n } else if (error.request) {\n console.error('请求失败,无响应');\n ElMessage.error('网络请求失败,请检查网络连接');\n } else {\n ElMessage.error('获取历史路径失败: ' + error.message);\n }\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`, config);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat) && lng >= -180 && lng <= 180 && lat >= -90 && lat <= 90) {\n return {\n lng: lng,\n lat: lat,\n altitude: parseFloat(point.altitude) || parseFloat(pathData.flight_altitude) || 100\n };\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat) && lng >= -180 && lng <= 180 && lat >= -90 && lat <= 90) {\n return {\n lng: lng,\n lat: lat,\n altitude: parseFloat(point[2]) || parseFloat(pathData.flight_altitude) || 100\n };\n }\n }\n console.warn(`跳过无效路径点 (索引${index}):`, point);\n return null;\n }).filter(point => point !== null);\n }\n if (!pathPoints || pathPoints.length === 0) {\n ElMessage.error('历史路径不包含有效的路径点数据');\n return;\n }\n console.log(`成功验证${pathPoints.length}个有效路径点`);\n\n // 最终验证所有路径点\n const invalidPoints = pathPoints.filter(point => !point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat) || !isFinite(point.lng) || !isFinite(point.lat));\n if (invalidPoints.length > 0) {\n console.error('发现无效路径点:', invalidPoints);\n ElMessage.error(`路径数据包含${invalidPoints.length}个无效点,无法加载`);\n return;\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: parseFloat(pathData.flight_altitude) || 100,\n flightSpeed: parseFloat(pathData.flight_speed) || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n testApiConnection,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","testApiConnection","console","log","response","fetch","data","json","error","showHistoryDialog","testResult","loadHistoryPaths","token","localStorage","getItem","config","headers","success","length","message","statusText","request","selectHistoryPath","loadHistoryPath","id","pathData","path_points","JSON","parse","e","isArray","map","point","index","lng","undefined","lat","parseFloat","isNaN","isFinite","flight_altitude","warn","invalidPoints","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6be664f4e5eaeb3f6ad71992463686d95019f18e128b2650c801931ee98f7d4c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6be664f4e5eaeb3f6ad71992463686d95019f18e128b2650c801931ee98f7d4c.json
new file mode 100644
index 00000000..708f0c7c
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6be664f4e5eaeb3f6ad71992463686d95019f18e128b2650c801931ee98f7d4c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6e886dde28c46d554e2894fb5ce893b580dc95c01dda79cbe71c231f87db57d7.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6e886dde28c46d554e2894fb5ce893b580dc95c01dda79cbe71c231f87db57d7.json
new file mode 100644
index 00000000..b7b47fa3
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6e886dde28c46d554e2894fb5ce893b580dc95c01dda79cbe71c231f87db57d7.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3,\n priority: 1\n },\n medium: {\n name: '中威胁',\n opacity: 0.5,\n priority: 2\n },\n high: {\n name: '高威胁',\n opacity: 0.7,\n priority: 3\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9,\n priority: 4\n }\n };\n\n // 工具函数:检查点是否在威胁区域内\n const isPointInThreatZone = (lng, lat, zone) => {\n if (!zone || !zone.geometry) return false;\n try {\n if (zone.geometry.type === 'circle') {\n // 计算点到圆心的距离\n const center = zone.geometry.center;\n const radius = zone.geometry.radius;\n const distance = calculateDistance(lng, lat, center[0], center[1]);\n return distance <= radius;\n } else if (zone.geometry.type === 'polygon') {\n // 使用射线法判断点是否在多边形内\n const path = zone.geometry.path;\n return isPointInPolygon([lng, lat], path);\n } else if (zone.geometry.type === 'rectangle') {\n // 检查点是否在矩形范围内\n const bounds = zone.geometry.bounds;\n return lng >= bounds[0] && lat >= bounds[1] && lng <= bounds[2] && lat <= bounds[3];\n }\n } catch (error) {\n console.warn('检查点是否在威胁区域内时出错:', error, zone);\n }\n return false;\n };\n\n // 工具函数:计算两点间地理距离(米)\n const calculateGeoDistance = (lng1, lat1, lng2, lat2) => {\n const R = 6371000; // 地球半径(米)\n const dLat = (lat2 - lat1) * Math.PI / 180;\n const dLng = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 工具函数:射线法判断点是否在多边形内\n const isPointInPolygon = (point, polygon) => {\n const [x, y] = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [xi, yi] = polygon[i];\n const [xj, yj] = polygon[j];\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) {\n inside = !inside;\n }\n }\n return inside;\n };\n\n // 计算某个点的实际威胁等级(考虑重叠)\n const calculatePointThreatLevel = (lng, lat) => {\n let maxThreatLevel = null;\n let maxPriority = 0;\n const affectingZones = [];\n\n // 检查点在哪些威胁区域内\n threatZones.value.forEach(zone => {\n if (isPointInThreatZone(lng, lat, zone)) {\n affectingZones.push(zone);\n const priority = threatLevelConfig[zone.level]?.priority || 0;\n if (priority > maxPriority) {\n maxPriority = priority;\n maxThreatLevel = zone.level;\n }\n }\n });\n return {\n level: maxThreatLevel,\n priority: maxPriority,\n affectingZones: affectingZones,\n isOverlapping: affectingZones.length > 1\n };\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n if (activePanel.value === 'threatZone') {\n // 威胁区设置模式:处理威胁区选择\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n } else {\n // 其他模式:手动触发地图点击事件\n console.log('非威胁区模式,手动触发地图点击事件');\n try {\n // 获取点击位置\n const lnglat = e.lnglat;\n console.log('手动触发地图点击:', lnglat);\n\n // 手动调用地图点击处理函数\n onMapClick({\n lnglat\n });\n } catch (error) {\n console.error('手动触发地图点击失败:', error);\n }\n }\n };\n\n // 威胁区域始终绑定点击事件\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 检查威胁等级\n const threatInfo = calculatePointThreatLevel(lng, lat);\n\n // 添加路径点(包含威胁信息)\n const pathPoint = {\n lng,\n lat,\n threatLevel: threatInfo.level,\n threatPriority: threatInfo.priority,\n isInThreatZone: threatInfo.level !== null,\n isOverlapping: threatInfo.isOverlapping,\n affectingZones: threatInfo.affectingZones\n };\n pathPoints.value.push(pathPoint);\n console.log('路径点已添加到数组:', pathPoints.value.length, '威胁信息:', threatInfo);\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n\n // 显示威胁等级信息\n let message = `已添加路径点${pointIndex}`;\n if (pathPoint.isInThreatZone) {\n if (pathPoint.isOverlapping) {\n message += ` (重叠威胁区 - ${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n ElMessage.warning(message);\n } else {\n message += ` (${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n if (pathPoint.threatLevel === 'critical' || pathPoint.threatLevel === 'high') {\n ElMessage.warning(message);\n } else {\n ElMessage.success(message);\n }\n }\n } else {\n message += ' (安全区域)';\n ElMessage.success(message);\n }\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (pathPoint, index) => {\n const AMap = window.AMap;\n const {\n lng,\n lat\n } = pathPoint;\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点,包含威胁等级信息\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat,\n threatLevel: startPoint.threatLevel,\n threatPriority: startPoint.threatPriority,\n isInThreatZone: startPoint.isInThreatZone,\n isOverlapping: startPoint.isOverlapping\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat,\n threatLevel: point.threatLevel,\n threatPriority: point.threatPriority,\n isInThreatZone: point.isInThreatZone,\n isOverlapping: point.isOverlapping\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级',\n // 威胁检测工具函数\n isPointInThreatZone,\n calculateDistance,\n calculatePointThreatLevel\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","priority","medium","high","critical","isPointInThreatZone","lng","lat","zone","center","radius","distance","calculateDistance","path","isPointInPolygon","bounds","calculateGeoDistance","lng1","lat1","lng2","lat2","R","dLat","Math","PI","dLng","a","sin","cos","c","atan2","sqrt","point","polygon","x","y","inside","i","j","length","xi","yi","xj","yj","calculatePointThreatLevel","maxThreatLevel","maxPriority","affectingZones","value","forEach","push","isOverlapping","onMapLoaded","map","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","data","renderThreatZoneOnMap","getCenter","getRadius","getPath","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","threatInfo","pathPoint","threatPriority","isInThreatZone","markerColor","overlappingIndicator","updatePathLine","warning","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","addPathPointMarker","planPath","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","p1","p2","getDistance","φ1","φ2","Δφ","Δλ","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70773c6a98e2534b6c402d7f54d3bb9054dbab8dafb1a7e1d3551d01f9aef29b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70773c6a98e2534b6c402d7f54d3bb9054dbab8dafb1a7e1d3551d01f9aef29b.json
new file mode 100644
index 00000000..b2062451
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70773c6a98e2534b6c402d7f54d3bb9054dbab8dafb1a7e1d3551d01f9aef29b.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-history-panel\"\n};\nconst _hoisted_2 = {\n class: \"panel-header\"\n};\nconst _hoisted_3 = {\n class: \"header-actions\"\n};\nconst _hoisted_4 = {\n class: \"filter-section\"\n};\nconst _hoisted_5 = {\n class: \"path-list\"\n};\nconst _hoisted_6 = {\n class: \"path-header\"\n};\nconst _hoisted_7 = {\n class: \"path-info\"\n};\nconst _hoisted_8 = {\n class: \"path-name\"\n};\nconst _hoisted_9 = {\n class: \"name\"\n};\nconst _hoisted_10 = {\n class: \"path-meta\"\n};\nconst _hoisted_11 = {\n class: \"distance\"\n};\nconst _hoisted_12 = {\n class: \"waypoints\"\n};\nconst _hoisted_13 = {\n class: \"algorithm\"\n};\nconst _hoisted_14 = {\n class: \"path-actions\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_16 = {\n class: \"path-footer\"\n};\nconst _hoisted_17 = {\n class: \"created-time\"\n};\nconst _hoisted_18 = {\n class: \"panel-footer\"\n};\nconst _hoisted_19 = {\n class: \"path-summary\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"path-detail\"\n};\nconst _hoisted_21 = {\n key: 0,\n class: \"path-description-detail\"\n};\nconst _hoisted_22 = {\n key: 1,\n class: \"threat-zones-info\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_More = _resolveComponent(\"More\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_cache[7] || (_cache[7] = _createElementVNode(\"h3\", null, \"路径历史记录\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.refreshPaths,\n loading: $setup.loading,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[4] || (_cache[4] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [4]\n }, 8 /* PROPS */, [\"onClick\", \"loading\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $setup.showAllPaths,\n icon: \"View\"\n }, {\n default: _withCtx(() => _cache[5] || (_cache[5] = [_createTextVNode(\" 显示所有路径 \")])),\n _: 1 /* STABLE */,\n __: [5]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"warning\",\n onClick: $setup.hideAllPaths,\n icon: \"Hide\"\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\" 隐藏所有路径 \")])),\n _: 1 /* STABLE */,\n __: [6]\n }, 8 /* PROPS */, [\"onClick\"])])]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 12\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.filterPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 12\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.filterPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredPaths, (path, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"path-item\", {\n 'active': $props.selectedPaths.includes(path.id)\n }])\n }, [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_12, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_13, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $event => $setup.togglePathVisibility(path),\n type: $props.selectedPaths.includes(path.id) ? 'primary' : 'default'\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.selectedPaths.includes(path.id) ? '隐藏' : '显示'), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\", \"type\"]), _createVNode(_component_el_dropdown, {\n onCommand: $setup.handlePathAction\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: {\n action: 'detail',\n path\n }\n }, {\n default: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\" 查看详情 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [8]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"]), _createVNode(_component_el_dropdown_item, {\n command: {\n action: 'center',\n path\n }\n }, {\n default: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\" 居中显示 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [9]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"]), _createVNode(_component_el_dropdown_item, {\n command: {\n action: 'duplicate',\n path\n }\n }, {\n default: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\" 复制路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [10]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"]), _createVNode(_component_el_dropdown_item, {\n command: {\n action: 'delete',\n path\n },\n divided: \"\"\n }, {\n default: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\" 删除 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [11]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"])]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */)]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"text\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_More)]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onCommand\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", _hoisted_17, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */))]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.loading]]), _createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"span\", null, \"共 \" + _toDisplayString($setup.filteredPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"span\", null, \"显示 \" + _toDisplayString($props.selectedPaths.length) + \" 条\", 1 /* TEXT */)])]), _createCommentVNode(\" 路径详情对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.detailDialogVisible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.detailDialogVisible = $event),\n title: \"路径详情\",\n width: \"600px\",\n onClose: _cache[3] || (_cache[3] = $event => $setup.selectedPathDetail = null)\n }, {\n default: _withCtx(() => [$setup.selectedPathDetail ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createVNode(_component_el_descriptions, {\n column: 2,\n border: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: \"路径名称\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.name), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.algorithm.toUpperCase()), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"状态\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n type: $setup.getStatusType($setup.selectedPathDetail.status)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText($setup.selectedPathDetail.status)), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"距离\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.formatDistance($setup.selectedPathDetail.distance)), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"航点数\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.waypoint_count), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.flight_altitude) + \"m\", 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.flight_speed) + \"m/s\", 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"预计时间\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.estimated_time) + \"分钟\", 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"创建时间\",\n span: 2\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.formatTime($setup.selectedPathDetail.created_at)), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }), $setup.selectedPathDetail.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_cache[12] || (_cache[12] = _createElementVNode(\"h4\", null, \"路径描述\", -1 /* HOISTED */)), _createElementVNode(\"p\", null, _toDisplayString($setup.selectedPathDetail.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $setup.selectedPathDetail.threat_zones_avoided && $setup.selectedPathDetail.threat_zones_avoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [_cache[13] || (_cache[13] = _createElementVNode(\"h4\", null, \"避开的威胁区域\", -1 /* HOISTED */)), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.selectedPathDetail.threat_zones_avoided, zoneId => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: zoneId,\n type: \"warning\",\n size: \"small\",\n class: \"zone-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(\" 威胁区 #\" + _toDisplayString(zoneId), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */);\n }), 128 /* KEYED_FRAGMENT */))])) : _createCommentVNode(\"v-if\", true)])) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_button","size","onClick","$setup","refreshPaths","loading","icon","_cache","type","showAllPaths","hideAllPaths","_hoisted_4","_component_el_row","gutter","_component_el_col","span","_component_el_select","filterStatus","$event","placeholder","onChange","filterPaths","_component_el_option","label","value","filterAlgorithm","_hoisted_5","_component_el_scrollbar","height","_Fragment","_renderList","filteredPaths","path","index","key","id","_normalizeClass","$props","selectedPaths","includes","_hoisted_6","_hoisted_7","_hoisted_8","style","_normalizeStyle","backgroundColor","color","_hoisted_9","_toDisplayString","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_10","_hoisted_11","formatDistance","distance","_hoisted_12","waypoint_count","_hoisted_13","algorithm","toUpperCase","_hoisted_14","togglePathVisibility","_component_el_dropdown","onCommand","handlePathAction","dropdown","_withCtx","_component_el_dropdown_menu","_component_el_dropdown_item","command","action","divided","_component_el_icon","_component_More","description","_hoisted_15","_hoisted_16","_hoisted_17","formatTime","created_at","_hoisted_18","_hoisted_19","length","_createCommentVNode","_component_el_dialog","detailDialogVisible","title","width","onClose","selectedPathDetail","_hoisted_20","_component_el_descriptions","column","border","_component_el_descriptions_item","flight_altitude","flight_speed","estimated_time","_hoisted_21","threat_zones_avoided","_hoisted_22","zoneId","_createBlock"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathHistoryPanel.vue"],"sourcesContent":["\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n {{ selectedPathDetail.name }}\r\n {{ selectedPathDetail.algorithm.toUpperCase() }}\r\n \r\n \r\n {{ getStatusText(selectedPathDetail.status) }}\r\n \r\n \r\n {{ formatDistance(selectedPathDetail.distance) }}\r\n {{ selectedPathDetail.waypoint_count }}\r\n {{ selectedPathDetail.flight_altitude }}m\r\n {{ selectedPathDetail.flight_speed }}m/s\r\n {{ selectedPathDetail.estimated_time }}分钟\r\n {{ formatTime(selectedPathDetail.created_at) }}\r\n \r\n \r\n
\r\n
路径描述
\r\n
{{ selectedPathDetail.description }}
\r\n
\r\n\r\n
0\">\r\n
避开的威胁区域
\r\n \r\n 威胁区 #{{ zoneId }}\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70e4cb307b650dc069ec54903bc777b08f4ca2001d4b449edd5e59d1ee2a5c5a.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70e4cb307b650dc069ec54903bc777b08f4ca2001d4b449edd5e59d1ee2a5c5a.json
new file mode 100644
index 00000000..7eb7dc73
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70e4cb307b650dc069ec54903bc777b08f4ca2001d4b449edd5e59d1ee2a5c5a.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/72df941b89a6c79a5a46adb77628012ab21e0c9fb94d599057b9e69fd3afcfaf.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/72df941b89a6c79a5a46adb77628012ab21e0c9fb94d599057b9e69fd3afcfaf.json
new file mode 100644
index 00000000..28554b3b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/72df941b89a6c79a5a46adb77628012ab21e0c9fb94d599057b9e69fd3afcfaf.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning') {\n // 路径规划 - 直接添加路径点,无需检查addMode\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/72fd44abd655d87ffaa2997c9c524e3010aa523942ba9962128ec0cf1788328a.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/72fd44abd655d87ffaa2997c9c524e3010aa523942ba9962128ec0cf1788328a.json
new file mode 100644
index 00000000..7ba0cd00
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/72fd44abd655d87ffaa2997c9c524e3010aa523942ba9962128ec0cf1788328a.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 额外处理:动态管理事件监听器\n if (!isClickable && overlay.off && overlay._threatZoneClickHandler) {\n // 移除点击事件监听器\n overlay.off('click', overlay._threatZoneClickHandler);\n } else if (isClickable && overlay.on && overlay._threatZoneClickHandler) {\n // 重新绑定点击事件监听器(先移除再添加,避免重复绑定)\n overlay.off('click', overlay._threatZoneClickHandler);\n overlay.on('click', overlay._threatZoneClickHandler);\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n };\n\n // 保存事件处理函数的引用,以便后续移除\n overlay._threatZoneClickHandler = handleZoneClick;\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value\n });\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","off","_threatZoneClickHandler","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/741a49894128f4bcb35f84db6d3cfc9e8b544dc95253acaa61bd98305d0f7126.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/741a49894128f4bcb35f84db6d3cfc9e8b544dc95253acaa61bd98305d0f7126.json
new file mode 100644
index 00000000..0db0c2bb
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/741a49894128f4bcb35f84db6d3cfc9e8b544dc95253acaa61bd98305d0f7126.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/744cb9bf9200d81280b46e66e0f3183d75b3d98e8f02d24d96cd6f682f6c7832.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/744cb9bf9200d81280b46e66e0f3183d75b3d98e8f02d24d96cd6f682f6c7832.json
new file mode 100644
index 00000000..226ee7d3
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/744cb9bf9200d81280b46e66e0f3183d75b3d98e8f02d24d96cd6f682f6c7832.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7576c46e3077a94cf3f4f195e532d7ebd6b6b1bb6d7c707b70745223fd764103.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7576c46e3077a94cf3f4f195e532d7ebd6b6b1bb6d7c707b70745223fd764103.json
new file mode 100644
index 00000000..9920fc44
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7576c46e3077a94cf3f4f195e532d7ebd6b6b1bb6d7c707b70745223fd764103.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/75891a286a6ad7b06d617cda6b58b3ca0cf3cfcb99e98efa7e44cf4e26e15665.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/75891a286a6ad7b06d617cda6b58b3ca0cf3cfcb99e98efa7e44cf4e26e15665.json
new file mode 100644
index 00000000..0d432b65
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/75891a286a6ad7b06d617cda6b58b3ca0cf3cfcb99e98efa7e44cf4e26e15665.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 显示历史路径对话框\n const showHistoryDialog = () => {\n historyDialogVisible.value = true;\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n console.log('正在获取历史路径列表...');\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`, config);\n console.log('历史路径API响应:', response.data);\n if (response.data.success) {\n historyPaths.value = response.data.data || [];\n console.log(`成功加载${historyPaths.value.length}条历史路径`);\n } else {\n ElMessage.error(response.data.message || '获取历史路径失败');\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n if (error.response) {\n console.error('响应状态:', error.response.status);\n console.error('响应数据:', error.response.data);\n ElMessage.error(`获取历史路径失败: ${error.response.data?.message || error.response.statusText}`);\n } else if (error.request) {\n console.error('请求失败,无响应');\n ElMessage.error('网络请求失败,请检查网络连接');\n } else {\n ElMessage.error('获取历史路径失败: ' + error.message);\n }\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return {\n lng: parseFloat(point.lng),\n lat: parseFloat(point.lat),\n altitude: point.altitude || pathData.flight_altitude || 100\n };\n } else if (Array.isArray(point) && point.length >= 2) {\n return {\n lng: parseFloat(point[0]),\n lat: parseFloat(point[1]),\n altitude: point[2] || pathData.flight_altitude || 100\n };\n } else {\n console.warn(`路径点格式不正确 (索引${index}):`, point);\n return null;\n }\n }).filter(point => point !== null);\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: pathData.flight_altitude || 100,\n flightSpeed: pathData.flight_speed || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","showHistoryDialog","loadHistoryPaths","console","log","token","localStorage","getItem","config","headers","response","data","success","length","error","message","statusText","request","selectHistoryPath","loadHistoryPath","id","pathData","path_points","JSON","parse","e","isArray","map","point","index","lng","undefined","lat","parseFloat","flight_altitude","warn","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/76775bb66cd1b8bff384cf7a6643fdee86acdbab86f5ff9db57b909a8605a844.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/76775bb66cd1b8bff384cf7a6643fdee86acdbab86f5ff9db57b909a8605a844.json
new file mode 100644
index 00000000..2ee92c98
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/76775bb66cd1b8bff384cf7a6643fdee86acdbab86f5ff9db57b909a8605a844.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/76e8604f64bdf9807a506df16aa3a54d97b84c3b2ce15cc7e215d281d9ee0a25.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/76e8604f64bdf9807a506df16aa3a54d97b84c3b2ce15cc7e215d281d9ee0a25.json
new file mode 100644
index 00000000..2c781fdf
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/76e8604f64bdf9807a506df16aa3a54d97b84c3b2ce15cc7e215d281d9ee0a25.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n const southwest = bounds.getSouthWest();\n const northeast = bounds.getNorthEast();\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n if (isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat)) {\n console.error('计算的边界包含NaN值');\n ElMessage.error('路径边界计算失败');\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n // fallback: 使用第一个点居中显示\n if (pathPoints.value.length > 0) {\n const firstPoint = pathPoints.value[0];\n mapInstance.value.setCenter([firstPoint.lng, firstPoint.lat]);\n mapInstance.value.setZoom(12);\n }\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","validPoints","isNaN","isFinite","Number","coord","extendError","southwest","northeast","boundsError","firstPoint","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/779a76df9c585af8baa2c188ec58984ea8f5a6284ef471a895f4e2020b2197ce.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/779a76df9c585af8baa2c188ec58984ea8f5a6284ef471a895f4e2020b2197ce.json
new file mode 100644
index 00000000..9e447dce
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/779a76df9c585af8baa2c188ec58984ea8f5a6284ef471a895f4e2020b2197ce.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/77c739dd58ebe3f53b7bf958a76b2a3bc546edcc75c73209e2971005ae530f2d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/77c739dd58ebe3f53b7bf958a76b2a3bc546edcc75c73209e2971005ae530f2d.json
new file mode 100644
index 00000000..8d6b04c9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/77c739dd58ebe3f53b7bf958a76b2a3bc546edcc75c73209e2971005ae530f2d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: _ctx.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: _ctx.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => _ctx.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: _ctx.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString(_ctx.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => _ctx.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.confirmLoadPath,\n disabled: !_ctx.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => _ctx.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: _ctx.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: _ctx.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': _ctx.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => _ctx.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: _ctx.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => _ctx.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString(_ctx.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), _ctx.filteredHistoryPaths.length === 0 && !_ctx.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, _ctx.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","$setup","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7849f4f0062abc24ef16f961949aefb8651c1dae05ed106d3ac004331d298610.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7849f4f0062abc24ef16f961949aefb8651c1dae05ed106d3ac004331d298610.json
new file mode 100644
index 00000000..792548bb
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7849f4f0062abc24ef16f961949aefb8651c1dae05ed106d3ac004331d298610.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n\n // 创建路径点标记\n pathPoints.value.forEach((point, index) => {\n const isStart = index === 0;\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n\n // 添加标记到地图\n mapInstance.value.add(pathMarkers.value);\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n const pathLine = new window.AMap.Polyline({\n path: pathInfo.value.path.map(point => [point.lng, point.lat]),\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLine;\n mapInstance.value.add(pathLine);\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isStart","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7907e03a363be181ebf68de19bac8d78ed2eaed41624b1a6d7f206da793d7d21.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7907e03a363be181ebf68de19bac8d78ed2eaed41624b1a6d7f206da793d7d21.json
new file mode 100644
index 00000000..9a4e00a7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7907e03a363be181ebf68de19bac8d78ed2eaed41624b1a6d7f206da793d7d21.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n overlay.setOptions({\n clickable: isClickable\n });\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: activePanel.value === 'threatZone'\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/79f44efd10a2df4427320166d6640a06ec41b8675db7c8ac9b0320543f8841e4.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/79f44efd10a2df4427320166d6640a06ec41b8675db7c8ac9b0320543f8841e4.json
new file mode 100644
index 00000000..9acdca90
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/79f44efd10a2df4427320166d6640a06ec41b8675db7c8ac9b0320543f8841e4.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7a20901d8c22c8704d9f1d417ac4c7e95250a9a44a4b45e5bdbade4704825548.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7a20901d8c22c8704d9f1d417ac4c7e95250a9a44a4b45e5bdbade4704825548.json
new file mode 100644
index 00000000..e8c0231a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7a20901d8c22c8704d9f1d417ac4c7e95250a9a44a4b45e5bdbade4704825548.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isNaN","isFinite","Number","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7ca7644a3b0aff66186390317895d86050eec8e560d21679717f607ae168dfe6.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7ca7644a3b0aff66186390317895d86050eec8e560d21679717f607ae168dfe6.json
new file mode 100644
index 00000000..b8180691
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7ca7644a3b0aff66186390317895d86050eec8e560d21679717f607ae168dfe6.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e11edf9b0edf892484bc5ae8774970972998f8d75f825aaca88c88542dfa191.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e11edf9b0edf892484bc5ae8774970972998f8d75f825aaca88c88542dfa191.json
new file mode 100644
index 00000000..60320812
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e11edf9b0edf892484bc5ae8774970972998f8d75f825aaca88c88542dfa191.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3,\n priority: 1\n },\n medium: {\n name: '中威胁',\n opacity: 0.5,\n priority: 2\n },\n high: {\n name: '高威胁',\n opacity: 0.7,\n priority: 3\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9,\n priority: 4\n }\n };\n\n // 工具函数:检查点是否在威胁区域内\n const isPointInThreatZone = (lng, lat, zone) => {\n if (!zone || !zone.geometry) return false;\n try {\n if (zone.geometry.type === 'circle') {\n // 计算点到圆心的距离\n const center = zone.geometry.center;\n const radius = zone.geometry.radius;\n const distance = calculateGeoDistance(lng, lat, center[0], center[1]);\n return distance <= radius;\n } else if (zone.geometry.type === 'polygon') {\n // 使用射线法判断点是否在多边形内\n const path = zone.geometry.path;\n return isPointInPolygon([lng, lat], path);\n } else if (zone.geometry.type === 'rectangle') {\n // 检查点是否在矩形范围内\n const bounds = zone.geometry.bounds;\n return lng >= bounds[0] && lat >= bounds[1] && lng <= bounds[2] && lat <= bounds[3];\n }\n } catch (error) {\n console.warn('检查点是否在威胁区域内时出错:', error, zone);\n }\n return false;\n };\n\n // 工具函数:计算两点间地理距离(米)\n const calculateGeoDistance = (lng1, lat1, lng2, lat2) => {\n const R = 6371000; // 地球半径(米)\n const dLat = (lat2 - lat1) * Math.PI / 180;\n const dLng = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 工具函数:射线法判断点是否在多边形内\n const isPointInPolygon = (point, polygon) => {\n const [x, y] = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [xi, yi] = polygon[i];\n const [xj, yj] = polygon[j];\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) {\n inside = !inside;\n }\n }\n return inside;\n };\n\n // 计算某个点的实际威胁等级(考虑重叠)\n const calculatePointThreatLevel = (lng, lat) => {\n let maxThreatLevel = null;\n let maxPriority = 0;\n const affectingZones = [];\n\n // 检查点在哪些威胁区域内\n threatZones.value.forEach(zone => {\n if (isPointInThreatZone(lng, lat, zone)) {\n affectingZones.push(zone);\n const priority = threatLevelConfig[zone.level]?.priority || 0;\n if (priority > maxPriority) {\n maxPriority = priority;\n maxThreatLevel = zone.level;\n }\n }\n });\n return {\n level: maxThreatLevel,\n priority: maxPriority,\n affectingZones: affectingZones,\n isOverlapping: affectingZones.length > 1\n };\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n if (activePanel.value === 'threatZone') {\n // 威胁区设置模式:处理威胁区选择\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n } else {\n // 其他模式:手动触发地图点击事件\n console.log('非威胁区模式,手动触发地图点击事件');\n try {\n // 获取点击位置\n const lnglat = e.lnglat;\n console.log('手动触发地图点击:', lnglat);\n\n // 手动调用地图点击处理函数\n onMapClick({\n lnglat\n });\n } catch (error) {\n console.error('手动触发地图点击失败:', error);\n }\n }\n };\n\n // 威胁区域始终绑定点击事件\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 检查威胁等级\n const threatInfo = calculatePointThreatLevel(lng, lat);\n\n // 添加路径点(包含威胁信息)\n const pathPoint = {\n lng,\n lat,\n threatLevel: threatInfo.level,\n threatPriority: threatInfo.priority,\n isInThreatZone: threatInfo.level !== null,\n isOverlapping: threatInfo.isOverlapping,\n affectingZones: threatInfo.affectingZones\n };\n pathPoints.value.push(pathPoint);\n console.log('路径点已添加到数组:', pathPoints.value.length, '威胁信息:', threatInfo);\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n\n // 显示威胁等级信息\n let message = `已添加路径点${pointIndex}`;\n if (pathPoint.isInThreatZone) {\n if (pathPoint.isOverlapping) {\n message += ` (重叠威胁区 - ${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n ElMessage.warning(message);\n } else {\n message += ` (${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n if (pathPoint.threatLevel === 'critical' || pathPoint.threatLevel === 'high') {\n ElMessage.warning(message);\n } else {\n ElMessage.success(message);\n }\n }\n } else {\n message += ' (安全区域)';\n ElMessage.success(message);\n }\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (pathPoint, index) => {\n const AMap = window.AMap;\n const {\n lng,\n lat\n } = pathPoint;\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点,包含威胁等级信息\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat,\n threatLevel: startPoint.threatLevel,\n threatPriority: startPoint.threatPriority,\n isInThreatZone: startPoint.isInThreatZone,\n isOverlapping: startPoint.isOverlapping\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat,\n threatLevel: point.threatLevel,\n threatPriority: point.threatPriority,\n isInThreatZone: point.isInThreatZone,\n isOverlapping: point.isOverlapping\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级',\n // 威胁检测工具函数\n isPointInThreatZone,\n calculateGeoDistance,\n calculatePointThreatLevel\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","priority","medium","high","critical","isPointInThreatZone","lng","lat","zone","center","radius","distance","calculateGeoDistance","path","isPointInPolygon","bounds","lng1","lat1","lng2","lat2","R","dLat","Math","PI","dLng","a","sin","cos","c","atan2","sqrt","point","polygon","x","y","inside","i","j","length","xi","yi","xj","yj","calculatePointThreatLevel","maxThreatLevel","maxPriority","affectingZones","value","forEach","push","isOverlapping","onMapLoaded","map","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","data","renderThreatZoneOnMap","getCenter","getRadius","getPath","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","threatInfo","pathPoint","threatPriority","isInThreatZone","markerColor","overlappingIndicator","updatePathLine","warning","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","addPathPointMarker","planPath","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","φ1","φ2","Δφ","Δλ","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e14e99c5bd132b8cd5b61dd75d7f8ef4cfb5c9cc176d9edc320c11546aacfc7.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e14e99c5bd132b8cd5b61dd75d7f8ef4cfb5c9cc176d9edc320c11546aacfc7.json
new file mode 100644
index 00000000..081a38f8
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e14e99c5bd132b8cd5b61dd75d7f8ef4cfb5c9cc176d9edc320c11546aacfc7.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e4ef3c3218c2b9366d336c5e7a3d77605a1c459fa4048533621cc4084ae51f3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e4ef3c3218c2b9366d336c5e7a3d77605a1c459fa4048533621cc4084ae51f3.json
new file mode 100644
index 00000000..b1e55cfa
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e4ef3c3218c2b9366d336c5e7a3d77605a1c459fa4048533621cc4084ae51f3.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e697c364d2c8d005eca6d8a655ebfee08bc5279893ee020f965c07d39e41c88.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e697c364d2c8d005eca6d8a655ebfee08bc5279893ee020f965c07d39e41c88.json
new file mode 100644
index 00000000..319b9799
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e697c364d2c8d005eca6d8a655ebfee08bc5279893ee020f965c07d39e41c88.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 详细验证圆形数据\n console.log('圆形威胁区详细检查:');\n console.log(' center:', zone.geometry.center);\n console.log(' center类型:', typeof zone.geometry.center);\n console.log(' center是数组:', Array.isArray(zone.geometry.center));\n if (Array.isArray(zone.geometry.center)) {\n console.log(' center[0]:', zone.geometry.center[0], '类型:', typeof zone.geometry.center[0]);\n console.log(' center[1]:', zone.geometry.center[1], '类型:', typeof zone.geometry.center[1]);\n console.log(' center[0] isNaN:', isNaN(zone.geometry.center[0]));\n console.log(' center[1] isNaN:', isNaN(zone.geometry.center[1]));\n }\n console.log(' radius:', zone.geometry.radius, '类型:', typeof zone.geometry.radius);\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && !isNaN(point[0]) && !isNaN(point[1]));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => isNaN(val))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8012e17bf05b4ea1358603de4f9c5711a2003f3a9b06a554ed701ba0663f3835.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8012e17bf05b4ea1358603de4f9c5711a2003f3a9b06a554ed701ba0663f3835.json
new file mode 100644
index 00000000..c74a3af2
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8012e17bf05b4ea1358603de4f9c5711a2003f3a9b06a554ed701ba0663f3835.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 测试API连接\n const testApiConnection = async () => {\n try {\n console.log('测试API连接:', `${API_URL}/api/path-planning/history/all`);\n const response = await fetch(`${API_URL}/api/path-planning/history/all`);\n console.log('API响应状态:', response.status);\n const data = await response.json();\n console.log('API响应数据:', data);\n return data;\n } catch (error) {\n console.error('API连接测试失败:', error);\n return null;\n }\n };\n\n // 显示历史路径对话框\n const showHistoryDialog = async () => {\n historyDialogVisible.value = true;\n\n // 先测试API连接\n console.log('当前API_URL:', API_URL);\n const testResult = await testApiConnection();\n if (!testResult) {\n ElMessage.error('无法连接到后端服务,请确保后端服务已启动');\n return;\n }\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n console.log('正在获取历史路径列表...');\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`, config);\n console.log('历史路径API响应:', response.data);\n if (response.data.success) {\n historyPaths.value = response.data.data || [];\n console.log(`成功加载${historyPaths.value.length}条历史路径`);\n } else {\n ElMessage.error(response.data.message || '获取历史路径失败');\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n if (error.response) {\n console.error('响应状态:', error.response.status);\n console.error('响应数据:', error.response.data);\n ElMessage.error(`获取历史路径失败: ${error.response.data?.message || error.response.statusText}`);\n } else if (error.request) {\n console.error('请求失败,无响应');\n ElMessage.error('网络请求失败,请检查网络连接');\n } else {\n ElMessage.error('获取历史路径失败: ' + error.message);\n }\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`, config);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return {\n lng: parseFloat(point.lng),\n lat: parseFloat(point.lat),\n altitude: point.altitude || pathData.flight_altitude || 100\n };\n } else if (Array.isArray(point) && point.length >= 2) {\n return {\n lng: parseFloat(point[0]),\n lat: parseFloat(point[1]),\n altitude: point[2] || pathData.flight_altitude || 100\n };\n } else {\n console.warn(`路径点格式不正确 (索引${index}):`, point);\n return null;\n }\n }).filter(point => point !== null);\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: pathData.flight_altitude || 100,\n flightSpeed: pathData.flight_speed || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n testApiConnection,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","testApiConnection","console","log","response","fetch","data","json","error","showHistoryDialog","testResult","loadHistoryPaths","token","localStorage","getItem","config","headers","success","length","message","statusText","request","selectHistoryPath","loadHistoryPath","id","pathData","path_points","JSON","parse","e","isArray","map","point","index","lng","undefined","lat","parseFloat","flight_altitude","warn","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/80443629b5512c4be43b0c2d8ebc6977acef7f8f5007bb2a9f27d64d4b6a008d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/80443629b5512c4be43b0c2d8ebc6977acef7f8f5007bb2a9f27d64d4b6a008d.json
new file mode 100644
index 00000000..8ad3c939
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/80443629b5512c4be43b0c2d8ebc6977acef7f8f5007bb2a9f27d64d4b6a008d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAkB;;EAEtBA,KAAK,EAAC;AAAY;;EAEhBA,KAAK,EAAC;AAAgB;;EAIhBA,KAAK,EAAC;AAAwB;;EAY9BA,KAAK,EAAC;AAAwB;;EA8B9BA,KAAK,EAAC;AAAwB;;EA0B9BA,KAAK,EAAC;AAAwB;;EAkBtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;;uBAhH/BC,mBAAA,CA+JM,OA/JNC,UA+JM,GA9JJC,mBAAA,YAAe,EACfC,mBAAA,CAyFM,OAzFNC,UAyFM,GAxFJF,mBAAA,eAAkB,EAClBC,mBAAA,CAsFM,OAtFNE,UAsFM,GArFJC,YAAA,CAoFUC,kBAAA;gBApFQC,MAAA,CAAAC,WAAW;+DAAXD,MAAA,CAAAC,WAAW,GAAAC,MAAA;IAAGC,UAAS,EAAEH,MAAA,CAAAI,cAAc;IAAE,cAAY,EAAC;;sBACtE,MAAe,CAAfV,mBAAA,YAAe,EACfI,YAAA,CAScO,sBAAA;MATDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAOM,CAPNZ,mBAAA,CAOM,OAPNa,UAOM,GANJV,YAAA,CAKEW,0BAAA;QAJCC,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BC,cAAa,EAAEZ,MAAA,CAAAa,YAAY;QAC3B,UAAQ,EAAEb,MAAA,CAAAc,OAAO;QACjB,eAAa,EAAEd,MAAA,CAAAe;;;QAKtBrB,mBAAA,aAAgB,EAChBI,YAAA,CA2BcO,sBAAA;MA3BDC,KAAK,EAAC,OAAO;MAACC,IAAI,EAAC;;wBAC9B,MAyBM,CAzBNZ,mBAAA,CAyBM,OAzBNqB,UAyBM,GAxBJlB,YAAA,CAuBEmB,4BAAA;QAtBC,cAAY,EAAEjB,MAAA,CAAAkB,WAAW;QACzB,kBAAgB,EAAElB,MAAA,CAAAmB,cAAc;QAChC,qBAAmB,EAAEnB,MAAA,CAAAoB,iBAAiB;QACtC,WAAS,EAAEpB,MAAA,CAAAqB,QAAQ;QACnB,cAAY,EAAErB,MAAA,CAAAsB,WAAW;QACzB,eAAa,EAAEtB,MAAA,CAAAuB,YAAY;QAC3B,oBAAkB,EAAEvB,MAAA,CAAAwB,iBAAiB;QACrC,mBAAiB,EAAExB,MAAA,CAAAyB,eAAe;QAClC,gBAAc,EAAEzB,MAAA,CAAA0B,aAAa;QAC7BC,oBAAqB,EAAE3B,MAAA,CAAA4B,sBAAsB;QAC7CC,qBAAsB,EAAE7B,MAAA,CAAA8B,uBAAuB;QAC/CC,aAAa,EAAE/B,MAAA,CAAAgC,WAAW;QAC1BC,YAAW,EAAEjC,MAAA,CAAAkC,UAAU;QACvBC,YAAW,EAAEnC,MAAA,CAAAoC,UAAU;QACvBC,UAAS,EAAErC,MAAA,CAAAsC,QAAQ;QACnBC,eAAe,EAAEvC,MAAA,CAAAwC,aAAa;QAC9BC,uBAAuB,EAAEzC,MAAA,CAAA0C,qBAAqB;QAC9CC,oBAAoB,EAAE3C,MAAA,CAAA4C,kBAAkB;QACxCC,yBAAyB,EAAE7C,MAAA,CAAA8C,uBAAuB;QAClDC,uBAAwB,EAAE/C,MAAA,CAAAgD,qBAAqB;QAC/CC,gBAAgB,EAAEjD,MAAA,CAAAkD,cAAc;QAChCC,YAAY,EAAEnD,MAAA,CAAAoD;;;QAKrB1D,mBAAA,YAAe,EACfI,YAAA,CAuBcO,sBAAA;MAvBDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAqBM,CArBNZ,mBAAA,CAqBM,OArBN0D,UAqBM,GApBJvD,YAAA,CAmBEwD,8BAAA;QAlBC,aAAW,EAAEtD,MAAA,CAAAuD,UAAU;QACvB,UAAQ,EAAEvD,MAAA,CAAAc,OAAO;QACjB,oBAAkB,EAAEd,MAAA,CAAAwD,iBAAiB;QACrC,iBAAe,EAAExD,MAAA,CAAAyD,cAAc;QAC/B,cAAY,EAAEzD,MAAA,CAAA0D,WAAW;QACzB,WAAS,EAAE1D,MAAA,CAAA2D,QAAQ;QACnBjD,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BiD,UAAS,EAAE5D,MAAA,CAAA6D,QAAQ;QACnBC,UAAS,EAAE9D,MAAA,CAAA+D,QAAQ;QACnBC,aAAY,EAAEhE,MAAA,CAAAiE,WAAW;QACzBC,aAAY,EAAElE,MAAA,CAAAmE,WAAW;QACzBC,eAAe,EAAEpE,MAAA,CAAAqE,aAAa;QAC9BC,aAAa,EAAEtE,MAAA,CAAAuE,WAAW;QAC1BC,WAAW,EAAExE,MAAA,CAAAyE,SAAS;QACtBC,yBAAyB,EAAE1E,MAAA,CAAA2E,uBAAuB;QAClDC,sBAAsB,EAAE5E,MAAA,CAAA6E,oBAAoB;QAC5CC,mBAAmB,EAAE9E,MAAA,CAAA+E,iBAAiB;QACtCC,iBAAiB,EAAEhF,MAAA,CAAAiF;;;QAK1BvF,mBAAA,YAAe,EACfI,YAAA,CAacO,sBAAA;MAbDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAWM,CAXNZ,mBAAA,CAWM,OAXNuF,UAWM,GAVJpF,YAAA,CASEqF,6BAAA;QARC,gBAAc,EAAEnF,MAAA,CAAAoF,oBAAoB;QACpCC,UAAS,EAAErF,MAAA,CAAAsF,eAAe;QAC1BC,UAAS,EAAEvF,MAAA,CAAAwF,eAAe;QAC1BC,cAAc,EAAEzF,MAAA,CAAA0F,mBAAmB;QACnCC,cAAc,EAAE3F,MAAA,CAAA4F,mBAAmB;QACnCC,cAAc,EAAE7F,MAAA,CAAA8F,mBAAmB;QACnCC,eAAc,EAAE/F,MAAA,CAAAgG,oBAAoB;QACpCC,qBAAqB,EAAEjG,MAAA,CAAAkG;;;;;uDAQpCxG,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNwG,UA0BM,GAzBJrG,YAAA,CAKEsG,oBAAA;IAJCC,IAAI,EAAErG,MAAA,CAAAC,WAAW;IACjBqG,WAAU,EAAEtG,MAAA,CAAAsG,WAAW;IACvBC,UAAS,EAAEvG,MAAA,CAAAuG,UAAU;IACtBC,GAAG,EAAC;kEAGN9G,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANNiH,UAMM,GALJ3G,YAAA,CAIE4G,mBAAA;IAHCC,KAAK,EAAE3G,MAAA,CAAA4G,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJnH,mBAAA,YAAe,EACJM,MAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNsH,WAOM,GANJhH,YAAA,CAKE4G,mBAAA;IAJCC,KAAK,EAAE3G,MAAA,CAAA+G,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBtH,mBAAA,cAAiB,EACjBI,YAAA,CAmCYmH,oBAAA;gBAlCDjH,MAAA,CAAAkH,iBAAiB;+DAAjBlH,MAAA,CAAAkH,iBAAiB,GAAAhH,MAAA;IAC1ByG,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DvH,YAAA,CAA4DwH,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAtH,MAAA,IAAEF,MAAA,CAAAkH,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChD1H,YAAA,CAAgEwH,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEvH,MAAA,CAAAkD;;wBAAgB,MAAEsE,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBV1H,YAAA,CAyBU2H,kBAAA;MAzBAC,KAAK,EAAE1H,MAAA,CAAA2H,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf9H,YAAA,CAQe+H,uBAAA;QARDvH,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMYgI,oBAAA;sBANQ9H,MAAA,CAAA2H,QAAQ,CAACd,IAAI;qEAAb7G,MAAA,CAAA2H,QAAQ,CAACd,IAAI,GAAA3G,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxCjI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAAyCkI,oBAAA;YAA9B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;cAC9BnI,YAAA,CAA0CkI,oBAAA;YAA/B1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAOe+H,uBAAA;QAPDvH,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKYgI,oBAAA;sBALQ9H,MAAA,CAAA2H,QAAQ,CAACO,KAAK;qEAAdlI,MAAA,CAAA2H,QAAQ,CAACO,KAAK,GAAAhI,MAAA;UAAE6H,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArCjI,YAAA,CAAqCkI,oBAAA;YAA1B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAwCkI,oBAAA;YAA7B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAAsCkI,oBAAA;YAA3B1H,KAAK,EAAC,KAAK;YAAC2H,KAAK,EAAC;cAC7BnI,YAAA,CAA2CkI,oBAAA;YAAhC1H,KAAK,EAAC,MAAM;YAAC2H,KAAK,EAAC;;;;;UAGlCnI,YAAA,CAMe+H,uBAAA;QANDvH,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEqI,mBAAA;sBAHSnI,MAAA,CAAA2H,QAAQ,CAACS,WAAW;qEAApBpI,MAAA,CAAA2H,QAAQ,CAACS,WAAW,GAAAlI,MAAA;UAC7B2G,IAAI,EAAC,UAAU;UACdwB,IAAI,EAAE","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/818a50c99aec307d43d00df5aa160677d41002249e9d44fe2f886fcefebbc7eb.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/818a50c99aec307d43d00df5aa160677d41002249e9d44fe2f886fcefebbc7eb.json
new file mode 100644
index 00000000..e48fafe9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/818a50c99aec307d43d00df5aa160677d41002249e9d44fe2f886fcefebbc7eb.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n } else {\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n console.log('非威胁区模式,事件将传播到地图');\n // 不调用stopPropagation,让事件继续传播\n return true; // 允许事件继续传播\n }\n };\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8297c478c8b36b10ed0bb5bad8ee9f373c468aea2baf203950dc7e1eea48b32e.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8297c478c8b36b10ed0bb5bad8ee9f373c468aea2baf203950dc7e1eea48b32e.json
new file mode 100644
index 00000000..f7f62b8d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8297c478c8b36b10ed0bb5bad8ee9f373c468aea2baf203950dc7e1eea48b32e.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/87d596712e1839e28931a189e307a9e1707a85f94efa3c90aad242bff3964bc3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/87d596712e1839e28931a189e307a9e1707a85f94efa3c90aad242bff3964bc3.json
new file mode 100644
index 00000000..6556b8f2
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/87d596712e1839e28931a189e307a9e1707a85f94efa3c90aad242bff3964bc3.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/88740c352327c2a06635e7fc1c5b9da3836c098d02b5ae9e7ed195012b6ddb48.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/88740c352327c2a06635e7fc1c5b9da3836c098d02b5ae9e7ed195012b6ddb48.json
new file mode 100644
index 00000000..bdb3db2a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/88740c352327c2a06635e7fc1c5b9da3836c098d02b5ae9e7ed195012b6ddb48.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8a8ab5588391d6deee64b4e0ad5d1b3fd43d8fc326d89eeeb56c4b3afd59e361.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8a8ab5588391d6deee64b4e0ad5d1b3fd43d8fc326d89eeeb56c4b3afd59e361.json
new file mode 100644
index 00000000..0a7ca506
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8a8ab5588391d6deee64b4e0ad5d1b3fd43d8fc326d89eeeb56c4b3afd59e361.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8afd428de129eefb13e08b53a8cdce6c103e25b04356644d106d82b5c82121da.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8afd428de129eefb13e08b53a8cdce6c103e25b04356644d106d82b5c82121da.json
new file mode 100644
index 00000000..419c109a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8afd428de129eefb13e08b53a8cdce6c103e25b04356644d106d82b5c82121da.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-history-panel\"\n};\nconst _hoisted_2 = {\n class: \"panel-header\"\n};\nconst _hoisted_3 = {\n class: \"header-actions\"\n};\nconst _hoisted_4 = {\n class: \"filter-section\"\n};\nconst _hoisted_5 = {\n class: \"path-list\"\n};\nconst _hoisted_6 = {\n class: \"path-header\"\n};\nconst _hoisted_7 = {\n class: \"path-info\"\n};\nconst _hoisted_8 = {\n class: \"path-name\"\n};\nconst _hoisted_9 = {\n class: \"name\"\n};\nconst _hoisted_10 = {\n class: \"path-meta\"\n};\nconst _hoisted_11 = {\n class: \"distance\"\n};\nconst _hoisted_12 = {\n class: \"waypoints\"\n};\nconst _hoisted_13 = {\n class: \"algorithm\"\n};\nconst _hoisted_14 = {\n class: \"path-actions\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_16 = {\n class: \"path-footer\"\n};\nconst _hoisted_17 = {\n class: \"created-time\"\n};\nconst _hoisted_18 = {\n class: \"panel-footer\"\n};\nconst _hoisted_19 = {\n class: \"path-summary\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"path-detail\"\n};\nconst _hoisted_21 = {\n key: 0,\n class: \"path-description-detail\"\n};\nconst _hoisted_22 = {\n key: 1,\n class: \"threat-zones-info\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_More = _resolveComponent(\"More\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_cache[7] || (_cache[7] = _createElementVNode(\"h3\", null, \"路径历史记录\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.refreshPaths,\n loading: $setup.loading,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[4] || (_cache[4] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [4]\n }, 8 /* PROPS */, [\"onClick\", \"loading\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $setup.showAllPaths,\n icon: \"View\"\n }, {\n default: _withCtx(() => _cache[5] || (_cache[5] = [_createTextVNode(\" 显示所有路径 \")])),\n _: 1 /* STABLE */,\n __: [5]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"warning\",\n onClick: $setup.hideAllPaths,\n icon: \"Hide\"\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\" 隐藏所有路径 \")])),\n _: 1 /* STABLE */,\n __: [6]\n }, 8 /* PROPS */, [\"onClick\"])])]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 12\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.filterPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 12\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.filterPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredPaths, (path, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"path-item\", {\n 'active': $props.selectedPaths.includes(path.id)\n }])\n }, [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_12, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_13, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $event => $setup.togglePathVisibility(path),\n type: $props.selectedPaths.includes(path.id) ? 'primary' : 'default'\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.selectedPaths.includes(path.id) ? '隐藏' : '显示'), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\", \"type\"]), _createVNode(_component_el_dropdown, {\n onCommand: $setup.handlePathAction\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: {\n action: 'detail',\n path\n }\n }, {\n default: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\" 查看详情 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [8]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"]), _createVNode(_component_el_dropdown_item, {\n command: {\n action: 'center',\n path\n }\n }, {\n default: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\" 居中显示 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [9]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"]), _createVNode(_component_el_dropdown_item, {\n command: {\n action: 'duplicate',\n path\n }\n }, {\n default: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\" 复制路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [10]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"]), _createVNode(_component_el_dropdown_item, {\n command: {\n action: 'delete',\n path\n },\n divided: \"\"\n }, {\n default: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\" 删除 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [11]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"command\"])]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */)]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"text\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_More)]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onCommand\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", _hoisted_17, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */))]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.loading]]), _createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"span\", null, \"共 \" + _toDisplayString($setup.filteredPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"span\", null, \"显示 \" + _toDisplayString($props.selectedPaths.length) + \" 条\", 1 /* TEXT */)])]), _createCommentVNode(\" 路径详情对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.detailDialogVisible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.detailDialogVisible = $event),\n title: \"路径详情\",\n width: \"600px\",\n onClose: _cache[3] || (_cache[3] = $event => $setup.selectedPathDetail = null)\n }, {\n default: _withCtx(() => [$setup.selectedPathDetail ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createVNode(_component_el_descriptions, {\n column: 2,\n border: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: \"路径名称\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.name), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.algorithm.toUpperCase()), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"状态\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n type: $setup.getStatusType($setup.selectedPathDetail.status)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText($setup.selectedPathDetail.status)), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"距离\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.formatDistance($setup.selectedPathDetail.distance)), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"航点数\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.waypoint_count), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.flight_altitude) + \"m\", 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.flight_speed) + \"m/s\", 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"预计时间\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.selectedPathDetail.estimated_time) + \"分钟\", 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"创建时间\",\n span: 2\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.formatTime($setup.selectedPathDetail.created_at)), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }), $setup.selectedPathDetail.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_cache[12] || (_cache[12] = _createElementVNode(\"h4\", null, \"路径描述\", -1 /* HOISTED */)), _createElementVNode(\"p\", null, _toDisplayString($setup.selectedPathDetail.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $setup.selectedPathDetail.threat_zones_avoided && $setup.selectedPathDetail.threat_zones_avoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [_cache[13] || (_cache[13] = _createElementVNode(\"h4\", null, \"避开的威胁区域\", -1 /* HOISTED */)), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.selectedPathDetail.threat_zones_avoided, zoneId => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: zoneId,\n type: \"warning\",\n size: \"small\",\n class: \"zone-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(\" 威胁区 #\" + _toDisplayString(zoneId), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */);\n }), 128 /* KEYED_FRAGMENT */))])) : _createCommentVNode(\"v-if\", true)])) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_button","size","onClick","$setup","refreshPaths","loading","icon","_cache","type","showAllPaths","hideAllPaths","_hoisted_4","_component_el_row","gutter","_component_el_col","span","_component_el_select","filterStatus","$event","placeholder","onChange","filterPaths","_component_el_option","label","value","filterAlgorithm","_hoisted_5","_component_el_scrollbar","height","_Fragment","_renderList","filteredPaths","path","index","key","id","_normalizeClass","$props","selectedPaths","includes","_hoisted_6","_hoisted_7","_hoisted_8","style","_normalizeStyle","backgroundColor","color","_hoisted_9","_toDisplayString","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_10","_hoisted_11","formatDistance","distance","_hoisted_12","waypoint_count","_hoisted_13","algorithm","toUpperCase","_hoisted_14","togglePathVisibility","_component_el_dropdown","onCommand","handlePathAction","dropdown","_withCtx","_component_el_dropdown_menu","_component_el_dropdown_item","command","action","divided","_component_el_icon","_component_More","description","_hoisted_15","_hoisted_16","_hoisted_17","formatTime","created_at","_hoisted_18","_hoisted_19","length","_createCommentVNode","_component_el_dialog","detailDialogVisible","title","width","onClose","selectedPathDetail","_hoisted_20","_component_el_descriptions","column","border","_component_el_descriptions_item","flight_altitude","flight_speed","estimated_time","_hoisted_21","threat_zones_avoided","_hoisted_22","zoneId","_createBlock"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathHistoryPanel.vue"],"sourcesContent":["\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n {{ selectedPathDetail.name }}\r\n {{ selectedPathDetail.algorithm.toUpperCase() }}\r\n \r\n \r\n {{ getStatusText(selectedPathDetail.status) }}\r\n \r\n \r\n {{ formatDistance(selectedPathDetail.distance) }}\r\n {{ selectedPathDetail.waypoint_count }}\r\n {{ selectedPathDetail.flight_altitude }}m\r\n {{ selectedPathDetail.flight_speed }}m/s\r\n {{ selectedPathDetail.estimated_time }}分钟\r\n {{ formatTime(selectedPathDetail.created_at) }}\r\n \r\n \r\n
\r\n
路径描述
\r\n
{{ selectedPathDetail.description }}
\r\n
\r\n\r\n
0\">\r\n
避开的威胁区域
\r\n \r\n 威胁区 #{{ zoneId }}\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":";;EACOA,KAAK,EAAC;AAAoB;;EACxBA,KAAK,EAAC;AAAc;;EAElBA,KAAK,EAAC;AAAgB;;EA4BxBA,KAAK,EAAC;AAAgB;;EAgCtBA,KAAK,EAAC;AAAW;;EAQXA,KAAK,EAAC;AAAa;;EACjBA,KAAK,EAAC;AAAW;;EACfA,KAAK,EAAC;AAAW;;EAKdA,KAAK,EAAC;AAAM;;EASfA,KAAK,EAAC;AAAW;;EACdA,KAAK,EAAC;AAAU;;EAChBA,KAAK,EAAC;AAAW;;EACjBA,KAAK,EAAC;AAAW;;EAGtBA,KAAK,EAAC;AAAc;;;EAgCtBA,KAAK,EAAC;;;EAINA,KAAK,EAAC;AAAa;;EAChBA,KAAK,EAAC;AAAc;;EAQ7BA,KAAK,EAAC;AAAc;;EAClBA,KAAK,EAAC;AAAc;;;EAaMA,KAAK,EAAC;;;;EAiB9BA,KAAK,EAAC;;;;EAKNA,KAAK,EAAC;;;;;;;;;;;;;;;;;;;uBA9KjBC,mBAAA,CA4LM,OA5LNC,UA4LM,GA3LJC,mBAAA,CA4BM,OA5BNC,UA4BM,G,0BA3BJD,mBAAA,CAAe,YAAX,QAAM,sBACVA,mBAAA,CAyBM,OAzBNE,UAyBM,GAxBJC,YAAA,CAOYC,oBAAA;IANVC,IAAI,EAAC,OAAO;IACXC,OAAK,EAAEC,MAAA,CAAAC,YAAY;IACnBC,OAAO,EAAEF,MAAA,CAAAE,OAAO;IACjBC,IAAI,EAAC;;sBACN,MAEDC,MAAA,QAAAA,MAAA,O,iBAFC,MAED,E;;;6CACAR,YAAA,CAOYC,oBAAA;IANVC,IAAI,EAAC,OAAO;IACZO,IAAI,EAAC,SAAS;IACbN,OAAK,EAAEC,MAAA,CAAAM,YAAY;IACpBH,IAAI,EAAC;;sBACN,MAEDC,MAAA,QAAAA,MAAA,O,iBAFC,UAED,E;;;kCACAR,YAAA,CAOYC,oBAAA;IANVC,IAAI,EAAC,OAAO;IACZO,IAAI,EAAC,SAAS;IACbN,OAAK,EAAEC,MAAA,CAAAO,YAAY;IACpBJ,IAAI,EAAC;;sBACN,MAEDC,MAAA,QAAAA,MAAA,O,iBAFC,UAED,E;;;sCAIJX,mBAAA,CA8BM,OA9BNe,UA8BM,GA7BJZ,YAAA,CA4BSa,iBAAA;IA5BAC,MAAM,EAAE;EAAE;sBACjB,MAcS,CAdTd,YAAA,CAcSe,iBAAA;MAdAC,IAAI,EAAE;IAAE;wBACf,MAYY,CAZZhB,YAAA,CAYYiB,oBAAA;oBAXDb,MAAA,CAAAc,YAAY;mEAAZd,MAAA,CAAAc,YAAY,GAAAC,MAAA;QACrBC,WAAW,EAAC,MAAM;QAClBlB,IAAI,EAAC,OAAO;QACXmB,QAAM,EAAEjB,MAAA,CAAAkB;;0BAET,MAAmC,CAAnCtB,YAAA,CAAmCuB,oBAAA;UAAxBC,KAAK,EAAC,MAAM;UAACC,KAAK,EAAC;YAC9BzB,YAAA,CAAyCuB,oBAAA;UAA9BC,KAAK,EAAC,KAAK;UAACC,KAAK,EAAC;YAC7BzB,YAAA,CAA2CuB,oBAAA;UAAhCC,KAAK,EAAC,KAAK;UAACC,KAAK,EAAC;YAC7BzB,YAAA,CAA2CuB,oBAAA;UAAhCC,KAAK,EAAC,KAAK;UAACC,KAAK,EAAC;YAC7BzB,YAAA,CAAwCuB,oBAAA;UAA7BC,KAAK,EAAC,KAAK;UAACC,KAAK,EAAC;YAC7BzB,YAAA,CAA2CuB,oBAAA;UAAhCC,KAAK,EAAC,KAAK;UAACC,KAAK,EAAC;;;;;QAGjCzB,YAAA,CAWSe,iBAAA;MAXAC,IAAI,EAAE;IAAE;wBACf,MASY,CATZhB,YAAA,CASYiB,oBAAA;oBARDb,MAAA,CAAAsB,eAAe;mEAAftB,MAAA,CAAAsB,eAAe,GAAAP,MAAA;QACxBC,WAAW,EAAC,MAAM;QAClBlB,IAAI,EAAC,OAAO;QACXmB,QAAM,EAAEjB,MAAA,CAAAkB;;0BAET,MAAmC,CAAnCtB,YAAA,CAAmCuB,oBAAA;UAAxBC,KAAK,EAAC,MAAM;UAACC,KAAK,EAAC;YAC9BzB,YAAA,CAAwCuB,oBAAA;UAA7BC,KAAK,EAAC,MAAM;UAACC,KAAK,EAAC;YAC9BzB,YAAA,CAA2CuB,oBAAA;UAAhCC,KAAK,EAAC,MAAM;UAACC,KAAK,EAAC;;;;;;;uCAMtC9B,mBAAA,CAyEM,OAzENgC,UAyEM,GAxEJ3B,YAAA,CAuEe4B,uBAAA;IAvEDC,MAAM,EAAC;EAAO;sBAExB,MAAsC,E,kBADxClC,mBAAA,CAqEMmC,SAAA,QAAAC,WAAA,CApEoB3B,MAAA,CAAA4B,aAAa,GAA7BC,IAAI,EAAEC,KAAK;2BADrBvC,mBAAA,CAqEM;QAnEHwC,GAAG,EAAEF,IAAI,CAACG,EAAE;QACb1C,KAAK,EAAA2C,eAAA,EAAC,WAAW;UAAA,UACGC,MAAA,CAAAC,aAAa,CAACC,QAAQ,CAACP,IAAI,CAACG,EAAE;QAAA;UAElDvC,mBAAA,CAoDM,OApDN4C,UAoDM,GAnDJ5C,mBAAA,CAoBM,OApBN6C,UAoBM,GAnBJ7C,mBAAA,CAaM,OAbN8C,UAaM,GAZJ9C,mBAAA,CAGQ;QAFNH,KAAK,EAAC,iBAAiB;QACtBkD,KAAK,EAAAC,eAAA;UAAAC,eAAA,EAAqBb,IAAI,CAACc;QAAK;+BAEvClD,mBAAA,CAAyC,QAAzCmD,UAAyC,EAAAC,gBAAA,CAAnBhB,IAAI,CAACiB,IAAI,kBAC/BlD,YAAA,CAMSmD,iBAAA;QALN1C,IAAI,EAAEL,MAAA,CAAAgD,aAAa,CAACnB,IAAI,CAACoB,MAAM;QAChCnD,IAAI,EAAC,OAAO;QACZR,KAAK,EAAC;;0BAEN,MAAgC,C,kCAA7BU,MAAA,CAAAkD,aAAa,CAACrB,IAAI,CAACoB,MAAM,kB;;uDAGhCxD,mBAAA,CAIM,OAJN0D,WAIM,GAHJ1D,mBAAA,CAAiE,QAAjE2D,WAAiE,EAAAP,gBAAA,CAAvC7C,MAAA,CAAAqD,cAAc,CAACxB,IAAI,CAACyB,QAAQ,mBACtD7D,mBAAA,CAA0D,QAA1D8D,WAA0D,EAAAV,gBAAA,CAA/BhB,IAAI,CAAC2B,cAAc,IAAG,IAAE,iBACnD/D,mBAAA,CAAiE,QAAjEgE,WAAiE,EAAAZ,gBAAA,CAAtChB,IAAI,CAAC6B,SAAS,CAACC,WAAW,mB,KAGzDlE,mBAAA,CA6BM,OA7BNmE,WA6BM,GA5BJhE,YAAA,CAMYC,oBAAA;QALVC,IAAI,EAAC,OAAO;QACXC,OAAK,EAAAgB,MAAA,IAAEf,MAAA,CAAA6D,oBAAoB,CAAChC,IAAI;QAChCxB,IAAI,EAAE6B,MAAA,CAAAC,aAAa,CAACC,QAAQ,CAACP,IAAI,CAACG,EAAE;;0BAErC,MAAmD,C,kCAAhDE,MAAA,CAAAC,aAAa,CAACC,QAAQ,CAACP,IAAI,CAACG,EAAE,gC;;gEAEnCpC,YAAA,CAoBckE,sBAAA;QApBAC,SAAO,EAAE/D,MAAA,CAAAgE;MAAgB;QAI1BC,QAAQ,EAAAC,QAAA,CACjB,MAamB,CAbnBtE,YAAA,CAamBuE,2BAAA;4BAZjB,MAEmB,CAFnBvE,YAAA,CAEmBwE,2BAAA;YAFAC,OAAO;cAAAC,MAAA;cAAsBzC;YAAI;;8BAAI,MAExD,KAAAzB,MAAA,QAAAA,MAAA,O,iBAFwD,QAExD,E;;;4DACAR,YAAA,CAEmBwE,2BAAA;YAFAC,OAAO;cAAAC,MAAA;cAAsBzC;YAAI;;8BAAI,MAExD,KAAAzB,MAAA,QAAAA,MAAA,O,iBAFwD,QAExD,E;;;4DACAR,YAAA,CAEmBwE,2BAAA;YAFAC,OAAO;cAAAC,MAAA;cAAyBzC;YAAI;;8BAAI,MAE3D,KAAAzB,MAAA,SAAAA,MAAA,Q,iBAF2D,QAE3D,E;;;4DACAR,YAAA,CAEmBwE,2BAAA;YAFAC,OAAO;cAAAC,MAAA;cAAsBzC;YAAI;YAAI0C,OAAO,EAAP;;8BAAQ,MAEhE,KAAAnE,MAAA,SAAAA,MAAA,Q,iBAFgE,MAEhE,E;;;;;;0BAhBJ,MAEY,CAFZR,YAAA,CAEYC,oBAAA;UAFDC,IAAI,EAAC,OAAO;UAACO,IAAI,EAAC;;4BAC3B,MAA2B,CAA3BT,YAAA,CAA2B4E,kBAAA;8BAAlB,MAAQ,CAAR5E,YAAA,CAAQ6E,eAAA,E;;;;;;8DAsBW5C,IAAI,CAAC6C,WAAW,I,cAApDnF,mBAAA,CAEM,OAFNoF,WAEM,GADJlF,mBAAA,CAA6B,WAAAoD,gBAAA,CAAvBhB,IAAI,CAAC6C,WAAW,iB,wCAGxBjF,mBAAA,CAIM,OAJNmF,WAIM,GAHJnF,mBAAA,CAEO,QAFPoF,WAEO,EAAAhC,gBAAA,CADF7C,MAAA,CAAA8E,UAAU,CAACjD,IAAI,CAACkD,UAAU,kB;;;+BApEL/E,MAAA,CAAAE,OAAO,E,GA2EzCT,mBAAA,CAKM,OALNuF,WAKM,GAJJvF,mBAAA,CAGM,OAHNwF,WAGM,GAFJxF,mBAAA,CAA6C,cAAvC,IAAE,GAAAoD,gBAAA,CAAG7C,MAAA,CAAA4B,aAAa,CAACsD,MAAM,IAAG,MAAI,iBACtCzF,mBAAA,CAA4C,cAAtC,KAAG,GAAAoD,gBAAA,CAAGX,MAAA,CAAAC,aAAa,CAAC+C,MAAM,IAAG,IAAE,gB,KAIzCC,mBAAA,aAAgB,EAChBvF,YAAA,CAyCYwF,oBAAA;gBAxCDpF,MAAA,CAAAqF,mBAAmB;+DAAnBrF,MAAA,CAAAqF,mBAAmB,GAAAtE,MAAA;IAC5BuE,KAAK,EAAC,MAAM;IACZC,KAAK,EAAC,OAAO;IACZC,OAAK,EAAApF,MAAA,QAAAA,MAAA,MAAAW,MAAA,IAAEf,MAAA,CAAAyF,kBAAkB;;sBAE1B,MAkCM,CAlCKzF,MAAA,CAAAyF,kBAAkB,I,cAA7BlG,mBAAA,CAkCM,OAlCNmG,WAkCM,GAjCJ9F,YAAA,CAckB+F,0BAAA;MAdAC,MAAM,EAAE,CAAC;MAAEC,MAAM,EAAN;;wBAC3B,MAAuF,CAAvFjG,YAAA,CAAuFkG,+BAAA;QAAjE1E,KAAK,EAAC;MAAM;0BAAC,MAA6B,C,kCAA1BpB,MAAA,CAAAyF,kBAAkB,CAAC3C,IAAI,iB;;UAC7DlD,YAAA,CAAwGkG,+BAAA;QAAlF1E,KAAK,EAAC;MAAI;0BAAC,MAAgD,C,kCAA7CpB,MAAA,CAAAyF,kBAAkB,CAAC/B,SAAS,CAACC,WAAW,mB;;UAC5E/D,YAAA,CAIuBkG,+BAAA;QAJD1E,KAAK,EAAC;MAAI;0BAC9B,MAES,CAFTxB,YAAA,CAESmD,iBAAA;UAFA1C,IAAI,EAAEL,MAAA,CAAAgD,aAAa,CAAChD,MAAA,CAAAyF,kBAAkB,CAACxC,MAAM;;4BACpD,MAA8C,C,kCAA3CjD,MAAA,CAAAkD,aAAa,CAAClD,MAAA,CAAAyF,kBAAkB,CAACxC,MAAM,kB;;;;UAG9CrD,YAAA,CAAyGkG,+BAAA;QAAnF1E,KAAK,EAAC;MAAI;0BAAC,MAAiD,C,kCAA9CpB,MAAA,CAAAqD,cAAc,CAACrD,MAAA,CAAAyF,kBAAkB,CAACnC,QAAQ,kB;;UAC9E1D,YAAA,CAAgGkG,+BAAA;QAA1E1E,KAAK,EAAC;MAAK;0BAAC,MAAuC,C,kCAApCpB,MAAA,CAAAyF,kBAAkB,CAACjC,cAAc,iB;;UACtE5D,YAAA,CAAmGkG,+BAAA;QAA7E1E,KAAK,EAAC;MAAM;0BAAC,MAAwC,C,kCAArCpB,MAAA,CAAAyF,kBAAkB,CAACM,eAAe,IAAG,GAAC,gB;;UAC5EnG,YAAA,CAAkGkG,+BAAA;QAA5E1E,KAAK,EAAC;MAAM;0BAAC,MAAqC,C,kCAAlCpB,MAAA,CAAAyF,kBAAkB,CAACO,YAAY,IAAG,KAAG,gB;;UAC3EpG,YAAA,CAAmGkG,+BAAA;QAA7E1E,KAAK,EAAC;MAAM;0BAAC,MAAuC,C,kCAApCpB,MAAA,CAAAyF,kBAAkB,CAACQ,cAAc,IAAG,IAAE,gB;;UAC5ErG,YAAA,CAAmHkG,+BAAA;QAA7F1E,KAAK,EAAC,MAAM;QAAER,IAAI,EAAE;;0BAAG,MAA+C,C,kCAA5CZ,MAAA,CAAA8E,UAAU,CAAC9E,MAAA,CAAAyF,kBAAkB,CAACV,UAAU,kB;;;;QAG/C/E,MAAA,CAAAyF,kBAAkB,CAACf,WAAW,I,cAAzEnF,mBAAA,CAGM,OAHN2G,WAGM,G,4BAFJzG,mBAAA,CAAa,YAAT,MAAI,sBACRA,mBAAA,CAA2C,WAAAoD,gBAAA,CAArC7C,MAAA,CAAAyF,kBAAkB,CAACf,WAAW,iB,wCAGD1E,MAAA,CAAAyF,kBAAkB,CAACU,oBAAoB,IAAInG,MAAA,CAAAyF,kBAAkB,CAACU,oBAAoB,CAACjB,MAAM,Q,cAA9H3F,mBAAA,CAWM,OAXN6G,WAWM,G,4BAVJ3G,mBAAA,CAAgB,YAAZ,SAAO,uB,kBACXF,mBAAA,CAQSmC,SAAA,QAAAC,WAAA,CAPU3B,MAAA,CAAAyF,kBAAkB,CAACU,oBAAoB,EAAjDE,MAAM;2BADfC,YAAA,CAQSvD,iBAAA;QANNhB,GAAG,EAAEsE,MAAM;QACZhG,IAAI,EAAC,SAAS;QACdP,IAAI,EAAC,OAAO;QACZR,KAAK,EAAC;;0BACP,MACM,C,iBADN,QACM,GAAAuD,gBAAA,CAAGwD,MAAM,iB","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8f722571b9718826a1b5101f3008bcadf1b631f4aa29ded66413c731f1134cee.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8f722571b9718826a1b5101f3008bcadf1b631f4aa29ded66413c731f1134cee.json
new file mode 100644
index 00000000..8e8cf2be
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8f722571b9718826a1b5101f3008bcadf1b631f4aa29ded66413c731f1134cee.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 显示历史路径对话框\n const showHistoryDialog = () => {\n historyDialogVisible.value = true;\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`);\n if (response.data.success) {\n historyPaths.value = response.data.data;\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n ElMessage.error('获取历史路径失败');\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathData.path_points || [],\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: pathData.flight_altitude || 100,\n flightSpeed: pathData.flight_speed || 10,\n pathInfo: {\n algorithm: pathData.algorithm,\n distance: pathData.distance,\n duration: pathData.estimated_time,\n pointCount: pathData.waypoint_count,\n threatZonesAvoided: pathData.threat_zones_avoided || []\n }\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","showHistoryDialog","loadHistoryPaths","response","data","success","error","console","selectHistoryPath","loadHistoryPath","id","pathData","path_points","flight_altitude","flight_speed","distance","duration","estimated_time","pointCount","waypoint_count","threatZonesAvoided","threat_zones_avoided","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8ffb2d5796f2b7b4a7dc3a3b083f8e78bc96d506b5d113f29af2f9b70ed7ea06.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8ffb2d5796f2b7b4a7dc3a3b083f8e78bc96d506b5d113f29af2f9b70ed7ea06.json
new file mode 100644
index 00000000..6822661d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8ffb2d5796f2b7b4a7dc3a3b083f8e78bc96d506b5d113f29af2f9b70ed7ea06.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 测试API连接\n const testApiConnection = async () => {\n try {\n console.log('测试API连接:', `${API_URL}/api/path-planning/history/all`);\n const response = await fetch(`${API_URL}/api/path-planning/history/all`);\n console.log('API响应状态:', response.status);\n const data = await response.json();\n console.log('API响应数据:', data);\n return data;\n } catch (error) {\n console.error('API连接测试失败:', error);\n return null;\n }\n };\n\n // 显示历史路径对话框\n const showHistoryDialog = async () => {\n historyDialogVisible.value = true;\n\n // 先测试API连接\n console.log('当前API_URL:', API_URL);\n const testResult = await testApiConnection();\n if (!testResult) {\n ElMessage.error('无法连接到后端服务,请确保后端服务已启动');\n return;\n }\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n console.log('正在获取历史路径列表...');\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`, config);\n console.log('历史路径API响应:', response.data);\n if (response.data.success) {\n historyPaths.value = response.data.data || [];\n console.log(`成功加载${historyPaths.value.length}条历史路径`);\n } else {\n ElMessage.error(response.data.message || '获取历史路径失败');\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n if (error.response) {\n console.error('响应状态:', error.response.status);\n console.error('响应数据:', error.response.data);\n ElMessage.error(`获取历史路径失败: ${error.response.data?.message || error.response.statusText}`);\n } else if (error.request) {\n console.error('请求失败,无响应');\n ElMessage.error('网络请求失败,请检查网络连接');\n } else {\n ElMessage.error('获取历史路径失败: ' + error.message);\n }\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`, config);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && lng >= -180 && lng <= 180 && lat >= -90 && lat <= 90) {\n return {\n lng: lng,\n lat: lat,\n altitude: parseFloat(point.altitude) || parseFloat(pathData.flight_altitude) || 100\n };\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat) && lng >= -180 && lng <= 180 && lat >= -90 && lat <= 90) {\n return {\n lng: lng,\n lat: lat,\n altitude: parseFloat(point[2]) || parseFloat(pathData.flight_altitude) || 100\n };\n }\n }\n console.warn(`跳过无效路径点 (索引${index}):`, point);\n return null;\n }).filter(point => point !== null);\n }\n if (!pathPoints || pathPoints.length === 0) {\n ElMessage.error('历史路径不包含有效的路径点数据');\n return;\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: parseFloat(pathData.flight_altitude) || 100,\n flightSpeed: parseFloat(pathData.flight_speed) || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n testApiConnection,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","testApiConnection","console","log","response","fetch","data","json","error","showHistoryDialog","testResult","loadHistoryPaths","token","localStorage","getItem","config","headers","success","length","message","statusText","request","selectHistoryPath","loadHistoryPath","id","pathData","path_points","JSON","parse","e","isArray","map","point","index","lng","undefined","lat","parseFloat","isNaN","flight_altitude","warn","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/902882db279da9e325925b02c4dcd12b0da9989f0d5f77357907d04068d4ccdd.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/902882db279da9e325925b02c4dcd12b0da9989f0d5f77357907d04068d4ccdd.json
new file mode 100644
index 00000000..7317ad80
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/902882db279da9e325925b02c4dcd12b0da9989f0d5f77357907d04068d4ccdd.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n overlay.setOptions({\n clickable: isClickable\n });\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: activePanel.value === 'threatZone'\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/908d358b392305c9213355f632efbfc12838056e6436c070f5b7da58e2b3eb3c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/908d358b392305c9213355f632efbfc12838056e6436c070f5b7da58e2b3eb3c.json
new file mode 100644
index 00000000..a158aba4
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/908d358b392305c9213355f632efbfc12838056e6436c070f5b7da58e2b3eb3c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/911d5be3e3ae5154c1b339724d27d386aae5a740f10316174d2be5c8cb49413f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/911d5be3e3ae5154c1b339724d27d386aae5a740f10316174d2be5c8cb49413f.json
new file mode 100644
index 00000000..50550e89
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/911d5be3e3ae5154c1b339724d27d386aae5a740f10316174d2be5c8cb49413f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 测试API连接\n const testApiConnection = async () => {\n try {\n console.log('测试API连接:', `${API_URL}/api/path-planning/history/all`);\n const response = await fetch(`${API_URL}/api/path-planning/history/all`);\n console.log('API响应状态:', response.status);\n const data = await response.json();\n console.log('API响应数据:', data);\n return data;\n } catch (error) {\n console.error('API连接测试失败:', error);\n return null;\n }\n };\n\n // 显示历史路径对话框\n const showHistoryDialog = async () => {\n historyDialogVisible.value = true;\n\n // 先测试API连接\n console.log('当前API_URL:', API_URL);\n const testResult = await testApiConnection();\n if (!testResult) {\n ElMessage.error('无法连接到后端服务,请确保后端服务已启动');\n return;\n }\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n console.log('正在获取历史路径列表...');\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`, config);\n console.log('历史路径API响应:', response.data);\n if (response.data.success) {\n historyPaths.value = response.data.data || [];\n console.log(`成功加载${historyPaths.value.length}条历史路径`);\n } else {\n ElMessage.error(response.data.message || '获取历史路径失败');\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n if (error.response) {\n console.error('响应状态:', error.response.status);\n console.error('响应数据:', error.response.data);\n ElMessage.error(`获取历史路径失败: ${error.response.data?.message || error.response.statusText}`);\n } else if (error.request) {\n console.error('请求失败,无响应');\n ElMessage.error('网络请求失败,请检查网络连接');\n } else {\n ElMessage.error('获取历史路径失败: ' + error.message);\n }\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`, config);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return {\n lng: parseFloat(point.lng),\n lat: parseFloat(point.lat),\n altitude: point.altitude || pathData.flight_altitude || 100\n };\n } else if (Array.isArray(point) && point.length >= 2) {\n return {\n lng: parseFloat(point[0]),\n lat: parseFloat(point[1]),\n altitude: point[2] || pathData.flight_altitude || 100\n };\n } else {\n console.warn(`路径点格式不正确 (索引${index}):`, point);\n return null;\n }\n }).filter(point => point !== null);\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: pathData.flight_altitude || 100,\n flightSpeed: pathData.flight_speed || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","testApiConnection","console","log","response","fetch","data","json","error","showHistoryDialog","testResult","loadHistoryPaths","token","localStorage","getItem","config","headers","success","length","message","statusText","request","selectHistoryPath","loadHistoryPath","id","pathData","path_points","JSON","parse","e","isArray","map","point","index","lng","undefined","lat","parseFloat","flight_altitude","warn","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/91940e04372732b9468d9f06c900209652bf2aa34681cc5ff47265ddcc70add2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/91940e04372732b9468d9f06c900209652bf2aa34681cc5ff47265ddcc70add2.json
new file mode 100644
index 00000000..ab161673
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/91940e04372732b9468d9f06c900209652bf2aa34681cc5ff47265ddcc70add2.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || isNaN(zone.geometry.center[0]) || isNaN(zone.geometry.center[1]) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && !isNaN(point[0]) && !isNaN(point[1]));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => isNaN(val))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Circle","LngLat","validPath","every","Polygon","some","val","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","Number","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/919c27625e85237411b5010280b428b4e2957143f2490c8602820564c7741691.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/919c27625e85237411b5010280b428b4e2957143f2490c8602820564c7741691.json
new file mode 100644
index 00000000..f5ab3d93
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/919c27625e85237411b5010280b428b4e2957143f2490c8602820564c7741691.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/91db34bd7a3d96afd958efb605aea753b9434839859ea17e215a13c40357cf2c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/91db34bd7a3d96afd958efb605aea753b9434839859ea17e215a13c40357cf2c.json
new file mode 100644
index 00000000..6b66bf55
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/91db34bd7a3d96afd958efb605aea753b9434839859ea17e215a13c40357cf2c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/958094fe6f506924846f86994fa05ad60e8d45f89fd0d048096399916ce5a9e8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/958094fe6f506924846f86994fa05ad60e8d45f89fd0d048096399916ce5a9e8.json
new file mode 100644
index 00000000..a7e36218
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/958094fe6f506924846f86994fa05ad60e8d45f89fd0d048096399916ce5a9e8.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/964b70d460bc302f4a75f92f9124639051013f34e45b1842d60f8ebabd9c2dd3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/964b70d460bc302f4a75f92f9124639051013f34e45b1842d60f8ebabd9c2dd3.json
new file mode 100644
index 00000000..2490c6f7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/964b70d460bc302f4a75f92f9124639051013f34e45b1842d60f8ebabd9c2dd3.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n\n // 创建路径点标记\n pathPoints.value.forEach((point, index) => {\n const isStart = index === 0;\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n\n // 添加标记到地图\n mapInstance.value.add(pathMarkers.value);\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return [point.lng, point.lat];\n } else if (Array.isArray(point) && point.length >= 2) {\n return [point[0], point[1]];\n } else {\n console.warn('路径点格式不正确:', point);\n return null;\n }\n }).filter(coord => coord !== null);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isStart","parse","Array","isArray","undefined","coord","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9976d1bfc27c63f656e587d91a2e1c11e695e76cbc00b5f47c05f3a228995467.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9976d1bfc27c63f656e587d91a2e1c11e695e76cbc00b5f47c05f3a228995467.json
new file mode 100644
index 00000000..d4e8321b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9976d1bfc27c63f656e587d91a2e1c11e695e76cbc00b5f47c05f3a228995467.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区原始数据:', threatZones.value);\n console.log('威胁区详细信息:');\n threatZones.value.forEach((zone, index) => {\n console.log(`威胁区 ${index + 1}:`, {\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n geometry: zone.geometry,\n description: zone.description\n });\n });\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => {\n const mappedZone = {\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n };\n console.log('映射威胁区:', mappedZone);\n return mappedZone;\n }) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","geometry_type","geometry_data","startPoint","slice","planningData","algorithm","mappedZone","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isNaN","isFinite","Number","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9b71cab085443bb30367c5d928d6f006f28fe8e9473007779e37ac11de81649e.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9b71cab085443bb30367c5d928d6f006f28fe8e9473007779e37ac11de81649e.json
new file mode 100644
index 00000000..3400a3b2
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9b71cab085443bb30367c5d928d6f006f28fe8e9473007779e37ac11de81649e.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9cf8932123c6b2188c21d4ef7a14996dfb956980be1a1664fb2446d5981606a1.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9cf8932123c6b2188c21d4ef7a14996dfb956980be1a1664fb2446d5981606a1.json
new file mode 100644
index 00000000..38d8d666
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9cf8932123c6b2188c21d4ef7a14996dfb956980be1a1664fb2446d5981606a1.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9d7ed474890c36ff520fb822206dfad9b221e59240607dce6ee2421ba7a3516e.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9d7ed474890c36ff520fb822206dfad9b221e59240607dce6ee2421ba7a3516e.json
new file mode 100644
index 00000000..1ca81345
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9d7ed474890c36ff520fb822206dfad9b221e59240607dce6ee2421ba7a3516e.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1b2ffba1812dd32fff73cd76d98c5b4d861fca0fd8a9b55f585bd5a269b0ead.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1b2ffba1812dd32fff73cd76d98c5b4d861fca0fd8a9b55f585bd5a269b0ead.json
new file mode 100644
index 00000000..80cc4ca9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1b2ffba1812dd32fff73cd76d98c5b4d861fca0fd8a9b55f585bd5a269b0ead.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a66ec012743188a659f715a09dcabd160f082714243bde79d245086d9bedd03c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a66ec012743188a659f715a09dcabd160f082714243bde79d245086d9bedd03c.json
new file mode 100644
index 00000000..84fc28ad
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a66ec012743188a659f715a09dcabd160f082714243bde79d245086d9bedd03c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a6dd59b5f2f51d1ee81e282d9522212e0ae161f5ef8ca53b0e8694ff4ec2dd61.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a6dd59b5f2f51d1ee81e282d9522212e0ae161f5ef8ca53b0e8694ff4ec2dd61.json
new file mode 100644
index 00000000..11ff9c76
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a6dd59b5f2f51d1ee81e282d9522212e0ae161f5ef8ca53b0e8694ff4ec2dd61.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","validPoints","isNaN","isFinite","Number","coord","extendError","southwest","northeast","boundsGetError","useFallbackCenter","lngSpan","abs","latSpan","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a70e945b639c6b80a12f347dfcce65398796c9ca7c3061c45e4095a8297808f9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a70e945b639c6b80a12f347dfcce65398796c9ca7c3061c45e4095a8297808f9.json
new file mode 100644
index 00000000..85e682ae
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a70e945b639c6b80a12f347dfcce65398796c9ca7c3061c45e4095a8297808f9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a92ec74c31b920dd060a06216abf5ada0163f486e10aafed60c6cc0f42af4b41.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a92ec74c31b920dd060a06216abf5ada0163f486e10aafed60c6cc0f42af4b41.json
new file mode 100644
index 00000000..264b0d89
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a92ec74c31b920dd060a06216abf5ada0163f486e10aafed60c6cc0f42af4b41.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a94c012519ff763552d66ba0137ac2b7de1d9236a179edb4c4a34decb67595f5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a94c012519ff763552d66ba0137ac2b7de1d9236a179edb4c4a34decb67595f5.json
new file mode 100644
index 00000000..a7bb0189
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a94c012519ff763552d66ba0137ac2b7de1d9236a179edb4c4a34decb67595f5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a9c2dc7b204d4765fdf1a1c0735caed6826e3c9663446c4034729cf890ea5046.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a9c2dc7b204d4765fdf1a1c0735caed6826e3c9663446c4034729cf890ea5046.json
new file mode 100644
index 00000000..fdbbd01e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a9c2dc7b204d4765fdf1a1c0735caed6826e3c9663446c4034729cf890ea5046.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a9ce78336126df8009aa785dd3ef1daa0e7e24ee6047863a294c28ce315d7c8c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a9ce78336126df8009aa785dd3ef1daa0e7e24ee6047863a294c28ce315d7c8c.json
new file mode 100644
index 00000000..88e0800a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a9ce78336126df8009aa785dd3ef1daa0e7e24ee6047863a294c28ce315d7c8c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ab271aceed537ba201a3d13a09677e15b8bbc501a9a975419cce866e7af9d07c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ab271aceed537ba201a3d13a09677e15b8bbc501a9a975419cce866e7af9d07c.json
new file mode 100644
index 00000000..e43f37b1
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ab271aceed537ba201a3d13a09677e15b8bbc501a9a975419cce866e7af9d07c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_path_history_panel","_ctx","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/af0803fd07662c9fc2f69e057ff7d06d8dcec3a9a71042d18eb7ca205a188957.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/af0803fd07662c9fc2f69e057ff7d06d8dcec3a9a71042d18eb7ca205a188957.json
new file mode 100644
index 00000000..3256d337
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/af0803fd07662c9fc2f69e057ff7d06d8dcec3a9a71042d18eb7ca205a188957.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b4ecbf5dce77e7670c0635dfde11fa48bbbc24bb63dd2caefc38f455e8d31bdf.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b4ecbf5dce77e7670c0635dfde11fa48bbbc24bb63dd2caefc38f455e8d31bdf.json
new file mode 100644
index 00000000..f6f176c5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b4ecbf5dce77e7670c0635dfde11fa48bbbc24bb63dd2caefc38f455e8d31bdf.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b9f909e8cfcc60dfdefefba01fbc727ec33d354d6f131513fc923a627fa86ac3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b9f909e8cfcc60dfdefefba01fbc727ec33d354d6f131513fc923a627fa86ac3.json
new file mode 100644
index 00000000..60c2c918
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b9f909e8cfcc60dfdefefba01fbc727ec33d354d6f131513fc923a627fa86ac3.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/baf4b2adc9a0de9584bb6073ae6fe7ec3a478e37d842ee6181613b837a41edb2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/baf4b2adc9a0de9584bb6073ae6fe7ec3a478e37d842ee6181613b837a41edb2.json
new file mode 100644
index 00000000..c4d34a82
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/baf4b2adc9a0de9584bb6073ae6fe7ec3a478e37d842ee6181613b837a41edb2.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat)) {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 检查边界是否有效\n const southwest = bounds.getSouthWest();\n const northeast = bounds.getNorthEast();\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n if (isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat)) {\n console.error('计算的边界包含NaN值');\n ElMessage.error('路径边界计算失败');\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n // fallback: 使用第一个点居中显示\n if (pathPoints.value.length > 0) {\n const firstPoint = pathPoints.value[0];\n mapInstance.value.setCenter([firstPoint.lng, firstPoint.lat]);\n mapInstance.value.setZoom(12);\n }\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n\n // 创建路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n\n // 添加标记到地图\n mapInstance.value.add(pathMarkers.value);\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","isNaN","southwest","northeast","boundsError","firstPoint","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isStart","parse","Array","isArray","undefined","parseFloat","coord","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bbaf0ee0e9abbf842982b0a358e124945ea9c30bab42cce4ea1ab6dc5ae545c9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bbaf0ee0e9abbf842982b0a358e124945ea9c30bab42cce4ea1ab6dc5ae545c9.json
new file mode 100644
index 00000000..f1c9bb8d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bbaf0ee0e9abbf842982b0a358e124945ea9c30bab42cce4ea1ab6dc5ae545c9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n } else {\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n console.log('非威胁区模式,事件将传播到地图');\n // 不调用stopPropagation,让事件继续传播\n return true; // 允许事件继续传播\n }\n };\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","clickable","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bc105dd1d4edee718d584c7c65fd2a6f3e4a1a41a3a45a104cf3e08d131a0c75.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bc105dd1d4edee718d584c7c65fd2a6f3e4a1a41a3a45a104cf3e08d131a0c75.json
new file mode 100644
index 00000000..3c059931
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bc105dd1d4edee718d584c7c65fd2a6f3e4a1a41a3a45a104cf3e08d131a0c75.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, computed } from 'vue';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport { Refresh, View, Hide, More } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathHistoryPanel',\n components: {\n Refresh,\n View,\n Hide,\n More\n },\n props: {\n selectedPaths: {\n type: Array,\n default: () => []\n }\n },\n emits: ['show-path', 'hide-path', 'show-all-paths', 'hide-all-paths', 'center-to-path', 'duplicate-path', 'update-selected-paths'],\n setup(props, {\n emit\n }) {\n const loading = ref(false);\n const paths = ref([]);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const detailDialogVisible = ref(false);\n const selectedPathDetail = ref(null);\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的路径\n const filteredPaths = computed(() => {\n let result = [...paths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 获取历史路径\n const fetchPaths = async () => {\n loading.value = true;\n try {\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`);\n if (response.data.success) {\n paths.value = response.data.data;\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n ElMessage.error('获取历史路径失败');\n } finally {\n loading.value = false;\n }\n };\n\n // 刷新路径\n const refreshPaths = () => {\n fetchPaths();\n };\n\n // 筛选路径\n const filterPaths = () => {\n // 筛选逻辑已在computed中处理\n };\n\n // 显示所有路径\n const showAllPaths = () => {\n const allPathIds = filteredPaths.value.map(path => path.id);\n emit('show-all-paths', filteredPaths.value);\n emit('update-selected-paths', allPathIds);\n };\n\n // 隐藏所有路径\n const hideAllPaths = () => {\n emit('hide-all-paths');\n emit('update-selected-paths', []);\n };\n\n // 切换路径可见性\n const togglePathVisibility = path => {\n if (props.selectedPaths.includes(path.id)) {\n emit('hide-path', path);\n const newSelectedPaths = props.selectedPaths.filter(id => id !== path.id);\n emit('update-selected-paths', newSelectedPaths);\n } else {\n emit('show-path', path);\n const newSelectedPaths = [...props.selectedPaths, path.id];\n emit('update-selected-paths', newSelectedPaths);\n }\n };\n\n // 处理路径操作\n const handlePathAction = async command => {\n const {\n action,\n path\n } = command;\n switch (action) {\n case 'detail':\n try {\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`);\n if (response.data.success) {\n selectedPathDetail.value = response.data.data;\n detailDialogVisible.value = true;\n }\n } catch (error) {\n console.error('获取路径详情失败:', error);\n ElMessage.error('获取路径详情失败');\n }\n break;\n case 'center':\n emit('center-to-path', path);\n break;\n case 'duplicate':\n emit('duplicate-path', path);\n break;\n case 'delete':\n ElMessageBox.confirm('确定要删除这条路径吗?', '确认删除', {\n type: 'warning'\n }).then(async () => {\n try {\n await axios.delete(`${API_URL}/api/path-planning/${path.id}`);\n ElMessage.success('路径删除成功');\n fetchPaths();\n // 如果删除的路径正在显示,从选中列表中移除\n if (props.selectedPaths.includes(path.id)) {\n const newSelectedPaths = props.selectedPaths.filter(id => id !== path.id);\n emit('update-selected-paths', newSelectedPaths);\n emit('hide-path', path);\n }\n } catch (error) {\n console.error('删除路径失败:', error);\n ElMessage.error('删除路径失败');\n }\n }).catch(() => {\n // 取消删除\n });\n break;\n }\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n onMounted(() => {\n fetchPaths();\n });\n return {\n loading,\n paths,\n filteredPaths,\n filterStatus,\n filterAlgorithm,\n detailDialogVisible,\n selectedPathDetail,\n refreshPaths,\n filterPaths,\n showAllPaths,\n hideAllPaths,\n togglePathVisibility,\n handlePathAction,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","computed","ElMessage","ElMessageBox","Refresh","View","Hide","More","axios","name","components","props","selectedPaths","type","Array","default","emits","setup","emit","loading","paths","filterStatus","filterAlgorithm","detailDialogVisible","selectedPathDetail","API_URL","process","env","VUE_APP_API_URL","filteredPaths","result","value","filter","path","status","algorithm","fetchPaths","response","get","data","success","error","console","refreshPaths","filterPaths","showAllPaths","allPathIds","map","id","hideAllPaths","togglePathVisibility","includes","newSelectedPaths","handlePathAction","command","action","confirm","then","delete","catch","formatDistance","distance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathHistoryPanel.vue"],"sourcesContent":["\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n {{ selectedPathDetail.name }}\r\n {{ selectedPathDetail.algorithm.toUpperCase() }}\r\n \r\n \r\n {{ getStatusText(selectedPathDetail.status) }}\r\n \r\n \r\n {{ formatDistance(selectedPathDetail.distance) }}\r\n {{ selectedPathDetail.waypoint_count }}\r\n {{ selectedPathDetail.flight_altitude }}m\r\n {{ selectedPathDetail.flight_speed }}m/s\r\n {{ selectedPathDetail.estimated_time }}分钟\r\n {{ formatTime(selectedPathDetail.created_at) }}\r\n \r\n \r\n
\r\n
路径描述
\r\n
{{ selectedPathDetail.description }}
\r\n
\r\n\r\n
0\">\r\n
避开的威胁区域
\r\n \r\n 威胁区 #{{ zoneId }}\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bd9f0c7f45639b3c1f8da4e235a3d06010a0757a17b74950e31370ca5be0a6d9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bd9f0c7f45639b3c1f8da4e235a3d06010a0757a17b74950e31370ca5be0a6d9.json
new file mode 100644
index 00000000..e4d16a91
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bd9f0c7f45639b3c1f8da4e235a3d06010a0757a17b74950e31370ca5be0a6d9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c013d930221e2e78de4147c36b0d625e8c51ca302adc0e4b8b4c54b474424b5f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c013d930221e2e78de4147c36b0d625e8c51ca302adc0e4b8b4c54b474424b5f.json
new file mode 100644
index 00000000..66549718
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c013d930221e2e78de4147c36b0d625e8c51ca302adc0e4b8b4c54b474424b5f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat)) {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 检查边界是否有效\n const southwest = bounds.getSouthWest();\n const northeast = bounds.getNorthEast();\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n if (isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat)) {\n console.error('计算的边界包含NaN值');\n ElMessage.error('路径边界计算失败');\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n // fallback: 使用第一个点居中显示\n if (pathPoints.value.length > 0) {\n const firstPoint = pathPoints.value[0];\n mapInstance.value.setCenter([firstPoint.lng, firstPoint.lat]);\n mapInstance.value.setZoom(12);\n }\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n\n // 创建路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n\n // 添加标记到地图\n mapInstance.value.add(pathMarkers.value);\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","isNaN","southwest","northeast","boundsError","firstPoint","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isStart","parse","Array","isArray","undefined","parseFloat","coord","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c026b3c6082563c6ad3a773f3854664cefb16a1d1719785b2d91592a560540a8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c026b3c6082563c6ad3a773f3854664cefb16a1d1719785b2d91592a560540a8.json
new file mode 100644
index 00000000..61732cc7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c026b3c6082563c6ad3a773f3854664cefb16a1d1719785b2d91592a560540a8.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed, onMounted } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { FolderOpened } from '@element-plus/icons-vue';\nimport axios from 'axios';\nexport default {\n name: 'PathPlanningPanel',\n components: {\n FolderOpened\n },\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone', 'update-planning-algorithm', 'update-flight-altitude', 'update-flight-speed', 'load-history-path'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 历史路径相关状态\n const historyDialogVisible = ref(false);\n const historyLoading = ref(false);\n const historyPaths = ref([]);\n const selectedHistoryPath = ref(null);\n const filterStatus = ref('');\n const filterAlgorithm = ref('');\n const API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\n\n // 筛选后的历史路径\n const filteredHistoryPaths = computed(() => {\n let result = [...historyPaths.value];\n if (filterStatus.value) {\n result = result.filter(path => path.status === filterStatus.value);\n }\n if (filterAlgorithm.value) {\n result = result.filter(path => path.algorithm === filterAlgorithm.value);\n }\n return result;\n });\n\n // 测试API连接\n const testApiConnection = async () => {\n try {\n console.log('测试API连接:', `${API_URL}/api/path-planning/history/all`);\n const response = await fetch(`${API_URL}/api/path-planning/history/all`);\n console.log('API响应状态:', response.status);\n const data = await response.json();\n console.log('API响应数据:', data);\n return data;\n } catch (error) {\n console.error('API连接测试失败:', error);\n return null;\n }\n };\n\n // 显示历史路径对话框\n const showHistoryDialog = async () => {\n historyDialogVisible.value = true;\n\n // 先测试API连接\n console.log('当前API_URL:', API_URL);\n const testResult = await testApiConnection();\n if (!testResult) {\n ElMessage.error('无法连接到后端服务,请确保后端服务已启动');\n return;\n }\n loadHistoryPaths();\n };\n\n // 加载历史路径列表\n const loadHistoryPaths = async () => {\n historyLoading.value = true;\n try {\n console.log('正在获取历史路径列表...');\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n const response = await axios.get(`${API_URL}/api/path-planning/history/all`, config);\n console.log('历史路径API响应:', response.data);\n if (response.data.success) {\n historyPaths.value = response.data.data || [];\n console.log(`成功加载${historyPaths.value.length}条历史路径`);\n } else {\n ElMessage.error(response.data.message || '获取历史路径失败');\n }\n } catch (error) {\n console.error('获取历史路径失败:', error);\n if (error.response) {\n console.error('响应状态:', error.response.status);\n console.error('响应数据:', error.response.data);\n ElMessage.error(`获取历史路径失败: ${error.response.data?.message || error.response.statusText}`);\n } else if (error.request) {\n console.error('请求失败,无响应');\n ElMessage.error('网络请求失败,请检查网络连接');\n } else {\n ElMessage.error('获取历史路径失败: ' + error.message);\n }\n } finally {\n historyLoading.value = false;\n }\n };\n\n // 选择历史路径\n const selectHistoryPath = path => {\n selectedHistoryPath.value = path;\n };\n\n // 加载历史路径到当前规划\n const loadHistoryPath = async path => {\n try {\n console.log('正在加载历史路径:', path);\n\n // 添加认证头(如果需要)\n const token = localStorage.getItem('token');\n const config = {};\n if (token) {\n config.headers = {\n 'Authorization': `Bearer ${token}`\n };\n }\n\n // 获取完整的路径详情(包含路径点)\n const response = await axios.get(`${API_URL}/api/path-planning/${path.id}`, config);\n console.log('API响应:', response.data);\n if (response.data.success) {\n const pathData = response.data.data;\n\n // 解析路径点数据\n let pathPoints = [];\n if (pathData.path_points) {\n // 如果path_points是字符串,需要解析\n if (typeof pathData.path_points === 'string') {\n try {\n pathPoints = JSON.parse(pathData.path_points);\n } catch (e) {\n console.error('解析路径点失败:', e);\n pathPoints = [];\n }\n } else {\n pathPoints = pathData.path_points;\n }\n }\n\n // 确保路径点格式正确\n if (Array.isArray(pathPoints) && pathPoints.length > 0) {\n // 检查路径点格式并转换\n pathPoints = pathPoints.map((point, index) => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return {\n lng: parseFloat(point.lng),\n lat: parseFloat(point.lat),\n altitude: point.altitude || pathData.flight_altitude || 100\n };\n } else if (Array.isArray(point) && point.length >= 2) {\n return {\n lng: parseFloat(point[0]),\n lat: parseFloat(point[1]),\n altitude: point[2] || pathData.flight_altitude || 100\n };\n } else {\n console.warn(`路径点格式不正确 (索引${index}):`, point);\n return null;\n }\n }).filter(point => point !== null);\n }\n console.log('处理后的路径点:', pathPoints);\n\n // 创建路径信息\n const pathInfo = {\n algorithm: pathData.algorithm || 'astar',\n distance: pathData.distance || 0,\n duration: pathData.estimated_time || 0,\n pointCount: pathPoints.length,\n threatZonesAvoided: pathData.threat_zones_avoided || [],\n path: pathData.smoothed_path_points || pathData.path_points || pathPoints\n };\n\n // 通过事件通知父组件加载路径\n emit('load-history-path', {\n pathPoints: pathPoints,\n algorithm: pathData.algorithm || 'astar',\n flightAltitude: parseFloat(pathData.flight_altitude) || 100,\n flightSpeed: parseFloat(pathData.flight_speed) || 10,\n pathInfo: pathInfo\n });\n historyDialogVisible.value = false;\n ElMessage.success(`已加载历史路径: ${pathData.name}`);\n } else {\n ElMessage.error(response.data.message || '获取路径详情失败');\n }\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败: ' + (error.response?.data?.message || error.message));\n }\n };\n\n // 确认加载选中的路径\n const confirmLoadPath = () => {\n if (selectedHistoryPath.value) {\n loadHistoryPath(selectedHistoryPath.value);\n }\n };\n\n // 重置历史对话框\n const resetHistoryDialog = () => {\n selectedHistoryPath.value = null;\n filterStatus.value = '';\n filterAlgorithm.value = '';\n };\n\n // 清空当前路径\n const clearCurrentPath = () => {\n emit('clear-all');\n };\n\n // 格式化距离\n const formatDistance = distance => {\n if (distance >= 1000) {\n return `${(distance / 1000).toFixed(2)}km`;\n }\n return `${Math.round(distance)}m`;\n };\n\n // 格式化时间\n const formatTime = time => {\n return new Date(time).toLocaleString('zh-CN');\n };\n\n // 获取状态类型\n const getStatusType = status => {\n const statusMap = {\n planned: 'info',\n executing: 'warning',\n completed: 'success',\n failed: 'danger',\n cancelled: 'info'\n };\n return statusMap[status] || 'info';\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n planned: '已规划',\n executing: '执行中',\n completed: '已完成',\n failed: '已失败',\n cancelled: '已取消'\n };\n return statusMap[status] || status;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName,\n // 历史路径相关\n historyDialogVisible,\n historyLoading,\n historyPaths,\n selectedHistoryPath,\n filterStatus,\n filterAlgorithm,\n filteredHistoryPaths,\n showHistoryDialog,\n loadHistoryPaths,\n testApiConnection,\n selectHistoryPath,\n loadHistoryPath,\n confirmLoadPath,\n resetHistoryDialog,\n clearCurrentPath,\n formatDistance,\n formatTime,\n getStatusType,\n getStatusText\n };\n }\n};","map":{"version":3,"names":["ref","computed","onMounted","ElMessage","FolderOpened","axios","name","components","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","historyDialogVisible","historyLoading","historyPaths","selectedHistoryPath","filterStatus","filterAlgorithm","API_URL","process","env","VUE_APP_API_URL","filteredHistoryPaths","result","filter","path","status","testApiConnection","console","log","response","fetch","data","json","error","showHistoryDialog","testResult","loadHistoryPaths","token","localStorage","getItem","config","headers","success","length","message","statusText","request","selectHistoryPath","loadHistoryPath","id","pathData","path_points","JSON","parse","e","isArray","map","point","index","lng","undefined","lat","parseFloat","flight_altitude","warn","distance","duration","estimated_time","pointCount","threatZonesAvoided","threat_zones_avoided","smoothed_path_points","flight_speed","confirmLoadPath","resetHistoryDialog","clearCurrentPath","formatDistance","toFixed","Math","round","formatTime","time","Date","toLocaleString","getStatusType","statusMap","planned","executing","completed","failed","cancelled","getStatusText"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAsXA,SAASA,GAAG,EAAEC,QAAQ,EAAEC,SAAQ,QAAS,KAAI;AAC7C,SAASC,SAAQ,QAAS,cAAa;AACvC,SAASC,YAAW,QAAS,yBAAwB;AACrD,OAAOC,KAAI,MAAO,OAAM;AAExB,eAAe;EACbC,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVH;EACF,CAAC;EACDI,KAAK,EAAE;IACLC,MAAM,EAAE;MACNC,IAAI,EAAEC,KAAK;MACXC,OAAO,EAAEA,CAAA,KAAM;IACjB,CAAC;IACDC,eAAe,EAAE;MACfH,IAAI,EAAE,CAACI,MAAM,EAAEC,MAAM,CAAC;MACtBH,OAAO,EAAE;IACX,CAAC;IACDI,UAAU,EAAE;MACVN,IAAI,EAAEC,KAAK;MACXC,OAAO,EAAEA,CAAA,KAAM;IACjB,CAAC;IACDK,OAAO,EAAE;MACPP,IAAI,EAAEQ,OAAO;MACbN,OAAO,EAAE;IACX,CAAC;IACDO,iBAAiB,EAAE;MACjBT,IAAI,EAAEK,MAAM;MACZH,OAAO,EAAE;IACX,CAAC;IACDQ,cAAc,EAAE;MACdV,IAAI,EAAEI,MAAM;MACZF,OAAO,EAAE;IACX,CAAC;IACDS,WAAW,EAAE;MACXX,IAAI,EAAEI,MAAM;MACZF,OAAO,EAAE;IACX,CAAC;IACDU,QAAQ,EAAE;MACRZ,IAAI,EAAEa,MAAM;MACZX,OAAO,EAAE;IACX;EACF,CAAC;EACDY,KAAK,EAAE,CACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,mBAAkB,CACnB;EACDC,KAAKA,CAACjB,KAAK,EAAE;IAAEkB;EAAK,CAAC,EAAE;IACrB;IACA,MAAMC,OAAM,GAAI1B,QAAQ,CAAC;MACvB2B,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACK,eAAe;MAChCgB,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,cAAc,EAAEI,KAAK;IAC5C,CAAC;IAED,MAAMC,SAAQ,GAAI9B,QAAQ,CAAC;MACzB2B,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACW,iBAAiB;MAClCU,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,2BAA2B,EAAEI,KAAK;IACzD,CAAC;IAED,MAAME,QAAO,GAAI/B,QAAQ,CAAC;MACxB2B,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACY,cAAc;MAC/BS,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,wBAAwB,EAAEI,KAAK;IACtD,CAAC;IAED,MAAMG,KAAI,GAAIhC,QAAQ,CAAC;MACrB2B,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACa,WAAW;MAC5BQ,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,qBAAqB,EAAEI,KAAK;IACnD,CAAC;;IAED;IACA,MAAMI,aAAY,GAAKJ,KAAK,IAAK;MAC/BJ,IAAI,CAAC,cAAc,EAAEI,KAAK;IAC5B;IAEA,MAAMK,iBAAgB,GAAKL,KAAK,IAAK;MACnCJ,IAAI,CAAC,2BAA2B,EAAEI,KAAK;IACzC;IAEA,MAAMM,gBAAe,GAAKN,KAAK,IAAK;MAClCJ,IAAI,CAAC,wBAAwB,EAAEI,KAAK;IACtC;IAEA,MAAMO,aAAY,GAAKP,KAAK,IAAK;MAC/BJ,IAAI,CAAC,qBAAqB,EAAEI,KAAK;IACnC;;IAEA;IACA,MAAMQ,gBAAe,GAAKP,SAAS,IAAK;MACtC,MAAMQ,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAACR,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMa,oBAAmB,GAAI5C,GAAG,CAAC,KAAK;IACtC,MAAM6C,cAAa,GAAI7C,GAAG,CAAC,KAAK;IAChC,MAAM8C,YAAW,GAAI9C,GAAG,CAAC,EAAE;IAC3B,MAAM+C,mBAAkB,GAAI/C,GAAG,CAAC,IAAI;IACpC,MAAMgD,YAAW,GAAIhD,GAAG,CAAC,EAAE;IAC3B,MAAMiD,eAAc,GAAIjD,GAAG,CAAC,EAAE;IAE9B,MAAMkD,OAAM,GAAIC,OAAO,CAACC,GAAG,CAACC,eAAc,IAAK,uBAAsB;;IAErE;IACA,MAAMC,oBAAmB,GAAIrD,QAAQ,CAAC,MAAM;MAC1C,IAAIsD,MAAK,GAAI,CAAC,GAAGT,YAAY,CAAChB,KAAK;MAEnC,IAAIkB,YAAY,CAAClB,KAAK,EAAE;QACtByB,MAAK,GAAIA,MAAM,CAACC,MAAM,CAACC,IAAG,IAAKA,IAAI,CAACC,MAAK,KAAMV,YAAY,CAAClB,KAAK;MACnE;MAEA,IAAImB,eAAe,CAACnB,KAAK,EAAE;QACzByB,MAAK,GAAIA,MAAM,CAACC,MAAM,CAACC,IAAG,IAAKA,IAAI,CAAC1B,SAAQ,KAAMkB,eAAe,CAACnB,KAAK;MACzE;MAEA,OAAOyB,MAAK;IACd,CAAC;;IAED;IACA,MAAMI,iBAAgB,GAAI,MAAAA,CAAA,KAAY;MACpC,IAAI;QACFC,OAAO,CAACC,GAAG,CAAC,UAAU,EAAE,GAAGX,OAAO,gCAAgC;QAClE,MAAMY,QAAO,GAAI,MAAMC,KAAK,CAAC,GAAGb,OAAO,gCAAgC;QACvEU,OAAO,CAACC,GAAG,CAAC,UAAU,EAAEC,QAAQ,CAACJ,MAAM;QACvC,MAAMM,IAAG,GAAI,MAAMF,QAAQ,CAACG,IAAI,CAAC;QACjCL,OAAO,CAACC,GAAG,CAAC,UAAU,EAAEG,IAAI;QAC5B,OAAOA,IAAG;MACZ,EAAE,OAAOE,KAAK,EAAE;QACdN,OAAO,CAACM,KAAK,CAAC,YAAY,EAAEA,KAAK;QACjC,OAAO,IAAG;MACZ;IACF;;IAEA;IACA,MAAMC,iBAAgB,GAAI,MAAAA,CAAA,KAAY;MACpCvB,oBAAoB,CAACd,KAAI,GAAI,IAAG;;MAEhC;MACA8B,OAAO,CAACC,GAAG,CAAC,YAAY,EAAEX,OAAO;MACjC,MAAMkB,UAAS,GAAI,MAAMT,iBAAiB,CAAC;MAC3C,IAAI,CAACS,UAAU,EAAE;QACfjE,SAAS,CAAC+D,KAAK,CAAC,sBAAsB;QACtC;MACF;MAEAG,gBAAgB,CAAC;IACnB;;IAEA;IACA,MAAMA,gBAAe,GAAI,MAAAA,CAAA,KAAY;MACnCxB,cAAc,CAACf,KAAI,GAAI,IAAG;MAC1B,IAAI;QACF8B,OAAO,CAACC,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMS,KAAI,GAAIC,YAAY,CAACC,OAAO,CAAC,OAAO;QAC1C,MAAMC,MAAK,GAAI,CAAC;QAChB,IAAIH,KAAK,EAAE;UACTG,MAAM,CAACC,OAAM,GAAI;YACf,eAAe,EAAE,UAAUJ,KAAK;UAClC;QACF;QAEA,MAAMR,QAAO,GAAI,MAAMzD,KAAK,CAACuB,GAAG,CAAC,GAAGsB,OAAO,gCAAgC,EAAEuB,MAAM;QACnFb,OAAO,CAACC,GAAG,CAAC,YAAY,EAAEC,QAAQ,CAACE,IAAI;QAEvC,IAAIF,QAAQ,CAACE,IAAI,CAACW,OAAO,EAAE;UACzB7B,YAAY,CAAChB,KAAI,GAAIgC,QAAQ,CAACE,IAAI,CAACA,IAAG,IAAK,EAAC;UAC5CJ,OAAO,CAACC,GAAG,CAAC,OAAOf,YAAY,CAAChB,KAAK,CAAC8C,MAAM,OAAO;QACrD,OAAO;UACLzE,SAAS,CAAC+D,KAAK,CAACJ,QAAQ,CAACE,IAAI,CAACa,OAAM,IAAK,UAAU;QACrD;MACF,EAAE,OAAOX,KAAK,EAAE;QACdN,OAAO,CAACM,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChC,IAAIA,KAAK,CAACJ,QAAQ,EAAE;UAClBF,OAAO,CAACM,KAAK,CAAC,OAAO,EAAEA,KAAK,CAACJ,QAAQ,CAACJ,MAAM;UAC5CE,OAAO,CAACM,KAAK,CAAC,OAAO,EAAEA,KAAK,CAACJ,QAAQ,CAACE,IAAI;UAC1C7D,SAAS,CAAC+D,KAAK,CAAC,aAAaA,KAAK,CAACJ,QAAQ,CAACE,IAAI,EAAEa,OAAM,IAAKX,KAAK,CAACJ,QAAQ,CAACgB,UAAU,EAAE;QAC1F,OAAO,IAAIZ,KAAK,CAACa,OAAO,EAAE;UACxBnB,OAAO,CAACM,KAAK,CAAC,UAAU;UACxB/D,SAAS,CAAC+D,KAAK,CAAC,gBAAgB;QAClC,OAAO;UACL/D,SAAS,CAAC+D,KAAK,CAAC,YAAW,GAAIA,KAAK,CAACW,OAAO;QAC9C;MACF,UAAU;QACRhC,cAAc,CAACf,KAAI,GAAI,KAAI;MAC7B;IACF;;IAEA;IACA,MAAMkD,iBAAgB,GAAKvB,IAAI,IAAK;MAClCV,mBAAmB,CAACjB,KAAI,GAAI2B,IAAG;IACjC;;IAEA;IACA,MAAMwB,eAAc,GAAI,MAAOxB,IAAI,IAAK;MACtC,IAAI;QACFG,OAAO,CAACC,GAAG,CAAC,WAAW,EAAEJ,IAAI;;QAE7B;QACA,MAAMa,KAAI,GAAIC,YAAY,CAACC,OAAO,CAAC,OAAO;QAC1C,MAAMC,MAAK,GAAI,CAAC;QAChB,IAAIH,KAAK,EAAE;UACTG,MAAM,CAACC,OAAM,GAAI;YACf,eAAe,EAAE,UAAUJ,KAAK;UAClC;QACF;;QAEA;QACA,MAAMR,QAAO,GAAI,MAAMzD,KAAK,CAACuB,GAAG,CAAC,GAAGsB,OAAO,sBAAsBO,IAAI,CAACyB,EAAE,EAAE,EAAET,MAAM;QAElFb,OAAO,CAACC,GAAG,CAAC,QAAQ,EAAEC,QAAQ,CAACE,IAAI;QAEnC,IAAIF,QAAQ,CAACE,IAAI,CAACW,OAAO,EAAE;UACzB,MAAMQ,QAAO,GAAIrB,QAAQ,CAACE,IAAI,CAACA,IAAG;;UAElC;UACA,IAAIhD,UAAS,GAAI,EAAC;UAClB,IAAImE,QAAQ,CAACC,WAAW,EAAE;YACxB;YACA,IAAI,OAAOD,QAAQ,CAACC,WAAU,KAAM,QAAQ,EAAE;cAC5C,IAAI;gBACFpE,UAAS,GAAIqE,IAAI,CAACC,KAAK,CAACH,QAAQ,CAACC,WAAW;cAC9C,EAAE,OAAOG,CAAC,EAAE;gBACV3B,OAAO,CAACM,KAAK,CAAC,UAAU,EAAEqB,CAAC;gBAC3BvE,UAAS,GAAI,EAAC;cAChB;YACF,OAAO;cACLA,UAAS,GAAImE,QAAQ,CAACC,WAAU;YAClC;UACF;;UAEA;UACA,IAAIzE,KAAK,CAAC6E,OAAO,CAACxE,UAAU,KAAKA,UAAU,CAAC4D,MAAK,GAAI,CAAC,EAAE;YACtD;YACA5D,UAAS,GAAIA,UAAU,CAACyE,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,KAAK;cAC5C,IAAI,OAAOD,KAAI,KAAM,QAAO,IAAKA,KAAK,CAACE,GAAE,KAAMC,SAAQ,IAAKH,KAAK,CAACI,GAAE,KAAMD,SAAS,EAAE;gBACnF,OAAO;kBACLD,GAAG,EAAEG,UAAU,CAACL,KAAK,CAACE,GAAG,CAAC;kBAC1BE,GAAG,EAAEC,UAAU,CAACL,KAAK,CAACI,GAAG,CAAC;kBAC1B9D,QAAQ,EAAE0D,KAAK,CAAC1D,QAAO,IAAKmD,QAAQ,CAACa,eAAc,IAAK;gBAC1D;cACF,OAAO,IAAIrF,KAAK,CAAC6E,OAAO,CAACE,KAAK,KAAKA,KAAK,CAACd,MAAK,IAAK,CAAC,EAAE;gBACpD,OAAO;kBACLgB,GAAG,EAAEG,UAAU,CAACL,KAAK,CAAC,CAAC,CAAC,CAAC;kBACzBI,GAAG,EAAEC,UAAU,CAACL,KAAK,CAAC,CAAC,CAAC,CAAC;kBACzB1D,QAAQ,EAAE0D,KAAK,CAAC,CAAC,KAAKP,QAAQ,CAACa,eAAc,IAAK;gBACpD;cACF,OAAO;gBACLpC,OAAO,CAACqC,IAAI,CAAC,eAAeN,KAAK,IAAI,EAAED,KAAK;gBAC5C,OAAO,IAAG;cACZ;YACF,CAAC,CAAC,CAAClC,MAAM,CAACkC,KAAI,IAAKA,KAAI,KAAM,IAAI;UACnC;UAEA9B,OAAO,CAACC,GAAG,CAAC,UAAU,EAAE7C,UAAU;;UAElC;UACA,MAAMM,QAAO,GAAI;YACfS,SAAS,EAAEoD,QAAQ,CAACpD,SAAQ,IAAK,OAAO;YACxCmE,QAAQ,EAAEf,QAAQ,CAACe,QAAO,IAAK,CAAC;YAChCC,QAAQ,EAAEhB,QAAQ,CAACiB,cAAa,IAAK,CAAC;YACtCC,UAAU,EAAErF,UAAU,CAAC4D,MAAM;YAC7B0B,kBAAkB,EAAEnB,QAAQ,CAACoB,oBAAmB,IAAK,EAAE;YACvD9C,IAAI,EAAE0B,QAAQ,CAACqB,oBAAmB,IAAKrB,QAAQ,CAACC,WAAU,IAAKpE;UACjE;;UAEA;UACAU,IAAI,CAAC,mBAAmB,EAAE;YACxBV,UAAU,EAAEA,UAAU;YACtBe,SAAS,EAAEoD,QAAQ,CAACpD,SAAQ,IAAK,OAAO;YACxCX,cAAc,EAAE2E,UAAU,CAACZ,QAAQ,CAACa,eAAe,KAAK,GAAG;YAC3D3E,WAAW,EAAE0E,UAAU,CAACZ,QAAQ,CAACsB,YAAY,KAAK,EAAE;YACpDnF,QAAQ,EAAEA;UACZ,CAAC;UAEDsB,oBAAoB,CAACd,KAAI,GAAI,KAAI;UACjC3B,SAAS,CAACwE,OAAO,CAAC,YAAYQ,QAAQ,CAAC7E,IAAI,EAAE;QAC/C,OAAO;UACLH,SAAS,CAAC+D,KAAK,CAACJ,QAAQ,CAACE,IAAI,CAACa,OAAM,IAAK,UAAU;QACrD;MACF,EAAE,OAAOX,KAAK,EAAE;QACdN,OAAO,CAACM,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChC/D,SAAS,CAAC+D,KAAK,CAAC,YAAW,IAAKA,KAAK,CAACJ,QAAQ,EAAEE,IAAI,EAAEa,OAAM,IAAKX,KAAK,CAACW,OAAO,CAAC;MACjF;IACF;;IAEA;IACA,MAAM6B,eAAc,GAAIA,CAAA,KAAM;MAC5B,IAAI3D,mBAAmB,CAACjB,KAAK,EAAE;QAC7BmD,eAAe,CAAClC,mBAAmB,CAACjB,KAAK;MAC3C;IACF;;IAEA;IACA,MAAM6E,kBAAiB,GAAIA,CAAA,KAAM;MAC/B5D,mBAAmB,CAACjB,KAAI,GAAI,IAAG;MAC/BkB,YAAY,CAAClB,KAAI,GAAI,EAAC;MACtBmB,eAAe,CAACnB,KAAI,GAAI,EAAC;IAC3B;;IAEA;IACA,MAAM8E,gBAAe,GAAIA,CAAA,KAAM;MAC7BlF,IAAI,CAAC,WAAW;IAClB;;IAEA;IACA,MAAMmF,cAAa,GAAKX,QAAQ,IAAK;MACnC,IAAIA,QAAO,IAAK,IAAI,EAAE;QACpB,OAAO,GAAG,CAACA,QAAO,GAAI,IAAI,EAAEY,OAAO,CAAC,CAAC,CAAC,IAAG;MAC3C;MACA,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACd,QAAQ,CAAC,GAAE;IAClC;;IAEA;IACA,MAAMe,UAAS,GAAKC,IAAI,IAAK;MAC3B,OAAO,IAAIC,IAAI,CAACD,IAAI,CAAC,CAACE,cAAc,CAAC,OAAO;IAC9C;;IAEA;IACA,MAAMC,aAAY,GAAK3D,MAAM,IAAK;MAChC,MAAM4D,SAAQ,GAAI;QAChBC,OAAO,EAAE,MAAM;QACfC,SAAS,EAAE,SAAS;QACpBC,SAAS,EAAE,SAAS;QACpBC,MAAM,EAAE,QAAQ;QAChBC,SAAS,EAAE;MACb;MACA,OAAOL,SAAS,CAAC5D,MAAM,KAAK,MAAK;IACnC;;IAEA;IACA,MAAMkE,aAAY,GAAKlE,MAAM,IAAK;MAChC,MAAM4D,SAAQ,GAAI;QAChBC,OAAO,EAAE,KAAK;QACdC,SAAS,EAAE,KAAK;QAChBC,SAAS,EAAE,KAAK;QAChBC,MAAM,EAAE,KAAK;QACbC,SAAS,EAAE;MACb;MACA,OAAOL,SAAS,CAAC5D,MAAM,KAAKA,MAAK;IACnC;IAEA,OAAO;MACL/B,OAAO;MACPI,SAAS;MACTC,QAAQ;MACRC,KAAK;MACLC,aAAa;MACbC,iBAAiB;MACjBC,gBAAgB;MAChBC,aAAa;MACbC,gBAAgB;MAEhB;MACAM,oBAAoB;MACpBC,cAAc;MACdC,YAAY;MACZC,mBAAmB;MACnBC,YAAY;MACZC,eAAe;MACfK,oBAAoB;MACpBa,iBAAiB;MACjBE,gBAAgB;MAChBV,iBAAiB;MACjBqB,iBAAiB;MACjBC,eAAe;MACfyB,eAAe;MACfC,kBAAkB;MAClBC,gBAAgB;MAChBC,cAAc;MACdI,UAAU;MACVI,aAAa;MACbO;IACF;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c21104108effe6450913a92e7e8f7a020e537ae292cf3262bffb05488e078cca.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c21104108effe6450913a92e7e8f7a020e537ae292cf3262bffb05488e078cca.json
new file mode 100644
index 00000000..dd8618a7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c21104108effe6450913a92e7e8f7a020e537ae292cf3262bffb05488e078cca.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c5f8bc8bb410b729c7386777f712968581c6bd2f560e3000577315ae7f9d21ec.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c5f8bc8bb410b729c7386777f712968581c6bd2f560e3000577315ae7f9d21ec.json
new file mode 100644
index 00000000..ae680d07
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c5f8bc8bb410b729c7386777f712968581c6bd2f560e3000577315ae7f9d21ec.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat)) {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 检查边界是否有效\n const southwest = bounds.getSouthWest();\n const northeast = bounds.getNorthEast();\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n if (isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat)) {\n console.error('计算的边界包含NaN值');\n ElMessage.error('路径边界计算失败');\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n // fallback: 使用第一个点居中显示\n if (pathPoints.value.length > 0) {\n const firstPoint = pathPoints.value[0];\n mapInstance.value.setCenter([firstPoint.lng, firstPoint.lat]);\n mapInstance.value.setZoom(12);\n }\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","isNaN","southwest","northeast","boundsError","firstPoint","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","coord","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c743e8ac790a14aaaad170dd4f659113427f6e077d1de1db42271106dd9b8cb2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c743e8ac790a14aaaad170dd4f659113427f6e077d1de1db42271106dd9b8cb2.json
new file mode 100644
index 00000000..ace2b9c5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c743e8ac790a14aaaad170dd4f659113427f6e077d1de1db42271106dd9b8cb2.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c7481fd9ae6ce4bb74b389e3791ddfcd254b5989ca53a83f542676c2c830ddb8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c7481fd9ae6ce4bb74b389e3791ddfcd254b5989ca53a83f542676c2c830ddb8.json
new file mode 100644
index 00000000..3023054d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c7481fd9ae6ce4bb74b389e3791ddfcd254b5989ca53a83f542676c2c830ddb8.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c83de2c97a7825d7809af2355ea831426f4edeb2e9a50389cba266d0219238f5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c83de2c97a7825d7809af2355ea831426f4edeb2e9a50389cba266d0219238f5.json
new file mode 100644
index 00000000..24194abf
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c83de2c97a7825d7809af2355ea831426f4edeb2e9a50389cba266d0219238f5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ca61cc2d3b1693aa2772a46bd194e1bf8819382f30481f483f540213ffdd6d30.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ca61cc2d3b1693aa2772a46bd194e1bf8819382f30481f483f540213ffdd6d30.json
new file mode 100644
index 00000000..683b5d46
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ca61cc2d3b1693aa2772a46bd194e1bf8819382f30481f483f540213ffdd6d30.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cb15149554e354f012a9d892a919d13b77c2db4ec892e607000e7042fd64fae2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cb15149554e354f012a9d892a919d13b77c2db4ec892e607000e7042fd64fae2.json
new file mode 100644
index 00000000..66408c23
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cb15149554e354f012a9d892a919d13b77c2db4ec892e607000e7042fd64fae2.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cc501dc529fe3774c1a3dd6fd703902d12b566c4e1d9f291f18c1b78c4315e10.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cc501dc529fe3774c1a3dd6fd703902d12b566c4e1d9f291f18c1b78c4315e10.json
new file mode 100644
index 00000000..0fb5f0e2
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cc501dc529fe3774c1a3dd6fd703902d12b566c4e1d9f291f18c1b78c4315e10.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cd21b8e76602b9951bd0d94d5a94a83709878fd6a38b8557882a97fc8cb0e8ef.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cd21b8e76602b9951bd0d94d5a94a83709878fd6a38b8557882a97fc8cb0e8ef.json
new file mode 100644
index 00000000..56615902
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cd21b8e76602b9951bd0d94d5a94a83709878fd6a38b8557882a97fc8cb0e8ef.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning') {\n // 路径规划 - 直接添加路径点,无需检查addMode\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 额外处理:在非威胁区模式下,尝试移除所有事件监听器\n if (!isClickable && overlay.off) {\n overlay.off('click');\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n };\n\n // 保存事件处理函数的引用,以便后续移除\n overlay._threatZoneClickHandler = handleZoneClick;\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","off","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","_threatZoneClickHandler","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cd46cedf7197dabf54ea900193dc4b065aa2d0f26c7e8be44079b0552715c9c7.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cd46cedf7197dabf54ea900193dc4b065aa2d0f26c7e8be44079b0552715c9c7.json
new file mode 100644
index 00000000..1edbe161
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cd46cedf7197dabf54ea900193dc4b065aa2d0f26c7e8be44079b0552715c9c7.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1,\n clickable: isClickable // 在非威胁区模式下完全禁用点击\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域交互状态已更新,可点击: ${isClickable},当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n } else {\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n console.log('非威胁区模式,事件将传播到地图');\n // 不调用stopPropagation,让事件继续传播\n return true; // 允许事件继续传播\n }\n };\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","clickable","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cdf3830aeeb7ab60b760ee8acfca3360ef4354f6d716d0dcef44757a90366f90.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cdf3830aeeb7ab60b760ee8acfca3360ef4354f6d716d0dcef44757a90366f90.json
new file mode 100644
index 00000000..94699783
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/cdf3830aeeb7ab60b760ee8acfca3360ef4354f6d716d0dcef44757a90366f90.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 详细验证圆形数据\n console.log('圆形威胁区详细检查:');\n console.log(' 整个几何对象:', zone.geometry);\n console.log(' center:', zone.geometry.center);\n console.log(' center类型:', typeof zone.geometry.center);\n console.log(' center是数组:', Array.isArray(zone.geometry.center));\n if (Array.isArray(zone.geometry.center)) {\n console.log(' center长度:', zone.geometry.center.length);\n console.log(' center[0]:', zone.geometry.center[0], '类型:', typeof zone.geometry.center[0]);\n console.log(' center[1]:', zone.geometry.center[1], '类型:', typeof zone.geometry.center[1]);\n console.log(' center[0] == null:', zone.geometry.center[0] == null);\n console.log(' center[1] == null:', zone.geometry.center[1] == null);\n console.log(' center[0] isNaN:', isNaN(zone.geometry.center[0]));\n console.log(' center[1] isNaN:', isNaN(zone.geometry.center[1]));\n console.log(' Number(center[0]) isNaN:', isNaN(Number(zone.geometry.center[0])));\n console.log(' Number(center[1]) isNaN:', isNaN(Number(zone.geometry.center[1])));\n }\n console.log(' radius:', zone.geometry.radius, '类型:', typeof zone.geometry.radius);\n console.log(' radius > 0:', zone.geometry.radius > 0);\n\n // 逐个检查验证条件\n const checks = {\n centerExists: !!zone.geometry.center,\n isArray: Array.isArray(zone.geometry.center),\n hasLength2: zone.geometry.center && zone.geometry.center.length === 2,\n lng0NotNull: zone.geometry.center && zone.geometry.center[0] != null,\n lat1NotNull: zone.geometry.center && zone.geometry.center[1] != null,\n lng0Valid: zone.geometry.center && !isNaN(Number(zone.geometry.center[0])),\n lat1Valid: zone.geometry.center && !isNaN(Number(zone.geometry.center[1])),\n radiusExists: !!zone.geometry.radius,\n radiusPositive: zone.geometry.radius > 0\n };\n console.log(' 验证结果:', checks);\n const isValid = checks.centerExists && checks.isArray && checks.hasLength2 && checks.lng0NotNull && checks.lat1NotNull && checks.lng0Valid && checks.lat1Valid && checks.radiusExists && checks.radiusPositive;\n if (!isValid) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n console.error('验证失败的条件:', Object.entries(checks).filter(([key, value]) => !value));\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","checks","centerExists","hasLength2","lng0NotNull","lat1NotNull","lng0Valid","lat1Valid","radiusExists","radiusPositive","isValid","Object","entries","filter","key","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","values","keys","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ce51cb265398384f40b95e46936993219631c07e0a9b9d0cf1c117174f950f6f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ce51cb265398384f40b95e46936993219631c07e0a9b9d0cf1c117174f950f6f.json
new file mode 100644
index 00000000..77a212bf
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ce51cb265398384f40b95e46936993219631c07e0a9b9d0cf1c117174f950f6f.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1881075df8115fce215220f7cf0f9670b64c5dd16cad9f73c70cdd7ab87213d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1881075df8115fce215220f7cf0f9670b64c5dd16cad9f73c70cdd7ab87213d.json
new file mode 100644
index 00000000..d3e7b7c8
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1881075df8115fce215220f7cf0f9670b64c5dd16cad9f73c70cdd7ab87213d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d188fbaffc2ac166176f79bc99e04e6eb1d8b18347eae5773343a3a7963bcfe7.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d188fbaffc2ac166176f79bc99e04e6eb1d8b18347eae5773343a3a7963bcfe7.json
new file mode 100644
index 00000000..63ce39b7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d188fbaffc2ac166176f79bc99e04e6eb1d8b18347eae5773343a3a7963bcfe7.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, onUnmounted, provide } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage } from 'element-plus';\nimport AMapLoader from '@amap/amap-jsapi-loader';\nexport default {\n name: 'SharedMap',\n props: {\n mode: {\n type: String,\n default: 'default',\n // 'default', 'threatZone', 'pathPlanning'\n validator: value => ['default', 'threatZone', 'pathPlanning'].includes(value)\n }\n },\n emits: ['map-loaded', 'map-click'],\n setup(props, {\n emit\n }) {\n const store = useStore();\n const mapInstance = ref(null);\n const mapLoaded = ref(false);\n const viewMode = ref('3D');\n const currentMapStyle = ref('normal');\n const overlayLayers = ref(['buildings']);\n const layerInstances = ref({});\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 从环境变量或后端获取地图API密钥\n const getApiKey = () => {\n // 在生产环境中,应该从后端获取API密钥,这里暂时使用硬编码的API密钥\n return '492dc9daf4eae7cab678c0f3efed8198';\n };\n const initMap = async () => {\n const container = document.getElementById('sharedMap');\n if (!container) {\n console.error('地图容器未找到');\n ElMessage.error('地图容器未找到');\n return;\n }\n try {\n console.log('开始加载高德地图...');\n\n // 使用AMapLoader加载高德地图API\n const AMap = await AMapLoader.load({\n key: getApiKey(),\n version: '2.0',\n plugins: ['AMap.Scale', 'AMap.ToolBar', 'AMap.ControlBar', 'AMap.InfoWindow', 'AMap.Marker', 'AMap.Polyline', 'AMap.Polygon', 'AMap.Circle', 'AMap.MouseTool', 'AMap.HawkEye', 'AMap.MapType', 'AMap.Geolocation', 'AMap.TileLayer', 'AMap.TileLayer.Satellite', 'AMap.TileLayer.Traffic', 'AMap.TileLayer.RoadNet', 'AMap.Buildings', 'AMap.DistrictLayer', 'AMap.Weather', 'AMap.Driving', 'AMap.PolyEditor']\n });\n console.log('高德地图 API 加载成功');\n\n // 创建地图实例\n mapInstance.value = new AMap.Map('sharedMap', {\n zoom: 15,\n center: [113.0434, 28.2592],\n // 精确定位到指定坐标\n viewMode: viewMode.value,\n pitch: viewMode.value === '3D' ? 45 : 0,\n rotation: 0,\n mapStyle: 'amap://styles/normal',\n features: ['bg', 'road', 'building', 'point'],\n resizeEnable: true,\n dragEnable: true,\n zoomEnable: true,\n doubleClickZoom: true,\n keyboardEnable: true,\n jogEnable: true,\n scrollWheel: true,\n touchZoom: true\n });\n console.log('地图实例创建成功');\n\n // 添加地图控件\n const toolbar = new AMap.ToolBar({\n position: {\n top: '10px',\n right: '10px'\n }\n });\n const scale = new AMap.Scale({\n position: {\n bottom: '10px',\n right: '10px'\n }\n });\n\n // 添加3D控制条,用于控制3D视图的旋转、倾斜等\n const controlBar = new AMap.ControlBar({\n position: {\n top: '80px',\n right: '10px'\n },\n showZoomBar: false,\n showControlButton: true\n });\n mapInstance.value.addControl(toolbar);\n mapInstance.value.addControl(scale);\n mapInstance.value.addControl(controlBar);\n\n // 添加地图事件监听\n mapInstance.value.on('click', e => {\n emit('map-click', e);\n });\n mapInstance.value.on('complete', () => {\n console.log('地图加载完成');\n mapLoaded.value = true;\n emit('map-loaded', mapInstance.value);\n try {\n // 初始化不同的图层实例,但不会立即添加到地图\n // 预初始化交通图层\n layerInstances.value.traffic = new window.AMap.TileLayer.Traffic({\n zIndex: 10,\n opacity: 0.8\n });\n\n // 预初始化卫星图层\n layerInstances.value.satellite = new window.AMap.TileLayer.Satellite({\n zIndex: 9\n });\n\n // 预初始化建筑图层\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 11,\n heightFactor: viewMode.value === '3D' ? 1 : 0.6\n });\n\n // 初始化图层显示\n updateOverlayLayers();\n\n // 初始化天气服务\n try {\n // 创建天气查询服务\n const weather = new window.AMap.Weather();\n layerInstances.value.weatherService = weather;\n\n // 查询默认城市天气作为示例\n weather.getLive('北京市', function (err, data) {\n if (!err) {\n console.log('天气服务初始化成功:', data);\n }\n });\n } catch (weatherError) {\n console.warn('天气服务初始化失败:', weatherError);\n }\n } catch (layerError) {\n console.error('图层初始化失败:', layerError);\n }\n console.log('地图初始化完成');\n });\n } catch (error) {\n console.error('地图加载失败:', error);\n ElMessage.error(`地图加载失败: ${error.message}`);\n }\n };\n\n // 添加主动获取无人机数据的方法\n\n // 修改地图样式切换功能\n const changeMapStyle = style => {\n if (!mapInstance.value) return;\n try {\n currentMapStyle.value = style;\n switch (style) {\n case 'satellite':\n // 使用卫星图层\n if (!layerInstances.value.satellite) {\n layerInstances.value.satellite = new window.AMap.TileLayer.Satellite({\n zIndex: 9\n });\n }\n\n // 添加卫星图层\n mapInstance.value.add(layerInstances.value.satellite);\n\n // 确保其他已启用的图层在卫星图层之上显示\n updateOverlayLayers();\n break;\n case 'dark':\n // 移除卫星图层\n if (layerInstances.value.satellite) {\n mapInstance.value.remove(layerInstances.value.satellite);\n }\n // 设置暗色地图\n mapInstance.value.setMapStyle('amap://styles/dark');\n\n // 确保其他已启用的图层在暗色地图上正确显示\n updateOverlayLayers();\n break;\n default:\n // 移除卫星图层\n if (layerInstances.value.satellite) {\n mapInstance.value.remove(layerInstances.value.satellite);\n }\n // 设置默认地图样式\n mapInstance.value.setMapStyle('amap://styles/normal');\n\n // 确保其他已启用的图层在标准地图上正确显示\n updateOverlayLayers();\n }\n console.log(`已切换到${style}地图样式`);\n } catch (error) {\n console.error('切换地图样式失败:', error);\n ElMessage.error(`切换地图样式失败: ${error.message}`);\n }\n };\n\n // 切换视图模式\n const changeViewMode = mode => {\n if (!mapInstance.value) return;\n try {\n // 设置视图模式 - 使用正确的API方法\n if (mode === '3D') {\n // 设置为3D视图\n mapInstance.value.setViewMode('3D');\n mapInstance.value.setPitch(45); // 设置俯仰角(3D效果)\n console.log('已切换到3D视图模式');\n } else {\n // 设置为2D视图\n mapInstance.value.setViewMode('2D');\n mapInstance.value.setPitch(0); // 平面视图\n console.log('已切换到2D视图模式');\n }\n\n // 重新加载建筑层以确保它在视图模式变化后正常显示\n if (overlayLayers.value.includes('buildings')) {\n if (layerInstances.value.buildings) {\n mapInstance.value.remove(layerInstances.value.buildings);\n }\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 10,\n // 在3D模式下加强建筑物外观\n heightFactor: mode === '3D' ? 1 : 0.6\n });\n mapInstance.value.add(layerInstances.value.buildings);\n }\n\n // 如果是卫星图,处理卫星图层\n if (currentMapStyle.value === 'satellite') {\n changeMapStyle('satellite');\n }\n } catch (error) {\n console.error('切换视图模式失败:', error);\n ElMessage.error(`切换到${mode}视图失败: ${error.message}`);\n }\n };\n\n // 更新图层\n const updateOverlayLayers = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n console.log('更新图层状态:', overlayLayers.value);\n\n // 交通流量图层\n if (overlayLayers.value.includes('traffic')) {\n if (!layerInstances.value.traffic) {\n layerInstances.value.traffic = new window.AMap.TileLayer.Traffic({\n zIndex: 10,\n opacity: 0.8\n });\n }\n mapInstance.value.add(layerInstances.value.traffic);\n console.log('已添加交通流量图层');\n } else if (layerInstances.value.traffic) {\n mapInstance.value.remove(layerInstances.value.traffic);\n console.log('已移除交通流量图层');\n }\n\n // 建筑物图层\n if (overlayLayers.value.includes('buildings')) {\n if (!layerInstances.value.buildings) {\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 11,\n heightFactor: viewMode.value === '3D' ? 1 : 0.6\n });\n }\n mapInstance.value.add(layerInstances.value.buildings);\n console.log('已添加建筑物图层');\n } else if (layerInstances.value.buildings) {\n mapInstance.value.remove(layerInstances.value.buildings);\n console.log('已移除建筑物图层');\n }\n\n // 地形图层\n if (overlayLayers.value.includes('terrain')) {\n if (!layerInstances.value.terrain) {\n // 等高线图层\n layerInstances.value.terrain = new window.AMap.TileLayer({\n zIndex: 8,\n getTileUrl: function (x, y, z) {\n return 'https://webst04.is.autonavi.com/appmaptile?style=6&x=' + x + '&y=' + y + '&z=' + z;\n }\n });\n }\n mapInstance.value.add(layerInstances.value.terrain);\n console.log('已添加地形图层');\n } else if (layerInstances.value.terrain) {\n mapInstance.value.remove(layerInstances.value.terrain);\n console.log('已移除地形图层');\n }\n\n // 天气图层\n if (overlayLayers.value.includes('weather')) {\n // 显示天气信息\n showWeatherInfo();\n } else {\n // 隐藏天气信息\n hideWeatherInfo();\n }\n\n // 威胁区域图层\n if (overlayLayers.value.includes('threats')) {\n // 威胁区域图层处理逻辑\n console.log('威胁区域图层暂未实现');\n }\n } catch (error) {\n console.error('更新图层失败:', error);\n ElMessage.error(`更新图层失败: ${error.message}`);\n }\n };\n\n // 显示天气信息\n const showWeatherInfo = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 如果已有天气信息标记,先清除\n if (layerInstances.value.weatherMarkers && layerInstances.value.weatherMarkers.length > 0) {\n layerInstances.value.weatherMarkers.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n }\n\n // 初始化天气标记数组\n layerInstances.value.weatherMarkers = [];\n\n // 创建天气查询服务(如果不存在)\n if (!layerInstances.value.weatherService) {\n layerInstances.value.weatherService = new window.AMap.Weather();\n }\n\n // 主要城市天气信息\n const cities = [{\n name: '北京',\n position: [116.397428, 39.90923]\n }, {\n name: '上海',\n position: [121.473667, 31.230525]\n }, {\n name: '广州',\n position: [113.264385, 23.129112]\n }, {\n name: '深圳',\n position: [114.057868, 22.543099]\n }, {\n name: '成都',\n position: [104.065735, 30.659462]\n }];\n\n // 查询每个城市的天气\n cities.forEach(city => {\n layerInstances.value.weatherService.getLive(city.name, (err, data) => {\n if (!err && data) {\n // 创建天气信息内容\n const weatherInfo = `\n \n
${city.name}天气
\n
天气: ${data.weather}
\n
温度: ${data.temperature}°C
\n
风向: ${data.windDirection}
\n
风力: ${data.windPower}
\n
湿度: ${data.humidity}%
\n
\n `;\n\n // 创建天气图标\n const weatherIcon = getWeatherIcon(data.weather);\n\n // 创建标记\n const marker = new window.AMap.Marker({\n position: city.position,\n content: `${weatherIcon}
`,\n offset: new window.AMap.Pixel(-15, -15),\n zIndex: 120,\n title: `${city.name}天气: ${data.weather}, ${data.temperature}°C`\n });\n\n // 创建信息窗体\n const infoWindow = new window.AMap.InfoWindow({\n content: weatherInfo,\n offset: new window.AMap.Pixel(0, -30)\n });\n\n // 绑定点击事件\n marker.on('click', () => {\n infoWindow.open(mapInstance.value, city.position);\n });\n\n // 添加到地图\n mapInstance.value.add(marker);\n\n // 保存标记引用\n layerInstances.value.weatherMarkers.push(marker);\n }\n });\n });\n console.log('已添加天气信息图层');\n } catch (error) {\n console.error('天气图层添加失败:', error);\n }\n };\n\n // 隐藏天气信息\n const hideWeatherInfo = () => {\n if (!mapInstance.value) return;\n\n // 移除所有天气标记\n if (layerInstances.value.weatherMarkers && layerInstances.value.weatherMarkers.length > 0) {\n layerInstances.value.weatherMarkers.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n layerInstances.value.weatherMarkers = [];\n console.log('已移除天气信息图层');\n }\n };\n\n // 获取天气图标\n const getWeatherIcon = weather => {\n // 根据天气状况返回不同的图标\n const icons = {\n '晴': '',\n '多云': '',\n '阴': '',\n '雨': '',\n '雪': ''\n };\n\n // 匹配天气关键词\n for (const key in icons) {\n if (weather.includes(key)) {\n return icons[key];\n }\n }\n\n // 默认图标\n return '';\n };\n\n // 提供地图实例给子组件\n provide('mapInstance', mapInstance);\n\n // 处理窗口大小变化\n const resizeHandler = () => {\n if (mapInstance.value) {\n mapInstance.value.resize();\n }\n };\n onMounted(() => {\n initMap();\n window.addEventListener('resize', resizeHandler);\n });\n onUnmounted(() => {\n window.removeEventListener('resize', resizeHandler);\n if (mapInstance.value) {\n mapInstance.value.destroy();\n }\n });\n\n // 暴露给父组件的方法\n const getMap = () => mapInstance.value;\n return {\n mapInstance,\n mapLoaded,\n viewMode,\n currentMapStyle,\n overlayLayers,\n changeMapStyle,\n changeViewMode,\n updateOverlayLayers,\n getMap\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","onUnmounted","provide","useStore","ElMessage","AMapLoader","name","props","mode","type","String","default","validator","value","includes","emits","setup","emit","store","mapInstance","mapLoaded","viewMode","currentMapStyle","overlayLayers","layerInstances","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","getApiKey","initMap","container","document","getElementById","log","AMap","load","key","version","plugins","Map","zoom","center","pitch","rotation","mapStyle","features","resizeEnable","dragEnable","zoomEnable","doubleClickZoom","keyboardEnable","jogEnable","scrollWheel","touchZoom","toolbar","ToolBar","position","top","right","scale","Scale","bottom","controlBar","ControlBar","showZoomBar","showControlButton","addControl","on","e","traffic","window","TileLayer","Traffic","zIndex","opacity","satellite","Satellite","buildings","Buildings","heightFactor","updateOverlayLayers","weather","Weather","weatherService","getLive","err","data","weatherError","layerError","message","changeMapStyle","style","add","remove","setMapStyle","changeViewMode","setViewMode","setPitch","terrain","getTileUrl","x","y","z","showWeatherInfo","hideWeatherInfo","weatherMarkers","length","forEach","marker","cities","city","weatherInfo","temperature","windDirection","windPower","humidity","weatherIcon","getWeatherIcon","Marker","content","offset","Pixel","title","infoWindow","InfoWindow","open","push","icons","resizeHandler","resize","addEventListener","removeEventListener","destroy","getMap"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\SharedMap.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n
\r\n 地图加载中...\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
地图图层
\r\n \r\n 标准地图\r\n 卫星地图\r\n 暗色地图\r\n \r\n \r\n \r\n \r\n
显示模式
\r\n \r\n 2D视图\r\n 3D视图\r\n \r\n \r\n \r\n \r\n
图层叠加
\r\n \r\n 交通流量\r\n 3D建筑\r\n 地形等高线\r\n 天气信息\r\n 威胁区域\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AA6CA,SAASA,GAAG,EAAEC,SAAS,EAAEC,WAAW,EAAEC,OAAM,QAAS,KAAI;AACzD,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAQ,QAAS,cAAa;AACvC,OAAOC,UAAS,MAAO,yBAAwB;AAE/C,eAAe;EACbC,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJC,IAAI,EAAEC,MAAM;MACZC,OAAO,EAAE,SAAS;MAAE;MACpBC,SAAS,EAAEC,KAAI,IAAK,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,CAACC,QAAQ,CAACD,KAAK;IAC9E;EACF,CAAC;EACDE,KAAK,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;EAClCC,KAAKA,CAACT,KAAK,EAAE;IAAEU;EAAK,CAAC,EAAE;IACrB,MAAMC,KAAI,GAAIf,QAAQ,CAAC;IACvB,MAAMgB,WAAU,GAAIpB,GAAG,CAAC,IAAI;IAC5B,MAAMqB,SAAQ,GAAIrB,GAAG,CAAC,KAAK;IAE3B,MAAMsB,QAAO,GAAItB,GAAG,CAAC,IAAI;IACzB,MAAMuB,eAAc,GAAIvB,GAAG,CAAC,QAAQ;IACpC,MAAMwB,aAAY,GAAIxB,GAAG,CAAC,CAAC,WAAW,CAAC;IACvC,MAAMyB,cAAa,GAAIzB,GAAG,CAAC,CAAC,CAAC;IAE7B,MAAM0B,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,SAAQ,GAAIA,CAAA,KAAM;MACtB;MACA,OAAO,kCAAiC;IAC1C;IAEA,MAAMC,OAAM,GAAI,MAAAA,CAAA,KAAY;MAC1B,MAAMC,SAAQ,GAAIC,QAAQ,CAACC,cAAc,CAAC,WAAW;MACrD,IAAI,CAACF,SAAS,EAAE;QACdJ,OAAO,CAACD,KAAK,CAAC,SAAS;QACvB1B,SAAS,CAAC0B,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI;QACFC,OAAO,CAACO,GAAG,CAAC,aAAa;;QAEzB;QACA,MAAMC,IAAG,GAAI,MAAMlC,UAAU,CAACmC,IAAI,CAAC;UACjCC,GAAG,EAAER,SAAS,CAAC,CAAC;UAChBS,OAAO,EAAE,KAAK;UACdC,OAAO,EAAE,CACP,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,iBAAgB;QAEpB,CAAC;QAEDZ,OAAO,CAACO,GAAG,CAAC,eAAe;;QAE3B;QACAnB,WAAW,CAACN,KAAI,GAAI,IAAI0B,IAAI,CAACK,GAAG,CAAC,WAAW,EAAE;UAC5CC,IAAI,EAAE,EAAE;UACRC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;UAAE;UAC7BzB,QAAQ,EAAEA,QAAQ,CAACR,KAAK;UACxBkC,KAAK,EAAE1B,QAAQ,CAACR,KAAI,KAAM,IAAG,GAAI,EAAC,GAAI,CAAC;UACvCmC,QAAQ,EAAE,CAAC;UACXC,QAAQ,EAAE,sBAAsB;UAChCC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;UAC7CC,YAAY,EAAE,IAAI;UAClBC,UAAU,EAAE,IAAI;UAChBC,UAAU,EAAE,IAAI;UAChBC,eAAe,EAAE,IAAI;UACrBC,cAAc,EAAE,IAAI;UACpBC,SAAS,EAAE,IAAI;UACfC,WAAW,EAAE,IAAI;UACjBC,SAAS,EAAE;QACb,CAAC;QAED3B,OAAO,CAACO,GAAG,CAAC,UAAU;;QAEtB;QACA,MAAMqB,OAAM,GAAI,IAAIpB,IAAI,CAACqB,OAAO,CAAC;UAC/BC,QAAQ,EAAE;YACRC,GAAG,EAAE,MAAM;YACXC,KAAK,EAAE;UACT;QACF,CAAC;QAED,MAAMC,KAAI,GAAI,IAAIzB,IAAI,CAAC0B,KAAK,CAAC;UAC3BJ,QAAQ,EAAE;YACRK,MAAM,EAAE,MAAM;YACdH,KAAK,EAAE;UACT;QACF,CAAC;;QAED;QACA,MAAMI,UAAS,GAAI,IAAI5B,IAAI,CAAC6B,UAAU,CAAC;UACrCP,QAAQ,EAAE;YACRC,GAAG,EAAE,MAAM;YACXC,KAAK,EAAE;UACT,CAAC;UACDM,WAAW,EAAE,KAAK;UAClBC,iBAAiB,EAAE;QACrB,CAAC;QAEDnD,WAAW,CAACN,KAAK,CAAC0D,UAAU,CAACZ,OAAO;QACpCxC,WAAW,CAACN,KAAK,CAAC0D,UAAU,CAACP,KAAK;QAClC7C,WAAW,CAACN,KAAK,CAAC0D,UAAU,CAACJ,UAAU;;QAEvC;QACAhD,WAAW,CAACN,KAAK,CAAC2D,EAAE,CAAC,OAAO,EAAGC,CAAC,IAAK;UACnCxD,IAAI,CAAC,WAAW,EAAEwD,CAAC;QACrB,CAAC;QAEDtD,WAAW,CAACN,KAAK,CAAC2D,EAAE,CAAC,UAAU,EAAE,MAAM;UACrCzC,OAAO,CAACO,GAAG,CAAC,QAAQ;UACpBlB,SAAS,CAACP,KAAI,GAAI,IAAG;UACrBI,IAAI,CAAC,YAAY,EAAEE,WAAW,CAACN,KAAK;UAEpC,IAAI;YACF;YACA;YACAW,cAAc,CAACX,KAAK,CAAC6D,OAAM,GAAI,IAAIC,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAACC,OAAO,CAAC;cAC/DC,MAAM,EAAE,EAAE;cACVC,OAAO,EAAE;YACX,CAAC,CAAC;;YAEF;YACAvD,cAAc,CAACX,KAAK,CAACmE,SAAQ,GAAI,IAAIL,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAACK,SAAS,CAAC;cACnEH,MAAM,EAAE;YACV,CAAC,CAAC;;YAEF;YACAtD,cAAc,CAACX,KAAK,CAACqE,SAAQ,GAAI,IAAIP,MAAM,CAACpC,IAAI,CAAC4C,SAAS,CAAC;cACzDL,MAAM,EAAE,EAAE;cACVM,YAAY,EAAE/D,QAAQ,CAACR,KAAI,KAAM,IAAG,GAAI,IAAI;YAC9C,CAAC,CAAC;;YAEF;YACAwE,mBAAmB,CAAC;;YAEpB;YACA,IAAI;cACF;cACA,MAAMC,OAAM,GAAI,IAAIX,MAAM,CAACpC,IAAI,CAACgD,OAAO,CAAC,CAAC;cACzC/D,cAAc,CAACX,KAAK,CAAC2E,cAAa,GAAIF,OAAO;;cAE7C;cACAA,OAAO,CAACG,OAAO,CAAC,KAAK,EAAE,UAASC,GAAG,EAAEC,IAAI,EAAE;gBACzC,IAAI,CAACD,GAAG,EAAE;kBACR3D,OAAO,CAACO,GAAG,CAAC,YAAY,EAAEqD,IAAI,CAAC;gBACjC;cACF,CAAC,CAAC;YACJ,EAAE,OAAOC,YAAY,EAAE;cACrB7D,OAAO,CAACC,IAAI,CAAC,YAAY,EAAE4D,YAAY,CAAC;YAC1C;UACF,EAAE,OAAOC,UAAU,EAAE;YACnB9D,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE+D,UAAU,CAAC;UACvC;UAEA9D,OAAO,CAACO,GAAG,CAAC,SAAS;QACvB,CAAC;MAEH,EAAE,OAAOR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9B1B,SAAS,CAAC0B,KAAK,CAAC,WAAWA,KAAK,CAACgE,OAAO,EAAE;MAC5C;IACF;;IAEA;;IAGA;IACA,MAAMC,cAAa,GAAKC,KAAK,IAAK;MAChC,IAAI,CAAC7E,WAAW,CAACN,KAAK,EAAE;MAExB,IAAI;QACFS,eAAe,CAACT,KAAI,GAAImF,KAAI;QAE5B,QAAQA,KAAK;UACX,KAAK,WAAW;YACd;YACA,IAAI,CAACxE,cAAc,CAACX,KAAK,CAACmE,SAAS,EAAE;cACnCxD,cAAc,CAACX,KAAK,CAACmE,SAAQ,GAAI,IAAIL,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAACK,SAAS,CAAC;gBACnEH,MAAM,EAAE;cACV,CAAC;YACH;;YAEA;YACA3D,WAAW,CAACN,KAAK,CAACoF,GAAG,CAACzE,cAAc,CAACX,KAAK,CAACmE,SAAS;;YAEpD;YACAK,mBAAmB,CAAC;YACpB;UAEF,KAAK,MAAM;YACT;YACA,IAAI7D,cAAc,CAACX,KAAK,CAACmE,SAAS,EAAE;cAClC7D,WAAW,CAACN,KAAK,CAACqF,MAAM,CAAC1E,cAAc,CAACX,KAAK,CAACmE,SAAS;YACzD;YACA;YACA7D,WAAW,CAACN,KAAK,CAACsF,WAAW,CAAC,oBAAoB;;YAElD;YACAd,mBAAmB,CAAC;YACpB;UAEF;YACE;YACA,IAAI7D,cAAc,CAACX,KAAK,CAACmE,SAAS,EAAE;cAClC7D,WAAW,CAACN,KAAK,CAACqF,MAAM,CAAC1E,cAAc,CAACX,KAAK,CAACmE,SAAS;YACzD;YACA;YACA7D,WAAW,CAACN,KAAK,CAACsF,WAAW,CAAC,sBAAsB;;YAEpD;YACAd,mBAAmB,CAAC;QACxB;QAEAtD,OAAO,CAACO,GAAG,CAAC,OAAO0D,KAAK,MAAM;MAChC,EAAE,OAAOlE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChC1B,SAAS,CAAC0B,KAAK,CAAC,aAAaA,KAAK,CAACgE,OAAO,EAAE;MAC9C;IACF;;IAEA;IACA,MAAMM,cAAa,GAAK5F,IAAI,IAAK;MAC/B,IAAI,CAACW,WAAW,CAACN,KAAK,EAAE;MAExB,IAAI;QACF;QACA,IAAIL,IAAG,KAAM,IAAI,EAAE;UACjB;UACAW,WAAW,CAACN,KAAK,CAACwF,WAAW,CAAC,IAAI,CAAC;UACnClF,WAAW,CAACN,KAAK,CAACyF,QAAQ,CAAC,EAAE,CAAC,EAAE;UAChCvE,OAAO,CAACO,GAAG,CAAC,YAAY,CAAC;QAC3B,OAAO;UACL;UACAnB,WAAW,CAACN,KAAK,CAACwF,WAAW,CAAC,IAAI,CAAC;UACnClF,WAAW,CAACN,KAAK,CAACyF,QAAQ,CAAC,CAAC,CAAC,EAAE;UAC/BvE,OAAO,CAACO,GAAG,CAAC,YAAY,CAAC;QAC3B;;QAEA;QACA,IAAIf,aAAa,CAACV,KAAK,CAACC,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC7C,IAAIU,cAAc,CAACX,KAAK,CAACqE,SAAS,EAAE;YAClC/D,WAAW,CAACN,KAAK,CAACqF,MAAM,CAAC1E,cAAc,CAACX,KAAK,CAACqE,SAAS;UACzD;UACA1D,cAAc,CAACX,KAAK,CAACqE,SAAQ,GAAI,IAAIP,MAAM,CAACpC,IAAI,CAAC4C,SAAS,CAAC;YACzDL,MAAM,EAAE,EAAE;YACV;YACAM,YAAY,EAAE5E,IAAG,KAAM,IAAG,GAAI,IAAI;UACpC,CAAC;UACDW,WAAW,CAACN,KAAK,CAACoF,GAAG,CAACzE,cAAc,CAACX,KAAK,CAACqE,SAAS;QACtD;;QAEA;QACA,IAAI5D,eAAe,CAACT,KAAI,KAAM,WAAW,EAAE;UACzCkF,cAAc,CAAC,WAAW;QAC5B;MACF,EAAE,OAAOjE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChC1B,SAAS,CAAC0B,KAAK,CAAC,MAAMtB,IAAI,SAASsB,KAAK,CAACgE,OAAO,EAAE;MACpD;IACF;;IAEA;IACA,MAAMT,mBAAkB,GAAIA,CAAA,KAAM;MAChC,IAAI,CAAClE,WAAW,CAACN,KAAI,IAAK,CAAC8D,MAAM,CAACpC,IAAI,EAAE;MAExC,IAAI;QACFR,OAAO,CAACO,GAAG,CAAC,SAAS,EAAEf,aAAa,CAACV,KAAK;;QAE1C;QACA,IAAIU,aAAa,CAACV,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C,IAAI,CAACU,cAAc,CAACX,KAAK,CAAC6D,OAAO,EAAE;YACjClD,cAAc,CAACX,KAAK,CAAC6D,OAAM,GAAI,IAAIC,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAACC,OAAO,CAAC;cAC/DC,MAAM,EAAE,EAAE;cACVC,OAAO,EAAE;YACX,CAAC;UACH;UACA5D,WAAW,CAACN,KAAK,CAACoF,GAAG,CAACzE,cAAc,CAACX,KAAK,CAAC6D,OAAO;UAClD3C,OAAO,CAACO,GAAG,CAAC,WAAW;QACzB,OAAO,IAAId,cAAc,CAACX,KAAK,CAAC6D,OAAO,EAAE;UACvCvD,WAAW,CAACN,KAAK,CAACqF,MAAM,CAAC1E,cAAc,CAACX,KAAK,CAAC6D,OAAO;UACrD3C,OAAO,CAACO,GAAG,CAAC,WAAW;QACzB;;QAEA;QACA,IAAIf,aAAa,CAACV,KAAK,CAACC,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC7C,IAAI,CAACU,cAAc,CAACX,KAAK,CAACqE,SAAS,EAAE;YACnC1D,cAAc,CAACX,KAAK,CAACqE,SAAQ,GAAI,IAAIP,MAAM,CAACpC,IAAI,CAAC4C,SAAS,CAAC;cACzDL,MAAM,EAAE,EAAE;cACVM,YAAY,EAAE/D,QAAQ,CAACR,KAAI,KAAM,IAAG,GAAI,IAAI;YAC9C,CAAC;UACH;UACAM,WAAW,CAACN,KAAK,CAACoF,GAAG,CAACzE,cAAc,CAACX,KAAK,CAACqE,SAAS;UACpDnD,OAAO,CAACO,GAAG,CAAC,UAAU;QACxB,OAAO,IAAId,cAAc,CAACX,KAAK,CAACqE,SAAS,EAAE;UACzC/D,WAAW,CAACN,KAAK,CAACqF,MAAM,CAAC1E,cAAc,CAACX,KAAK,CAACqE,SAAS;UACvDnD,OAAO,CAACO,GAAG,CAAC,UAAU;QACxB;;QAEA;QACA,IAAIf,aAAa,CAACV,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C,IAAI,CAACU,cAAc,CAACX,KAAK,CAAC0F,OAAO,EAAE;YACjC;YACA/E,cAAc,CAACX,KAAK,CAAC0F,OAAM,GAAI,IAAI5B,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAAC;cACvDE,MAAM,EAAE,CAAC;cACT0B,UAAU,EAAE,SAAAA,CAASC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE;gBAC5B,OAAO,uDAAsD,GAAIF,CAAA,GAAI,KAAI,GAAIC,CAAA,GAAI,KAAI,GAAIC,CAAA;cAC3F;YACF,CAAC;UACH;UACAxF,WAAW,CAACN,KAAK,CAACoF,GAAG,CAACzE,cAAc,CAACX,KAAK,CAAC0F,OAAO;UAClDxE,OAAO,CAACO,GAAG,CAAC,SAAS;QACvB,OAAO,IAAId,cAAc,CAACX,KAAK,CAAC0F,OAAO,EAAE;UACvCpF,WAAW,CAACN,KAAK,CAACqF,MAAM,CAAC1E,cAAc,CAACX,KAAK,CAAC0F,OAAO;UACrDxE,OAAO,CAACO,GAAG,CAAC,SAAS;QACvB;;QAEA;QACA,IAAIf,aAAa,CAACV,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C;UACA8F,eAAe,CAAC;QAClB,OAAO;UACL;UACAC,eAAe,CAAC;QAClB;;QAEA;QACA,IAAItF,aAAa,CAACV,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C;UACAiB,OAAO,CAACO,GAAG,CAAC,YAAY;QAC1B;MACF,EAAE,OAAOR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9B1B,SAAS,CAAC0B,KAAK,CAAC,WAAWA,KAAK,CAACgE,OAAO,EAAE;MAC5C;IACF;;IAEA;IACA,MAAMc,eAAc,GAAIA,CAAA,KAAM;MAC5B,IAAI,CAACzF,WAAW,CAACN,KAAI,IAAK,CAAC8D,MAAM,CAACpC,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIf,cAAc,CAACX,KAAK,CAACiG,cAAa,IAAKtF,cAAc,CAACX,KAAK,CAACiG,cAAc,CAACC,MAAK,GAAI,CAAC,EAAE;UACzFvF,cAAc,CAACX,KAAK,CAACiG,cAAc,CAACE,OAAO,CAACC,MAAK,IAAK;YACpD9F,WAAW,CAACN,KAAK,CAACqF,MAAM,CAACe,MAAM;UACjC,CAAC;QACH;;QAEA;QACAzF,cAAc,CAACX,KAAK,CAACiG,cAAa,GAAI,EAAC;;QAEvC;QACA,IAAI,CAACtF,cAAc,CAACX,KAAK,CAAC2E,cAAc,EAAE;UACxChE,cAAc,CAACX,KAAK,CAAC2E,cAAa,GAAI,IAAIb,MAAM,CAACpC,IAAI,CAACgD,OAAO,CAAC;QAChE;;QAEA;QACA,MAAM2B,MAAK,GAAI,CACb;UAAE5G,IAAI,EAAE,IAAI;UAAEuD,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ;QAAE,CAAC,EAChD;UAAEvD,IAAI,EAAE,IAAI;UAAEuD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,CAAC,EACjD;UAAEvD,IAAI,EAAE,IAAI;UAAEuD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,CAAC,EACjD;UAAEvD,IAAI,EAAE,IAAI;UAAEuD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,CAAC,EACjD;UAAEvD,IAAI,EAAE,IAAI;UAAEuD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,EAClD;;QAEA;QACAqD,MAAM,CAACF,OAAO,CAACG,IAAG,IAAK;UACrB3F,cAAc,CAACX,KAAK,CAAC2E,cAAc,CAACC,OAAO,CAAC0B,IAAI,CAAC7G,IAAI,EAAE,CAACoF,GAAG,EAAEC,IAAI,KAAK;YACpE,IAAI,CAACD,GAAE,IAAKC,IAAI,EAAE;cAChB;cACA,MAAMyB,WAAU,GAAI;;mDAEiBD,IAAI,CAAC7G,IAAI;kDACVqF,IAAI,CAACL,OAAO;kDACZK,IAAI,CAAC0B,WAAW;kDAChB1B,IAAI,CAAC2B,aAAa;kDAClB3B,IAAI,CAAC4B,SAAS;kDACd5B,IAAI,CAAC6B,QAAQ;;eAEjD;;cAEA;cACA,MAAMC,WAAU,GAAIC,cAAc,CAAC/B,IAAI,CAACL,OAAO;;cAE/C;cACA,MAAM2B,MAAK,GAAI,IAAItC,MAAM,CAACpC,IAAI,CAACoF,MAAM,CAAC;gBACpC9D,QAAQ,EAAEsD,IAAI,CAACtD,QAAQ;gBACvB+D,OAAO,EAAE,+BAA+BH,WAAW,QAAQ;gBAC3DI,MAAM,EAAE,IAAIlD,MAAM,CAACpC,IAAI,CAACuF,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACvChD,MAAM,EAAE,GAAG;gBACXiD,KAAK,EAAE,GAAGZ,IAAI,CAAC7G,IAAI,OAAOqF,IAAI,CAACL,OAAO,KAAKK,IAAI,CAAC0B,WAAW;cAC7D,CAAC;;cAED;cACA,MAAMW,UAAS,GAAI,IAAIrD,MAAM,CAACpC,IAAI,CAAC0F,UAAU,CAAC;gBAC5CL,OAAO,EAAER,WAAW;gBACpBS,MAAM,EAAE,IAAIlD,MAAM,CAACpC,IAAI,CAACuF,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;cACtC,CAAC;;cAED;cACAb,MAAM,CAACzC,EAAE,CAAC,OAAO,EAAE,MAAM;gBACvBwD,UAAU,CAACE,IAAI,CAAC/G,WAAW,CAACN,KAAK,EAAEsG,IAAI,CAACtD,QAAQ;cAClD,CAAC;;cAED;cACA1C,WAAW,CAACN,KAAK,CAACoF,GAAG,CAACgB,MAAM;;cAE5B;cACAzF,cAAc,CAACX,KAAK,CAACiG,cAAc,CAACqB,IAAI,CAAClB,MAAM;YACjD;UACF,CAAC;QACH,CAAC;QAEDlF,OAAO,CAACO,GAAG,CAAC,WAAW;MACzB,EAAE,OAAOR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM+E,eAAc,GAAIA,CAAA,KAAM;MAC5B,IAAI,CAAC1F,WAAW,CAACN,KAAK,EAAE;;MAExB;MACA,IAAIW,cAAc,CAACX,KAAK,CAACiG,cAAa,IAAKtF,cAAc,CAACX,KAAK,CAACiG,cAAc,CAACC,MAAK,GAAI,CAAC,EAAE;QACzFvF,cAAc,CAACX,KAAK,CAACiG,cAAc,CAACE,OAAO,CAACC,MAAK,IAAK;UACpD9F,WAAW,CAACN,KAAK,CAACqF,MAAM,CAACe,MAAM;QACjC,CAAC;QACDzF,cAAc,CAACX,KAAK,CAACiG,cAAa,GAAI,EAAC;QACvC/E,OAAO,CAACO,GAAG,CAAC,WAAW;MACzB;IACF;;IAEA;IACA,MAAMoF,cAAa,GAAKpC,OAAO,IAAK;MAClC;MACA,MAAM8C,KAAI,GAAI;QACZ,GAAG,EAAE,uQAAuQ;QAC5Q,IAAI,EAAE,kPAAkP;QACxP,GAAG,EAAE,kPAAkP;QACvP,GAAG,EAAE,uTAAuT;QAC5T,GAAG,EAAE;MACP;;MAEA;MACA,KAAK,MAAM3F,GAAE,IAAK2F,KAAK,EAAE;QACvB,IAAI9C,OAAO,CAACxE,QAAQ,CAAC2B,GAAG,CAAC,EAAE;UACzB,OAAO2F,KAAK,CAAC3F,GAAG;QAClB;MACF;;MAEA;MACA,OAAO,2OAA0O;IACnP;;IAEA;IACAvC,OAAO,CAAC,aAAa,EAAEiB,WAAW;;IAElC;IACA,MAAMkH,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIlH,WAAW,CAACN,KAAK,EAAE;QACrBM,WAAW,CAACN,KAAK,CAACyH,MAAM,CAAC;MAC3B;IACF;IAEAtI,SAAS,CAAC,MAAM;MACdkC,OAAO,CAAC;MACRyC,MAAM,CAAC4D,gBAAgB,CAAC,QAAQ,EAAEF,aAAa;IACjD,CAAC;IAEDpI,WAAW,CAAC,MAAM;MAChB0E,MAAM,CAAC6D,mBAAmB,CAAC,QAAQ,EAAEH,aAAa;MAClD,IAAIlH,WAAW,CAACN,KAAK,EAAE;QACrBM,WAAW,CAACN,KAAK,CAAC4H,OAAO,CAAC;MAC5B;IACF,CAAC;;IAED;IACA,MAAMC,MAAK,GAAIA,CAAA,KAAMvH,WAAW,CAACN,KAAI;IAErC,OAAO;MACLM,WAAW;MACXC,SAAS;MACTC,QAAQ;MACRC,eAAe;MACfC,aAAa;MACbwE,cAAc;MACdK,cAAc;MACdf,mBAAmB;MACnBqD;IACF;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d18e12591e4422f996fda57af4e54c9588745bb5629c710a3c17e6619df8c7e8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d18e12591e4422f996fda57af4e54c9588745bb5629c710a3c17e6619df8c7e8.json
new file mode 100644
index 00000000..ea047633
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d18e12591e4422f996fda57af4e54c9588745bb5629c710a3c17e6619df8c7e8.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"path-planning-panel\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n class: \"section\"\n};\nconst _hoisted_4 = {\n class: \"planning-info\"\n};\nconst _hoisted_5 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_6 = {\n class: \"history-buttons\",\n style: {\n \"margin-bottom\": \"10px\"\n }\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-info\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"point-type\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_13 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_16 = {\n class: \"path-info\"\n};\nconst _hoisted_17 = {\n class: \"info-item\"\n};\nconst _hoisted_18 = {\n class: \"value\"\n};\nconst _hoisted_19 = {\n class: \"info-item\"\n};\nconst _hoisted_20 = {\n class: \"value\"\n};\nconst _hoisted_21 = {\n class: \"info-item\"\n};\nconst _hoisted_22 = {\n class: \"value\"\n};\nconst _hoisted_23 = {\n class: \"info-item\"\n};\nconst _hoisted_24 = {\n class: \"value\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_26 = {\n class: \"value\"\n};\nconst _hoisted_27 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_28 = {\n class: \"section\"\n};\nconst _hoisted_29 = {\n class: \"map-controls\"\n};\nconst _hoisted_30 = {\n class: \"history-dialog-content\"\n};\nconst _hoisted_31 = {\n class: \"filter-section\"\n};\nconst _hoisted_32 = {\n class: \"history-paths-list\"\n};\nconst _hoisted_33 = [\"onClick\"];\nconst _hoisted_34 = {\n class: \"path-header\"\n};\nconst _hoisted_35 = {\n class: \"path-info\"\n};\nconst _hoisted_36 = {\n class: \"path-name\"\n};\nconst _hoisted_37 = {\n class: \"name\"\n};\nconst _hoisted_38 = {\n class: \"path-meta\"\n};\nconst _hoisted_39 = {\n class: \"distance\"\n};\nconst _hoisted_40 = {\n class: \"waypoints\"\n};\nconst _hoisted_41 = {\n class: \"algorithm\"\n};\nconst _hoisted_42 = {\n class: \"path-actions\"\n};\nconst _hoisted_43 = {\n key: 0,\n class: \"path-description\"\n};\nconst _hoisted_44 = {\n class: \"path-footer\"\n};\nconst _hoisted_45 = {\n class: \"created-time\"\n};\nconst _hoisted_46 = {\n key: 0,\n class: \"empty-state\"\n};\nconst _hoisted_47 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_48 = {\n class: \"path-count\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button_group = _resolveComponent(\"el-button-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_el_col = _resolveComponent(\"el-col\");\n const _component_el_row = _resolveComponent(\"el-row\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_card, {\n class: \"planning-controls\"\n }, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"路径规划\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('clear-all'))\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [14]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径规划 (1对多)\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_alert, {\n type: \"info\",\n closable: false,\n \"show-icon\": \"\",\n style: {\n \"margin-bottom\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [_createElementVNode(\"div\", {\n style: {\n \"font-size\": \"12px\"\n }\n }, [_createElementVNode(\"p\", null, \"• 第1个点为起点,其余为目标点\"), _createElementVNode(\"p\", null, \"• 系统将按最优顺序访问所有目标点\"), _createElementVNode(\"p\", null, \"• 优先访问安全区域的目标点\")], -1 /* HOISTED */)])),\n _: 1 /* STABLE */\n })]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('toggle-add-mode'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.addMode ? '停止添加' : '添加路径点'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[17] || (_cache[17] = [_createTextVNode(\" A*规划路径 \")])),\n _: 1 /* STABLE */,\n __: [17]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: \"info\",\n size: \"small\",\n onClick: $setup.showHistoryDialog,\n icon: \"FolderOpened\"\n }, {\n default: _withCtx(() => _cache[18] || (_cache[18] = [_createTextVNode(\" 历史路径 \")])),\n _: 1 /* STABLE */,\n __: [18]\n }, 8 /* PROPS */, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"warning\",\n size: \"small\",\n onClick: $setup.clearCurrentPath,\n icon: \"Delete\",\n disabled: $props.pathPoints.length === 0\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 清空当前 \")])),\n _: 1 /* STABLE */,\n __: [19]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])]), _createElementVNode(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"path-point-item\", {\n 'start-point': index === 0,\n 'target-point': index > 0\n }])\n }, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"point-index\", {\n 'start': index === 0\n }])\n }, _toDisplayString(index === 0 ? '起' : index), 3 /* TEXT, CLASS */), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_10, _toDisplayString(index === 0 ? '起点' : `目标点${index}`), 1 /* TEXT */)]), _createVNode(_component_el_button, {\n type: \"danger\",\n size: \"small\",\n icon: \"Delete\",\n circle: \"\",\n onClick: $event => _ctx.$emit('remove-point', index),\n style: {\n \"margin-left\": \"auto\"\n }\n }, null, 8 /* PROPS */, [\"onClick\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), $props.pathPoints.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_14, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"A*算法参数\", -1 /* HOISTED */)), _createVNode(_component_el_form, {\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"算法\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.algorithm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange,\n disabled: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法 (威胁区避障)\",\n value: \"astar\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[21] || (_cache[21] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [21]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $setup.altitude = $event),\n min: 10,\n max: 500,\n step: 10,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAltitudeChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [22]\n }), _createVNode(_component_el_form_item, {\n label: \"飞行速度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.speed,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.speed = $event),\n min: 1,\n max: 50,\n step: 1,\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSpeedChange\n }, null, 8 /* PROPS */, [\"modelValue\", \"onChange\"]), _cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [23]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_cache[25] || (_cache[25] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_18, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_19, [_cache[26] || (_cache[26] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_20, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_21, [_cache[27] || (_cache[27] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_22, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_23, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_24, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_cache[29] || (_cache[29] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_26, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, _cache[30] || (_cache[30] = [_createElementVNode(\"span\", {\n class: \"label\"\n }, \"访问顺序:\", -1 /* HOISTED */), _createElementVNode(\"span\", {\n class: \"value\"\n }, \"已优化\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\",\n \"margin-top\": \"12px\"\n }\n }, {\n default: _withCtx(() => _cache[31] || (_cache[31] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [31]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button_group, {\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[33] || (_cache[33] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [33]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[8] || (_cache[8] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[34] || (_cache[34] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [34]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[35] || (_cache[35] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [35]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 历史路径选择对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.historyDialogVisible,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $setup.historyDialogVisible = $event),\n title: \"选择历史路径\",\n width: \"800px\",\n onClose: $setup.resetHistoryDialog\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, \"共 \" + _toDisplayString($setup.filteredHistoryPaths.length) + \" 条路径\", 1 /* TEXT */), _createElementVNode(\"div\", null, [_createVNode(_component_el_button, {\n onClick: _cache[12] || (_cache[12] = $event => $setup.historyDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[40] || (_cache[40] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [40]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.confirmLoadPath,\n disabled: !$setup.selectedHistoryPath\n }, {\n default: _withCtx(() => _cache[41] || (_cache[41] = [_createTextVNode(\" 确定加载 \")])),\n _: 1 /* STABLE */,\n __: [41]\n }, 8 /* PROPS */, [\"onClick\", \"disabled\"])])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_30, [_createCommentVNode(\" 筛选区域 \"), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_row, {\n gutter: 10\n }, {\n default: _withCtx(() => [_createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterStatus,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $setup.filterStatus = $event),\n placeholder: \"筛选状态\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部状态\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"已规划\",\n value: \"planned\"\n }), _createVNode(_component_el_option, {\n label: \"执行中\",\n value: \"executing\"\n }), _createVNode(_component_el_option, {\n label: \"已完成\",\n value: \"completed\"\n }), _createVNode(_component_el_option, {\n label: \"已失败\",\n value: \"failed\"\n }), _createVNode(_component_el_option, {\n label: \"已取消\",\n value: \"cancelled\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.filterAlgorithm,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $setup.filterAlgorithm = $event),\n placeholder: \"筛选算法\",\n size: \"small\",\n onChange: $setup.loadHistoryPaths\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"全部算法\",\n value: \"\"\n }), _createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"直线规划\",\n value: \"straight\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_col, {\n span: 8\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $setup.loadHistoryPaths,\n icon: \"Refresh\"\n }, {\n default: _withCtx(() => _cache[37] || (_cache[37] = [_createTextVNode(\" 刷新 \")])),\n _: 1 /* STABLE */,\n __: [37]\n }, 8 /* PROPS */, [\"onClick\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), _createCommentVNode(\" 历史路径列表 \"), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_el_scrollbar, {\n height: \"400px\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.filteredHistoryPaths, path => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: path.id,\n class: _normalizeClass([\"history-path-item\", {\n 'selected': $setup.selectedHistoryPath?.id === path.id\n }]),\n onClick: $event => $setup.selectHistoryPath(path)\n }, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", {\n class: \"color-indicator\",\n style: _normalizeStyle({\n backgroundColor: path.color\n })\n }, null, 4 /* STYLE */), _createElementVNode(\"span\", _hoisted_37, _toDisplayString(path.name), 1 /* TEXT */), _createVNode(_component_el_tag, {\n type: $setup.getStatusType(path.status),\n size: \"small\",\n class: \"status-tag\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText(path.status)), 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"type\"])]), _createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString($setup.formatDistance(path.distance)), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_40, _toDisplayString(path.waypoint_count) + \"个点\", 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_41, _toDisplayString(path.algorithm.toUpperCase()), 1 /* TEXT */)])]), _createElementVNode(\"div\", _hoisted_42, [_createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: _withModifiers($event => $setup.loadHistoryPath(path), [\"stop\"])\n }, {\n default: _withCtx(() => [...(_cache[38] || (_cache[38] = [_createTextVNode(\" 加载路径 \")]))]),\n _: 2 /* DYNAMIC */,\n __: [38]\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"onClick\"])])]), path.description ? (_openBlock(), _createElementBlock(\"div\", _hoisted_43, [_createElementVNode(\"p\", null, _toDisplayString(path.description), 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString($setup.formatTime(path.created_at)), 1 /* TEXT */)])], 10 /* CLASS, PROPS */, _hoisted_33);\n }), 128 /* KEYED_FRAGMENT */)), $setup.filteredHistoryPaths.length === 0 && !$setup.historyLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_46, _cache[39] || (_cache[39] = [_createElementVNode(\"p\", null, \"暂无历史路径\", -1 /* HOISTED */)]))) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })])), [[_directive_loading, $setup.historyLoading]])])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onClose\"])]);\n}","map":{"version":3,"names":["class","style","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_hoisted_4","_component_el_alert","closable","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","$setup","showHistoryDialog","icon","clearCurrentPath","_hoisted_7","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_8","_hoisted_9","_toDisplayString","lng","toFixed","lat","_hoisted_10","circle","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_el_form","_component_el_form_item","label","_component_el_select","algorithm","onChange","onAlgorithmChange","_component_el_option","value","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","getAlgorithmName","_hoisted_19","_hoisted_20","distance","_hoisted_21","_hoisted_22","duration","_hoisted_23","_hoisted_24","pointCount","threatZonesAvoided","_hoisted_25","_hoisted_26","targetOrder","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_button_group","_createCommentVNode","_component_el_dialog","historyDialogVisible","title","width","onClose","resetHistoryDialog","footer","_hoisted_47","_hoisted_48","filteredHistoryPaths","confirmLoadPath","selectedHistoryPath","_hoisted_30","_hoisted_31","_component_el_row","gutter","_component_el_col","span","filterStatus","placeholder","loadHistoryPaths","filterAlgorithm","_hoisted_32","_component_el_scrollbar","height","path","id","selectHistoryPath","_hoisted_34","_hoisted_35","_hoisted_36","_normalizeStyle","backgroundColor","color","_hoisted_37","name","_component_el_tag","getStatusType","status","getStatusText","_hoisted_38","_hoisted_39","formatDistance","_hoisted_40","waypoint_count","_hoisted_41","toUpperCase","_hoisted_42","_withModifiers","loadHistoryPath","description","_hoisted_43","_hoisted_44","_hoisted_45","formatTime","created_at","historyLoading","_hoisted_46"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 刷新\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ path.description }}
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1fbf5fdd9d4c502917b212ce19473e1ec4ad261294e66db96bcf63f6cd0f787.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1fbf5fdd9d4c502917b212ce19473e1ec4ad261294e66db96bcf63f6cd0f787.json
new file mode 100644
index 00000000..16923a4e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1fbf5fdd9d4c502917b212ce19473e1ec4ad261294e66db96bcf63f6cd0f787.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, computed } from 'vue';\nexport default {\n name: 'PathPlanningPanel',\n props: {\n drones: {\n type: Array,\n default: () => []\n },\n selectedDroneId: {\n type: [Number, String],\n default: null\n },\n pathPoints: {\n type: Array,\n default: () => []\n },\n addMode: {\n type: Boolean,\n default: false\n },\n planningAlgorithm: {\n type: String,\n default: 'astar'\n },\n flightAltitude: {\n type: Number,\n default: 100\n },\n flightSpeed: {\n type: Number,\n default: 10\n },\n pathInfo: {\n type: Object,\n default: null\n }\n },\n emits: ['toggle-add-mode', 'clear-all', 'plan-path', 'execute-path', 'remove-point', 'center-to-start', 'center-to-end', 'fit-to-path', 'select-drone'],\n setup(props, {\n emit\n }) {\n // 创建响应式引用,与props保持同步\n const droneId = computed({\n get: () => props.selectedDroneId,\n set: value => emit('select-drone', value)\n });\n const algorithm = computed({\n get: () => props.planningAlgorithm,\n set: value => emit('update-planning-algorithm', value)\n });\n const altitude = computed({\n get: () => props.flightAltitude,\n set: value => emit('update-flight-altitude', value)\n });\n const speed = computed({\n get: () => props.flightSpeed,\n set: value => emit('update-flight-speed', value)\n });\n\n // 处理函数\n const onSelectDrone = value => {\n emit('select-drone', value);\n };\n const onAlgorithmChange = value => {\n emit('update-planning-algorithm', value);\n };\n const onAltitudeChange = value => {\n emit('update-flight-altitude', value);\n };\n const onSpeedChange = value => {\n emit('update-flight-speed', value);\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange,\n getAlgorithmName\n };\n }\n};","map":{"version":3,"names":["ref","computed","name","props","drones","type","Array","default","selectedDroneId","Number","String","pathPoints","addMode","Boolean","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","Object","emits","setup","emit","droneId","get","set","value","algorithm","altitude","speed","onSelectDrone","onAlgorithmChange","onAltitudeChange","onSpeedChange","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\map-panels\\PathPlanningPanel.vue"],"sourcesContent":["\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
路径规划 (1对多)
\r\n
\r\n
\r\n \r\n \r\n
• 第1个点为起点,其余为目标点
\r\n
• 系统将按最优顺序访问所有目标点
\r\n
• 优先访问安全区域的目标点
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n A*规划路径\r\n \r\n
\r\n \r\n
\r\n \r\n 历史路径\r\n \r\n \r\n 清空当前\r\n \r\n
\r\n \r\n
\r\n
0 }\"\r\n >\r\n
\r\n {{ index === 0 ? '起' : index }}\r\n \r\n
\r\n
\r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n
\r\n
\r\n {{ index === 0 ? '起点' : `目标点${index}` }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n 点击地图添加路径点\r\n
\r\n \r\n
\r\n 再添加至少1个目标点\r\n
\r\n \r\n
1\" class=\"summary\">\r\n 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
A*算法参数
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 智能避开威胁区域,优化访问顺序\r\n
\r\n \r\n \r\n \r\n 米\r\n \r\n \r\n \r\n m/s\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
路径规划结果
\r\n
\r\n
\r\n 算法:\r\n {{ getAlgorithmName(pathInfo.algorithm) }}\r\n
\r\n
\r\n 总距离:\r\n {{ (pathInfo.distance / 1000).toFixed(2) }} km\r\n
\r\n
\r\n 预计时间:\r\n {{ pathInfo.duration }} 分钟\r\n
\r\n
\r\n 路径点数:\r\n {{ pathInfo.pointCount }} 个\r\n
\r\n
0\" class=\"info-item threat-avoided\">\r\n 避开威胁:\r\n {{ pathInfo.threatZonesAvoided.length }} 个区域\r\n
\r\n
0\" class=\"info-item\">\r\n 访问顺序:\r\n 已优化\r\n
\r\n
\r\n
\r\n 执行路径规划\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \r\n 全路径\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d2e72e6bb51d4c8122b46756dec5f6acc88af2dc6e2d221595297705b8916803.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d2e72e6bb51d4c8122b46756dec5f6acc88af2dc6e2d221595297705b8916803.json
new file mode 100644
index 00000000..047d5d86
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d2e72e6bb51d4c8122b46756dec5f6acc88af2dc6e2d221595297705b8916803.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","_ctx","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3f502744a2a1a0f96bb33e49cf169561575873067337e4b5e8a164c360121f1.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3f502744a2a1a0f96bb33e49cf169561575873067337e4b5e8a164c360121f1.json
new file mode 100644
index 00000000..a7e2c720
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3f502744a2a1a0f96bb33e49cf169561575873067337e4b5e8a164c360121f1.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d4dfb799aea08f6a791a1ebdeeba096a24a2023afc699da755457afca2a32cbf.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d4dfb799aea08f6a791a1ebdeeba096a24a2023afc699da755457afca2a32cbf.json
new file mode 100644
index 00000000..78244a71
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d4dfb799aea08f6a791a1ebdeeba096a24a2023afc699da755457afca2a32cbf.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_path_history_panel","_ctx","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d5eed2f09cc1e362ab275c6b520835bdcd30d434e13cfd3167999a06bc50b757.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d5eed2f09cc1e362ab275c6b520835bdcd30d434e13cfd3167999a06bc50b757.json
new file mode 100644
index 00000000..71bd33e2
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d5eed2f09cc1e362ab275c6b520835bdcd30d434e13cfd3167999a06bc50b757.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n\n // 创建路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n\n // 添加标记到地图\n mapInstance.value.add(pathMarkers.value);\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n return [point.lng, point.lat];\n } else if (Array.isArray(point) && point.length >= 2) {\n return [point[0], point[1]];\n } else {\n console.warn('路径点格式不正确:', point);\n return null;\n }\n }).filter(coord => coord !== null);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isNaN","isStart","parse","Array","isArray","undefined","coord","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d685b5c9137ac6fbf09d6a6c8673cbd151b37f469a249faf6464b0e4886b4fa7.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d685b5c9137ac6fbf09d6a6c8673cbd151b37f469a249faf6464b0e4886b4fa7.json
new file mode 100644
index 00000000..bad16318
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d685b5c9137ac6fbf09d6a6c8673cbd151b37f469a249faf6464b0e4886b4fa7.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d941901974383f65e41b15c5bff02a5b0fb6c5402e4cb0865a6106636d859aa5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d941901974383f65e41b15c5bff02a5b0fb6c5402e4cb0865a6106636d859aa5.json
new file mode 100644
index 00000000..913c046a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d941901974383f65e41b15c5bff02a5b0fb6c5402e4cb0865a6106636d859aa5.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 详细验证圆形数据\n console.log('圆形威胁区详细检查:');\n console.log(' center:', zone.geometry.center);\n console.log(' center类型:', typeof zone.geometry.center);\n console.log(' center是数组:', Array.isArray(zone.geometry.center));\n if (Array.isArray(zone.geometry.center)) {\n console.log(' center[0]:', zone.geometry.center[0], '类型:', typeof zone.geometry.center[0]);\n console.log(' center[1]:', zone.geometry.center[1], '类型:', typeof zone.geometry.center[1]);\n console.log(' center[0] isNaN:', isNaN(zone.geometry.center[0]));\n console.log(' center[1] isNaN:', isNaN(zone.geometry.center[1]));\n }\n console.log(' radius:', zone.geometry.radius, '类型:', typeof zone.geometry.radius);\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && !isNaN(point[0]) && !isNaN(point[1]));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => isNaN(val))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/de356c92ecc3ff5629a92e6e1d35099da8a22997c7a78af07ff2a3cd662680e9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/de356c92ecc3ff5629a92e6e1d35099da8a22997c7a78af07ff2a3cd662680e9.json
new file mode 100644
index 00000000..044974b9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/de356c92ecc3ff5629a92e6e1d35099da8a22997c7a78af07ff2a3cd662680e9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning') {\n // 路径规划 - 直接添加路径点,无需检查addMode\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 额外处理:在非威胁区模式下,尝试移除所有事件监听器\n if (!isClickable && overlay.off) {\n overlay.off('click');\n }\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域可点击性已更新为: ${isClickable}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件 - 只在威胁区设置模式下响应\n overlay.on('click', e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n });\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","clickable","cursor","zIndex","off","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/de93a428627ce865723c860fff40a549ff26ab16d880cbe326aece0646d3a7d2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/de93a428627ce865723c860fff40a549ff26ab16d880cbe326aece0646d3a7d2.json
new file mode 100644
index 00000000..cdd5099a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/de93a428627ce865723c860fff40a549ff26ab16d880cbe326aece0646d3a7d2.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n e.stopPropagation && e.stopPropagation();\n }\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n };\n\n // 保存事件处理函数的引用,以便后续移除\n overlay._threatZoneClickHandler = handleZoneClick;\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","clickable","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","_threatZoneClickHandler","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/dee0322c1c46690ba9edf3992a8b31cd55cf5a43c8832e166a976bcebe789558.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/dee0322c1c46690ba9edf3992a8b31cd55cf5a43c8832e166a976bcebe789558.json
new file mode 100644
index 00000000..de8bfe1d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/dee0322c1c46690ba9edf3992a8b31cd55cf5a43c8832e166a976bcebe789558.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 详细验证圆形数据\n console.log('圆形威胁区详细检查:');\n console.log(' center:', zone.geometry.center);\n console.log(' center类型:', typeof zone.geometry.center);\n console.log(' center是数组:', Array.isArray(zone.geometry.center));\n if (Array.isArray(zone.geometry.center)) {\n console.log(' center[0]:', zone.geometry.center[0], '类型:', typeof zone.geometry.center[0]);\n console.log(' center[1]:', zone.geometry.center[1], '类型:', typeof zone.geometry.center[1]);\n console.log(' center[0] isNaN:', isNaN(zone.geometry.center[0]));\n console.log(' center[1] isNaN:', isNaN(zone.geometry.center[1]));\n }\n console.log(' radius:', zone.geometry.radius, '类型:', typeof zone.geometry.radius);\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e41c8eef01b2bae0504e965151dc0e821d5ac08426fc10c496d86b65db103a32.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e41c8eef01b2bae0504e965151dc0e821d5ac08426fc10c496d86b65db103a32.json
new file mode 100644
index 00000000..b9fdbdf1
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e41c8eef01b2bae0504e965151dc0e821d5ac08426fc10c496d86b65db103a32.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e50b55d9355b8bec7a725d0c0dc1bbaeec855abd0760effb2c4620de34ec7ae0.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e50b55d9355b8bec7a725d0c0dc1bbaeec855abd0760effb2c4620de34ec7ae0.json
new file mode 100644
index 00000000..1f7f567b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e50b55d9355b8bec7a725d0c0dc1bbaeec855abd0760effb2c4620de34ec7ae0.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n if (activePanel.value === 'threatZone') {\n // 威胁区设置模式:处理威胁区选择\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n } else {\n // 其他模式:手动触发地图点击事件\n console.log('非威胁区模式,手动触发地图点击事件');\n try {\n // 获取点击位置\n const lnglat = e.lnglat;\n console.log('手动触发地图点击:', lnglat);\n\n // 手动调用地图点击处理函数\n onMapClick({\n lnglat\n });\n } catch (error) {\n console.error('手动触发地图点击失败:', error);\n }\n }\n };\n\n // 威胁区域始终绑定点击事件\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","clickable","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e552c2ab660f8c6ced389728163a91d384c28149feead6a4497f3ec67ccb2df6.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e552c2ab660f8c6ced389728163a91d384c28149feead6a4497f3ec67ccb2df6.json
new file mode 100644
index 00000000..252749c9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e552c2ab660f8c6ced389728163a91d384c28149feead6a4497f3ec67ccb2df6.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e850d1d42ebf20dcb532a74d8820bc56169a772b5681d27361b2c648c5a339cc.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e850d1d42ebf20dcb532a74d8820bc56169a772b5681d27361b2c648c5a339cc.json
new file mode 100644
index 00000000..f39a1c62
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e850d1d42ebf20dcb532a74d8820bc56169a772b5681d27361b2c648c5a339cc.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区原始数据:', threatZones.value);\n console.log('威胁区详细信息:');\n threatZones.value.forEach((zone, index) => {\n console.log(`威胁区 ${index + 1}:`, {\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n geometry: zone.geometry,\n description: zone.description\n });\n });\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => {\n const mappedZone = {\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n };\n console.log('映射威胁区:', mappedZone);\n return mappedZone;\n }) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n console.log('威胁区数量:', planningData.threatZones.length);\n console.log('完整威胁区数据:', JSON.stringify(planningData.threatZones, null, 2));\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","geometry_type","geometry_data","startPoint","slice","planningData","algorithm","mappedZone","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isNaN","isFinite","Number","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e8c76f6e408d56b600a1215ddcd00d8f20e0e4c206b6ee3cd137860510624a10.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e8c76f6e408d56b600a1215ddcd00d8f20e0e4c206b6ee3cd137860510624a10.json
new file mode 100644
index 00000000..4198ca03
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e8c76f6e408d56b600a1215ddcd00d8f20e0e4c206b6ee3cd137860510624a10.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: $setup.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.activePanel = $event),\n onTabClick: $setup.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: $setup.toggleAddMode,\n onClearTargets: $setup.clearTargets,\n \"add-mode\": $setup.addMode,\n \"target-points\": $setup.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": $setup.threatZones,\n \"selected-zone-id\": $setup.selectedZoneId,\n \"current-threat-type\": $setup.currentThreatType,\n \"draw-mode\": $setup.drawMode,\n \"threat-level\": $setup.threatLevel,\n \"circle-radius\": $setup.circleRadius,\n \"threat-description\": $setup.threatDescription,\n \"threat-time-range\": $setup.threatTimeRange,\n \"visible-layers\": $setup.visibleLayers,\n onOnThreatTypeChange: $setup.handleThreatTypeChange,\n onOnThreatLevelChange: $setup.handleThreatLevelChange,\n onSetDrawMode: $setup.setDrawMode,\n onSelectZone: $setup.selectZone,\n onDeleteZone: $setup.deleteZone,\n onEditZone: $setup.editZone,\n onClearAllZones: $setup.clearAllZones,\n onUpdateLayerVisibility: $setup.updateLayerVisibility,\n onUpdateCircleRadius: $setup.updateCircleRadius,\n onUpdateThreatDescription: $setup.updateThreatDescription,\n onUpdateThreatTimeRange: $setup.updateThreatTimeRange,\n onSaveEditedZone: $setup.saveEditedZone,\n onFitToZones: $setup.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": $setup.pathPoints,\n \"add-mode\": $setup.addMode,\n \"planning-algorithm\": $setup.planningAlgorithm,\n \"flight-altitude\": $setup.flightAltitude,\n \"flight-speed\": $setup.flightSpeed,\n \"path-info\": $setup.pathInfo,\n onToggleAddMode: $setup.toggleAddMode,\n onClearAll: $setup.clearAll,\n onPlanPath: $setup.planPath,\n onExecutePath: $setup.executePath,\n onRemovePoint: $setup.removePoint,\n onCenterToStart: $setup.centerToStart,\n onCenterToEnd: $setup.centerToEnd,\n onFitToPath: $setup.fitToPath,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed,\n onLoadHistoryPath: $setup.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": $setup.selectedHistoryPaths,\n onShowPath: $setup.showHistoryPath,\n onHidePath: $setup.hideHistoryPath,\n onShowAllPaths: $setup.showAllHistoryPaths,\n onHideAllPaths: $setup.hideAllHistoryPaths,\n onCenterToPath: $setup.centerToHistoryPath,\n onDuplicatePath: $setup.duplicateHistoryPath,\n onUpdateSelectedPaths: $setup.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: $setup.activePanel,\n onMapLoaded: $setup.onMapLoaded,\n onMapClick: $setup.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), $setup.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: $setup.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), $setup.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: $setup.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: $setup.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $setup.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => $setup.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $setup.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: $setup.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: $setup.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $setup.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $setup.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","$setup","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e9be8429deb2a94853b1e48642855ee59daf9695f2d3551455328e234ea1a10c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e9be8429deb2a94853b1e48642855ee59daf9695f2d3551455328e234ea1a10c.json
new file mode 100644
index 00000000..d16c67c9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e9be8429deb2a94853b1e48642855ee59daf9695f2d3551455328e234ea1a10c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const isClickable = activePanel.value === 'threatZone';\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3,\n // 设置覆盖物在非威胁区设置模式下不可点击\n clickable: isClickable,\n // 额外的鼠标事件控制\n cursor: isClickable ? 'pointer' : 'default',\n // 设置z-index,确保在非激活状态下层级较低\n zIndex: isClickable ? 100 : 1\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n\n // 只有在威胁区设置面板激活时才处理威胁区点击\n if (activePanel.value === 'threatZone') {\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n return false; // 阻止事件进一步传播\n } else {\n // 在其他模式下不处理威胁区点击,让事件传播到地图层\n console.log('非威胁区模式,事件将传播到地图');\n // 不调用stopPropagation,让事件继续传播\n return true; // 允许事件继续传播\n }\n };\n overlay.on('click', handleZoneClick);\n\n // 更新新创建威胁区的可点击性\n const isClickable = activePanel.value === 'threatZone';\n overlay.setOptions({\n clickable: isClickable,\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n console.log('路径点已添加到数组:', pathPoints.value.length);\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","forEach","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","clickable","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/eae3d4821639a631c59fdf3cee8699c9d830d42949fba2d5c2e375038e21e963.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/eae3d4821639a631c59fdf3cee8699c9d830d42949fba2d5c2e375038e21e963.json
new file mode 100644
index 00000000..5e9feb03
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/eae3d4821639a631c59fdf3cee8699c9d830d42949fba2d5c2e375038e21e963.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3,\n priority: 1\n },\n medium: {\n name: '中威胁',\n opacity: 0.5,\n priority: 2\n },\n high: {\n name: '高威胁',\n opacity: 0.7,\n priority: 3\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9,\n priority: 4\n }\n };\n\n // 工具函数:检查点是否在威胁区域内\n const isPointInThreatZone = (lng, lat, zone) => {\n if (!zone || !zone.geometry) return false;\n try {\n if (zone.geometry.type === 'circle') {\n // 计算点到圆心的距离\n const center = zone.geometry.center;\n const radius = zone.geometry.radius;\n const distance = calculateGeoDistance(lng, lat, center[0], center[1]);\n return distance <= radius;\n } else if (zone.geometry.type === 'polygon') {\n // 使用射线法判断点是否在多边形内\n const path = zone.geometry.path;\n return isPointInPolygon([lng, lat], path);\n } else if (zone.geometry.type === 'rectangle') {\n // 检查点是否在矩形范围内\n const bounds = zone.geometry.bounds;\n return lng >= bounds[0] && lat >= bounds[1] && lng <= bounds[2] && lat <= bounds[3];\n }\n } catch (error) {\n console.warn('检查点是否在威胁区域内时出错:', error, zone);\n }\n return false;\n };\n\n // 工具函数:计算两点间地理距离(米)\n const calculateGeoDistance = (lng1, lat1, lng2, lat2) => {\n const R = 6371000; // 地球半径(米)\n const dLat = (lat2 - lat1) * Math.PI / 180;\n const dLng = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 工具函数:射线法判断点是否在多边形内\n const isPointInPolygon = (point, polygon) => {\n const [x, y] = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [xi, yi] = polygon[i];\n const [xj, yj] = polygon[j];\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) {\n inside = !inside;\n }\n }\n return inside;\n };\n\n // 计算某个点的实际威胁等级(考虑重叠)\n const calculatePointThreatLevel = (lng, lat) => {\n let maxThreatLevel = null;\n let maxPriority = 0;\n const affectingZones = [];\n\n // 检查点在哪些威胁区域内\n threatZones.value.forEach(zone => {\n if (isPointInThreatZone(lng, lat, zone)) {\n affectingZones.push(zone);\n const priority = threatLevelConfig[zone.level]?.priority || 0;\n if (priority > maxPriority) {\n maxPriority = priority;\n maxThreatLevel = zone.level;\n }\n }\n });\n return {\n level: maxThreatLevel,\n priority: maxPriority,\n affectingZones: affectingZones,\n isOverlapping: affectingZones.length > 1\n };\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n if (activePanel.value === 'threatZone') {\n // 威胁区设置模式:处理威胁区选择\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n } else {\n // 其他模式:手动触发地图点击事件\n console.log('非威胁区模式,手动触发地图点击事件');\n try {\n // 获取点击位置\n const lnglat = e.lnglat;\n console.log('手动触发地图点击:', lnglat);\n\n // 手动调用地图点击处理函数\n onMapClick({\n lnglat\n });\n } catch (error) {\n console.error('手动触发地图点击失败:', error);\n }\n }\n };\n\n // 威胁区域始终绑定点击事件\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 检查威胁等级\n const threatInfo = calculatePointThreatLevel(lng, lat);\n\n // 添加路径点(包含威胁信息)\n const pathPoint = {\n lng,\n lat,\n threatLevel: threatInfo.level,\n threatPriority: threatInfo.priority,\n isInThreatZone: threatInfo.level !== null,\n isOverlapping: threatInfo.isOverlapping,\n affectingZones: threatInfo.affectingZones\n };\n pathPoints.value.push(pathPoint);\n console.log('路径点已添加到数组:', pathPoints.value.length, '威胁信息:', threatInfo);\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n\n // 显示威胁等级信息\n let message = `已添加路径点${pointIndex}`;\n if (pathPoint.isInThreatZone) {\n if (pathPoint.isOverlapping) {\n message += ` (重叠威胁区 - ${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n ElMessage.warning(message);\n } else {\n message += ` (${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n if (pathPoint.threatLevel === 'critical' || pathPoint.threatLevel === 'high') {\n ElMessage.warning(message);\n } else {\n ElMessage.success(message);\n }\n }\n } else {\n message += ' (安全区域)';\n ElMessage.success(message);\n }\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (pathPoint, index) => {\n const AMap = window.AMap;\n const {\n lng,\n lat\n } = pathPoint;\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点,包含威胁等级信息\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat,\n threatLevel: startPoint.threatLevel,\n threatPriority: startPoint.threatPriority,\n isInThreatZone: startPoint.isInThreatZone,\n isOverlapping: startPoint.isOverlapping\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat,\n threatLevel: point.threatLevel,\n threatPriority: point.threatPriority,\n isInThreatZone: point.isInThreatZone,\n isOverlapping: point.isOverlapping\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级',\n // 威胁检测工具函数\n isPointInThreatZone,\n calculateDistance,\n calculatePointThreatLevel\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","priority","medium","high","critical","isPointInThreatZone","lng","lat","zone","center","radius","distance","calculateGeoDistance","path","isPointInPolygon","bounds","lng1","lat1","lng2","lat2","R","dLat","Math","PI","dLng","a","sin","cos","c","atan2","sqrt","point","polygon","x","y","inside","i","j","length","xi","yi","xj","yj","calculatePointThreatLevel","maxThreatLevel","maxPriority","affectingZones","value","forEach","push","isOverlapping","onMapLoaded","map","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","data","renderThreatZoneOnMap","getCenter","getRadius","getPath","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","threatInfo","pathPoint","threatPriority","isInThreatZone","markerColor","overlappingIndicator","updatePathLine","warning","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","addPathPointMarker","planPath","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","φ1","φ2","Δφ","Δλ","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ed7dae99d642ee0b6ed5c5ed760c193e6405fb4ba33a5fc82143e29800008c34.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ed7dae99d642ee0b6ed5c5ed760c193e6405fb4ba33a5fc82143e29800008c34.json
new file mode 100644
index 00000000..11fd6615
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ed7dae99d642ee0b6ed5c5ed760c193e6405fb4ba33a5fc82143e29800008c34.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f115d093c9ed270dad1a0cdf40ad2ee318eac0c9fb29f2ee015b48306be6cf30.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f115d093c9ed270dad1a0cdf40ad2ee318eac0c9fb29f2ee015b48306be6cf30.json
new file mode 100644
index 00000000..cfcf2d4a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f115d093c9ed270dad1a0cdf40ad2ee318eac0c9fb29f2ee015b48306be6cf30.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3,\n priority: 1\n },\n medium: {\n name: '中威胁',\n opacity: 0.5,\n priority: 2\n },\n high: {\n name: '高威胁',\n opacity: 0.7,\n priority: 3\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9,\n priority: 4\n }\n };\n\n // 工具函数:检查点是否在威胁区域内\n const isPointInThreatZone = (lng, lat, zone) => {\n if (!zone || !zone.geometry) return false;\n try {\n if (zone.geometry.type === 'circle') {\n // 计算点到圆心的距离\n const center = zone.geometry.center;\n const radius = zone.geometry.radius;\n const distance = calculateGeoDistance(lng, lat, center[0], center[1]);\n return distance <= radius;\n } else if (zone.geometry.type === 'polygon') {\n // 使用射线法判断点是否在多边形内\n const path = zone.geometry.path;\n return isPointInPolygon([lng, lat], path);\n } else if (zone.geometry.type === 'rectangle') {\n // 检查点是否在矩形范围内\n const bounds = zone.geometry.bounds;\n return lng >= bounds[0] && lat >= bounds[1] && lng <= bounds[2] && lat <= bounds[3];\n }\n } catch (error) {\n console.warn('检查点是否在威胁区域内时出错:', error, zone);\n }\n return false;\n };\n\n // 工具函数:计算两点间地理距离(米)\n const calculateGeoDistance = (lng1, lat1, lng2, lat2) => {\n const R = 6371000; // 地球半径(米)\n const dLat = (lat2 - lat1) * Math.PI / 180;\n const dLng = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 工具函数:射线法判断点是否在多边形内\n const isPointInPolygon = (point, polygon) => {\n const [x, y] = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [xi, yi] = polygon[i];\n const [xj, yj] = polygon[j];\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) {\n inside = !inside;\n }\n }\n return inside;\n };\n\n // 计算某个点的实际威胁等级(考虑重叠)\n const calculatePointThreatLevel = (lng, lat) => {\n let maxThreatLevel = null;\n let maxPriority = 0;\n const affectingZones = [];\n\n // 检查点在哪些威胁区域内\n threatZones.value.forEach(zone => {\n if (isPointInThreatZone(lng, lat, zone)) {\n affectingZones.push(zone);\n const priority = threatLevelConfig[zone.level]?.priority || 0;\n if (priority > maxPriority) {\n maxPriority = priority;\n maxThreatLevel = zone.level;\n }\n }\n });\n return {\n level: maxThreatLevel,\n priority: maxPriority,\n affectingZones: affectingZones,\n isOverlapping: affectingZones.length > 1\n };\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n console.log('地图点击事件:', {\n lng,\n lat,\n activePanel: activePanel.value,\n addMode: addMode.value\n });\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 更新威胁区域的可点击性\n updateThreatZoneClickability();\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // 更新威胁区域的可点击性\n const updateThreatZoneClickability = () => {\n const isClickable = activePanel.value === 'threatZone';\n Object.values(zoneOverlays).forEach(overlay => {\n if (overlay && overlay.setOptions) {\n try {\n overlay.setOptions({\n cursor: isClickable ? 'pointer' : 'default',\n zIndex: isClickable ? 100 : 1\n });\n } catch (error) {\n console.warn('更新威胁区域属性时出错:', error);\n }\n }\n });\n console.log(`威胁区域显示状态已更新,当前面板: ${activePanel.value}`);\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n\n // 验证威胁区数据\n if (!zone || !zone.geometry) {\n console.error('威胁区数据无效:', zone);\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n // 验证圆形数据\n if (!zone.geometry.center || !Array.isArray(zone.geometry.center) || zone.geometry.center.length !== 2 || zone.geometry.center[0] == null || zone.geometry.center[1] == null || isNaN(Number(zone.geometry.center[0])) || isNaN(Number(zone.geometry.center[1])) || !zone.geometry.radius || zone.geometry.radius <= 0) {\n console.error('圆形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保坐标是数字类型\n const lng = Number(zone.geometry.center[0]);\n const lat = Number(zone.geometry.center[1]);\n const radius = Number(zone.geometry.radius);\n console.log('创建圆形威胁区:', [lng, lat], radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(lng, lat),\n radius: radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n // 验证多边形数据\n if (!zone.geometry.path || !Array.isArray(zone.geometry.path) || zone.geometry.path.length < 3) {\n console.error('多边形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 验证并转换每个点的格式\n const validPath = zone.geometry.path.every(point => Array.isArray(point) && point.length === 2 && point[0] != null && point[1] != null && !isNaN(Number(point[0])) && !isNaN(Number(point[1])));\n if (!validPath) {\n console.error('多边形威胁区路径点数据格式错误:', zone.geometry.path);\n return;\n }\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(Number(point[0]), Number(point[1])));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n // 验证并转换矩形数据\n if (!zone.geometry.bounds || !Array.isArray(zone.geometry.bounds) || zone.geometry.bounds.length !== 4 || zone.geometry.bounds.some(val => val == null || isNaN(Number(val)))) {\n console.error('矩形威胁区数据格式错误:', zone.geometry);\n return;\n }\n\n // 确保边界坐标是数字类型\n const boundsNumbers = zone.geometry.bounds.map(val => Number(val));\n console.log('创建矩形威胁区:', boundsNumbers);\n const bounds = new AMap.Bounds(new AMap.LngLat(boundsNumbers[0], boundsNumbers[1]), new AMap.LngLat(boundsNumbers[2], boundsNumbers[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n } else {\n console.error('不支持的威胁区几何类型:', zone.geometry.type);\n return;\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 为威胁区域绑定点击事件处理函数\n const handleZoneClick = e => {\n console.log('威胁区域被点击,当前面板:', activePanel.value, '威胁区ID:', zone.id);\n if (activePanel.value === 'threatZone') {\n // 威胁区设置模式:处理威胁区选择\n console.log('处理威胁区点击选择');\n selectZone(zone.id);\n // 阻止事件冒泡,避免触发地图点击\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n } else {\n // 其他模式:手动触发地图点击事件\n console.log('非威胁区模式,手动触发地图点击事件');\n try {\n // 获取点击位置\n const lnglat = e.lnglat;\n console.log('手动触发地图点击:', lnglat);\n\n // 手动调用地图点击处理函数\n onMapClick({\n lnglat\n });\n } catch (error) {\n console.error('手动触发地图点击失败:', error);\n }\n }\n };\n\n // 威胁区域始终绑定点击事件\n overlay.on('click', handleZoneClick);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n console.log('尝试添加路径点:', {\n lng,\n lat,\n mapInstance: !!mapInstance.value,\n addMode: addMode.value\n });\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 检查威胁等级\n const threatInfo = calculatePointThreatLevel(lng, lat);\n\n // 添加路径点(包含威胁信息)\n const pathPoint = {\n lng,\n lat,\n threatLevel: threatInfo.level,\n threatPriority: threatInfo.priority,\n isInThreatZone: threatInfo.level !== null,\n isOverlapping: threatInfo.isOverlapping,\n affectingZones: threatInfo.affectingZones\n };\n pathPoints.value.push(pathPoint);\n console.log('路径点已添加到数组:', pathPoints.value.length, '威胁信息:', threatInfo);\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999 // 确保路径点标记在威胁区域之上\n });\n console.log('开始添加标记到地图...');\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n console.log('标记已添加,当前标记数量:', pathMarkers.value.length);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n\n // 显示威胁等级信息\n let message = `已添加路径点${pointIndex}`;\n if (pathPoint.isInThreatZone) {\n if (pathPoint.isOverlapping) {\n message += ` (重叠威胁区 - ${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n ElMessage.warning(message);\n } else {\n message += ` (${threatLevelConfig[pathPoint.threatLevel]?.name})`;\n if (pathPoint.threatLevel === 'critical' || pathPoint.threatLevel === 'high') {\n ElMessage.warning(message);\n } else {\n ElMessage.success(message);\n }\n }\n } else {\n message += ' (安全区域)';\n ElMessage.success(message);\n }\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (pathPoint, index) => {\n const AMap = window.AMap;\n const {\n lng,\n lat\n } = pathPoint;\n\n // 根据威胁等级确定标记颜色\n let markerColor = '#1890FF'; // 默认蓝色(安全)\n let strokeColor = '#fff';\n if (pathPoint.isInThreatZone) {\n switch (pathPoint.threatLevel) {\n case 'low':\n markerColor = '#52C41A'; // 绿色\n break;\n case 'medium':\n markerColor = '#FA8C16'; // 橙色\n break;\n case 'high':\n markerColor = '#F5222D'; // 红色\n break;\n case 'critical':\n markerColor = '#722ED1'; // 紫色\n strokeColor = '#FFD700'; // 金色边框表示极高危险\n break;\n }\n }\n\n // 如果是重叠区域,添加特殊标识\n const overlappingIndicator = pathPoint.isOverlapping ? `` : '';\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}${pathPoint.isInThreatZone ? ` (${threatLevelConfig[pathPoint.threatLevel]?.name})` : ' (安全区域)'}${pathPoint.isOverlapping ? ' [重叠区域]' : ''}`,\n zIndex: 999\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点,包含威胁等级信息\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat,\n threatLevel: startPoint.threatLevel,\n threatPriority: startPoint.threatPriority,\n isInThreatZone: startPoint.isInThreatZone,\n isOverlapping: startPoint.isOverlapping\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat,\n threatLevel: point.threatLevel,\n threatPriority: point.threatPriority,\n isInThreatZone: point.isInThreatZone,\n isOverlapping: point.isOverlapping\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateTotalPathDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级',\n // 威胁检测工具函数\n isPointInThreatZone,\n calculateGeoDistance,\n calculatePointThreatLevel\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","priority","medium","high","critical","isPointInThreatZone","lng","lat","zone","center","radius","distance","calculateGeoDistance","path","isPointInPolygon","bounds","lng1","lat1","lng2","lat2","R","dLat","Math","PI","dLng","a","sin","cos","c","atan2","sqrt","point","polygon","x","y","inside","i","j","length","xi","yi","xj","yj","calculatePointThreatLevel","maxThreatLevel","maxPriority","affectingZones","value","forEach","push","isOverlapping","onMapLoaded","map","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","updateThreatZoneClickability","isClickable","Object","values","overlay","setOptions","cursor","zIndex","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","success","clearTargets","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","data","renderThreatZoneOnMap","getCenter","getRadius","getPath","getBounds","getSouthWest","getNorthEast","clearAllZones","Array","isArray","isNaN","Number","Circle","LngLat","validPath","every","Polygon","some","val","boundsNumbers","Bounds","Rectangle","existingIndex","findIndex","z","handleZoneClick","selectZone","stopPropagation","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","threatInfo","pathPoint","threatPriority","isInThreatZone","markerColor","overlappingIndicator","updatePathLine","warning","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","addPathPointMarker","planPath","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateTotalPathDistance","p1","p2","getDistance","φ1","φ2","Δφ","Δλ","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isFinite","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"AAoKA,SAASA,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,KAAI,QAAS,KAAI;AAC5D,SAASC,QAAO,QAAS,MAAK;AAC9B,SAASC,SAAS,EAAEC,YAAW,QAAS,cAAa;AACrD,OAAOC,SAAQ,MAAO,6BAA4B;AAClD,OAAOC,aAAY,MAAO,4CAA2C;AACrE,OAAOC,eAAc,MAAO,8CAA6C;AACzE,OAAOC,iBAAgB,MAAO,gDAA+C;AAC7E,OAAOC,gBAAe,MAAO,+CAA8C;AAE3E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVN,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC,iBAAiB;IACjBC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIX,QAAQ,CAAC;IACvB,MAAMY,YAAW,GAAIjB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMmB,WAAU,GAAInB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMoB,OAAM,GAAIpB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMqB,YAAW,GAAIrB,GAAG,CAAC,EAAE;IAC3B,MAAMsB,aAAY,GAAItB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMuB,WAAU,GAAIvB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMwB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIzB,GAAG,CAAC,IAAI;IACzB,MAAM0B,iBAAgB,GAAI1B,GAAG,CAAC,OAAO;IACrC,MAAM2B,WAAU,GAAI3B,GAAG,CAAC,QAAQ;IAChC,MAAM4B,YAAW,GAAI5B,GAAG,CAAC,IAAI;IAC7B,MAAM6B,iBAAgB,GAAI7B,GAAG,CAAC,EAAE;IAChC,MAAM8B,eAAc,GAAI9B,GAAG,CAAC,CAAC,IAAI+B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIjC,GAAG,CAAC,IAAI;IAC/B,MAAMkC,aAAY,GAAIlC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMmC,iBAAgB,GAAInC,GAAG,CAAC,KAAK;IACnC,MAAMoC,QAAO,GAAIpC,GAAG,CAAC;MACnBqC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAI1C,GAAG,CAAC,EAAE;IACzB,MAAM2C,WAAU,GAAI3C,GAAG,CAAC,EAAE;IAC1B,MAAM4C,QAAO,GAAI5C,GAAG,CAAC,IAAI;IACzB,MAAM6C,iBAAgB,GAAI7C,GAAG,CAAC,OAAO;IACrC,MAAM8C,cAAa,GAAI9C,GAAG,CAAC,GAAG;IAC9B,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMiD,oBAAmB,GAAIjD,GAAG,CAAC,EAAE;IACnC,MAAMkD,mBAAkB,GAAI,CAAC,GAAG;;IAEhC;IACA,MAAMC,SAAQ,GAAInD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMoD,gBAAe,GAAKC,GAAG,IAAK;MAChC,IAAI;QACF,OAAOC,IAAI,CAACC,QAAQ,CAACC,kBAAkB,CAACH,GAAG,CAAC,CAAC;MAC/C,EAAE,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;QACjC,OAAOH,IAAI,CAACD,GAAG;MACjB;IACF;;IAEA;IACA,MAAMO,gBAAe,GAAI;MACvBC,KAAK,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAEpD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAErD,IAAI,EAAE,MAAM;QAAEiD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE,GAAG;QAAEC,QAAQ,EAAE;MAAE,CAAC;MAC/CC,MAAM,EAAE;QAAE1D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE,GAAG;QAAEC,QAAQ,EAAE;MAAE,CAAC;MAClDE,IAAI,EAAE;QAAE3D,IAAI,EAAE,KAAK;QAAEwD,OAAO,EAAE,GAAG;QAAEC,QAAQ,EAAE;MAAE,CAAC;MAChDG,QAAQ,EAAE;QAAE5D,IAAI,EAAE,MAAM;QAAEwD,OAAO,EAAE,GAAG;QAAEC,QAAQ,EAAE;MAAE;IACtD;;IAEA;IACA,MAAMI,mBAAkB,GAAIA,CAACC,GAAG,EAAEC,GAAG,EAAEC,IAAI,KAAK;MAC9C,IAAI,CAACA,IAAG,IAAK,CAACA,IAAI,CAACpC,QAAQ,EAAE,OAAO,KAAI;MAExC,IAAI;QACF,IAAIoC,IAAI,CAACpC,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnC;UACA,MAAMwC,MAAK,GAAID,IAAI,CAACpC,QAAQ,CAACqC,MAAK;UAClC,MAAMC,MAAK,GAAIF,IAAI,CAACpC,QAAQ,CAACsC,MAAK;UAElC,MAAMC,QAAO,GAAIC,oBAAoB,CAACN,GAAG,EAAEC,GAAG,EAAEE,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC;UACpE,OAAOE,QAAO,IAAKD,MAAK;QAE1B,OAAO,IAAIF,IAAI,CAACpC,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3C;UACA,MAAM4C,IAAG,GAAIL,IAAI,CAACpC,QAAQ,CAACyC,IAAG;UAC9B,OAAOC,gBAAgB,CAAC,CAACR,GAAG,EAAEC,GAAG,CAAC,EAAEM,IAAI;QAE1C,OAAO,IAAIL,IAAI,CAACpC,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7C;UACA,MAAM8C,MAAK,GAAIP,IAAI,CAACpC,QAAQ,CAAC2C,MAAK;UAClC,OAAOT,GAAE,IAAKS,MAAM,CAAC,CAAC,KAAKR,GAAE,IAAKQ,MAAM,CAAC,CAAC,KACnCT,GAAE,IAAKS,MAAM,CAAC,CAAC,KAAKR,GAAE,IAAKQ,MAAM,CAAC,CAAC;QAC5C;MACF,EAAE,OAAO3B,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,iBAAiB,EAAEF,KAAK,EAAEoB,IAAI;MAC7C;MAEA,OAAO,KAAI;IACb;;IAEA;IACA,MAAMI,oBAAmB,GAAIA,CAACI,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MACvD,MAAMC,CAAA,GAAI,OAAM,EAAE;MAClB,MAAMC,IAAG,GAAI,CAACF,IAAG,GAAIF,IAAI,IAAIK,IAAI,CAACC,EAAC,GAAI,GAAE;MACzC,MAAMC,IAAG,GAAI,CAACN,IAAG,GAAIF,IAAI,IAAIM,IAAI,CAACC,EAAC,GAAI,GAAE;MACzC,MAAME,CAAA,GAAIH,IAAI,CAACI,GAAG,CAACL,IAAI,GAAC,CAAC,IAAIC,IAAI,CAACI,GAAG,CAACL,IAAI,GAAC,CAAC,IAClCC,IAAI,CAACK,GAAG,CAACV,IAAG,GAAIK,IAAI,CAACC,EAAC,GAAI,GAAG,IAAID,IAAI,CAACK,GAAG,CAACR,IAAG,GAAIG,IAAI,CAACC,EAAC,GAAI,GAAG,IAC9DD,IAAI,CAACI,GAAG,CAACF,IAAI,GAAC,CAAC,IAAIF,IAAI,CAACI,GAAG,CAACF,IAAI,GAAC,CAAC;MAC5C,MAAMI,CAAA,GAAI,IAAIN,IAAI,CAACO,KAAK,CAACP,IAAI,CAACQ,IAAI,CAACL,CAAC,CAAC,EAAEH,IAAI,CAACQ,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MACrD,OAAOL,CAAA,GAAIQ,CAAA;IACb;;IAEA;IACA,MAAMd,gBAAe,GAAIA,CAACiB,KAAK,EAAEC,OAAO,KAAK;MAC3C,MAAM,CAACC,CAAC,EAAEC,CAAC,IAAIH,KAAI;MACnB,IAAII,MAAK,GAAI,KAAI;MAEjB,KAAK,IAAIC,CAAA,GAAI,CAAC,EAAEC,CAAA,GAAIL,OAAO,CAACM,MAAK,GAAI,CAAC,EAAEF,CAAA,GAAIJ,OAAO,CAACM,MAAM,EAAED,CAAA,GAAID,CAAC,EAAE,EAAE;QACnE,MAAM,CAACG,EAAE,EAAEC,EAAE,IAAIR,OAAO,CAACI,CAAC;QAC1B,MAAM,CAACK,EAAE,EAAEC,EAAE,IAAIV,OAAO,CAACK,CAAC;QAE1B,IAAMG,EAAC,GAAIN,CAAC,KAAOQ,EAAC,GAAIR,CAAE,IAAMD,CAAA,GAAI,CAACQ,EAAC,GAAIF,EAAE,KAAKL,CAAA,GAAIM,EAAE,KAAKE,EAAC,GAAIF,EAAE,IAAID,EAAG,EAAE;UAC1EJ,MAAK,GAAI,CAACA,MAAK;QACjB;MACF;MAEA,OAAOA,MAAK;IACd;;IAEA;IACA,MAAMQ,yBAAwB,GAAIA,CAACrC,GAAG,EAAEC,GAAG,KAAK;MAC9C,IAAIqC,cAAa,GAAI,IAAG;MACxB,IAAIC,WAAU,GAAI;MAClB,MAAMC,cAAa,GAAI,EAAC;;MAExB;MACA5F,WAAW,CAAC6F,KAAK,CAACC,OAAO,CAACxC,IAAG,IAAK;QAChC,IAAIH,mBAAmB,CAACC,GAAG,EAAEC,GAAG,EAAEC,IAAI,CAAC,EAAE;UACvCsC,cAAc,CAACG,IAAI,CAACzC,IAAI;UACxB,MAAMP,QAAO,GAAIH,iBAAiB,CAACU,IAAI,CAACtC,KAAK,CAAC,EAAE+B,QAAO,IAAK;UAC5D,IAAIA,QAAO,GAAI4C,WAAW,EAAE;YAC1BA,WAAU,GAAI5C,QAAO;YACrB2C,cAAa,GAAIpC,IAAI,CAACtC,KAAI;UAC5B;QACF;MACF,CAAC;MAED,OAAO;QACLA,KAAK,EAAE0E,cAAc;QACrB3C,QAAQ,EAAE4C,WAAW;QACrBC,cAAc,EAAEA,cAAc;QAC9BI,aAAa,EAAEJ,cAAc,CAACR,MAAK,GAAI;MACzC;IACF;;IAEA;IACA,MAAMa,WAAU,GAAKC,GAAG,IAAK;MAC3BtG,WAAW,CAACiG,KAAI,GAAIK,GAAE;MACtB/D,OAAO,CAACgE,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACFxE,SAAS,CAACiE,KAAI,GAAI,IAAIO,IAAI,CAACE,SAAS,CAACJ,GAAG;UACxCtE,SAAS,CAACiE,KAAK,CAACU,EAAE,CAAC,MAAM,EAAEC,cAAc;UACzCrE,OAAO,CAACgE,GAAG,CAAC,gBAAgB;QAC9B,EAAE,OAAOjE,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK;QACxC;MACF;;MAEA;MACAuE,WAAW,CAAC;IACd;;IAEA;IACA,MAAMA,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACFtE,OAAO,CAACgE,GAAG,CAAC,eAAe;;QAE3B;QACA,MAAMO,eAAe,CAAC;QAEtBvE,OAAO,CAACgE,GAAG,CAAC,UAAU;MAExB,EAAE,OAAOjE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAMyE,UAAS,GAAKC,CAAC,IAAK;MACxB,MAAM;QAAExD,GAAG;QAAEC;MAAI,IAAIuD,CAAC,CAACC,MAAK;MAC5B1E,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAE;QAAE/C,GAAG;QAAEC,GAAG;QAAE1D,WAAW,EAAEA,WAAW,CAACkG,KAAK;QAAEhG,OAAO,EAAEA,OAAO,CAACgG;MAAM,CAAC;MAE3F,IAAIlG,WAAW,CAACkG,KAAI,KAAM,UAAS,IAAKhG,OAAO,CAACgG,KAAK,EAAE;QACrD;QACAiB,cAAc,CAAC1D,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAI1D,WAAW,CAACkG,KAAI,KAAM,cAAa,IAAKhG,OAAO,CAACgG,KAAK,EAAE;QAChE;QACAkB,YAAY,CAAC3D,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAM2D,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQrH,WAAW,CAACkG,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAa,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA;MACJ;IACF;;IAEA;IACA,MAAMO,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACApH,OAAO,CAACgG,KAAI,GAAI,KAAI;MACpB3F,QAAQ,CAAC2F,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIjE,SAAS,CAACiE,KAAK,EAAE;QACnBjE,SAAS,CAACiE,KAAK,CAACqB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAC,4BAA4B,CAAC;;MAE7B;MACAH,uBAAuB,CAAC;IAC1B;;IAEA;IACA,MAAMG,4BAA2B,GAAIA,CAAA,KAAM;MACzC,MAAMC,WAAU,GAAIzH,WAAW,CAACkG,KAAI,KAAM,YAAW;MAErDwB,MAAM,CAACC,MAAM,CAACrH,YAAY,CAAC,CAAC6F,OAAO,CAACyB,OAAM,IAAK;QAC7C,IAAIA,OAAM,IAAKA,OAAO,CAACC,UAAU,EAAE;UACjC,IAAI;YACFD,OAAO,CAACC,UAAU,CAAC;cACjBC,MAAM,EAAEL,WAAU,GAAI,SAAQ,GAAI,SAAS;cAC3CM,MAAM,EAAEN,WAAU,GAAI,GAAE,GAAI;YAC9B,CAAC;UACH,EAAE,OAAOlF,KAAK,EAAE;YACdC,OAAO,CAACC,IAAI,CAAC,cAAc,EAAEF,KAAK;UACpC;QACF;MACF,CAAC;MAEDC,OAAO,CAACgE,GAAG,CAAC,qBAAqBxG,WAAW,CAACkG,KAAK,EAAE;IACtD;;IAEA;;IAEA;IACA,MAAM8B,aAAY,GAAIA,CAAA,KAAM;MAC1B9H,OAAO,CAACgG,KAAI,GAAI,CAAChG,OAAO,CAACgG,KAAI;MAC7B;MACA,IAAIlG,WAAW,CAACkG,KAAI,KAAM,YAAY,EAAE;QACtC3F,QAAQ,CAAC2F,KAAI,GAAI,IAAG;QACpB,IAAIjE,SAAS,CAACiE,KAAK,EAAE;UACnBjE,SAAS,CAACiE,KAAK,CAACqB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;;IAIA;IACA,MAAMU,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIjI,WAAW,CAACkG,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIlG,WAAW,CAACkG,KAAI,KAAM,cAAc,EAAE;QAC/C,OAAO,WAAU;MACnB;MACA,OAAO,EAAC;IACV;;IAEA;;IAEA;IACA,MAAMiB,cAAa,GAAIA,CAAC1D,GAAG,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACzD,WAAW,CAACiG,KAAK,EAAE;MAExB,MAAMO,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAMyB,MAAK,GAAI,IAAIzB,IAAI,CAAC0B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAAC3E,GAAG,EAAEC,GAAG,CAAC;QACpB2E,IAAI,EAAE,IAAI5B,IAAI,CAAC6B,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAI9B,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAIvG,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFwG,SAAS,EAAE,IAAIjC,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,WAAWlF,GAAG,CAACmF,OAAO,CAAC,CAAC,CAAC,KAAKlF,GAAG,CAACkF,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAV,MAAM,CAACtB,EAAE,CAAC,OAAO,EAAE,MAAM;QACvBxH,SAAS,CAAC;UACRyJ,OAAO,EAAE,UAAUpF,GAAG,CAACmF,OAAO,CAAC,CAAC,CAAC,KAAKlF,GAAG,CAACkF,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDxH,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAACZ,MAAM;MAC5B9H,aAAa,CAAC8F,KAAK,CAACE,IAAI,CAAC8B,MAAM;MAC/B/H,YAAY,CAAC+F,KAAK,CAACE,IAAI,CAAC;QAAE3C,GAAG;QAAEC;MAAI,CAAC;MAEpCtE,SAAS,CAAC2J,OAAO,CAAC,WAAWtF,GAAG,CAACmF,OAAO,CAAC,CAAC,CAAC,KAAKlF,GAAG,CAACkF,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMI,YAAW,GAAIA,CAAA,KAAM;MACzB5I,aAAa,CAAC8F,KAAK,CAACC,OAAO,CAAC+B,MAAK,IAAK;QACpCjI,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACf,MAAM;MACjC,CAAC;MACD9H,aAAa,CAAC8F,KAAI,GAAI,EAAC;MACvB/F,YAAY,CAAC+F,KAAI,GAAI,EAAC;MACtB9G,SAAS,CAAC2J,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMG,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAI3I,QAAQ,CAAC2F,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAI3F,QAAQ,CAAC2F,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAI3F,QAAQ,CAAC2F,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMiD,sBAAqB,GAAK/H,IAAI,IAAK;MACvCZ,iBAAiB,CAAC0F,KAAI,GAAI9E,IAAG;IAC/B;;IAEA;IACA,MAAMgI,uBAAsB,GAAK/H,KAAK,IAAK;MACzCZ,WAAW,CAACyF,KAAI,GAAI7E,KAAI;IAC1B;;IAEA;IACA,MAAMgI,kBAAiB,GAAKxF,MAAM,IAAK;MACrCnD,YAAY,CAACwF,KAAI,GAAIrC,MAAK;IAC5B;;IAEA;IACA,MAAMyF,uBAAsB,GAAKC,IAAI,IAAK;MACxC5I,iBAAiB,CAACuF,KAAI,GAAIqD,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvC7I,eAAe,CAACsF,KAAI,GAAIuD,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAAC1H,SAAS,CAACiE,KAAK,EAAE;QACpB9G,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIhC,QAAQ,CAAC2F,KAAI,KAAMyD,IAAI,EAAE;QAC3B;QACApJ,QAAQ,CAAC2F,KAAI,GAAI,IAAG;QACpB,IAAI;UACFjE,SAAS,CAACiE,KAAK,CAACqB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOhF,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAnD,SAAS,CAACwK,IAAI,CAAC,SAAS;QACxB;MACF;MAEArJ,QAAQ,CAAC2F,KAAI,GAAIyD,IAAG;MACpBzJ,OAAO,CAACgG,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAM2D,OAAM,GAAI;QACdC,WAAW,EAAEpH,gBAAgB,CAAClC,iBAAiB,CAAC0F,KAAK,CAAC,CAACtD,KAAK;QAC5DmH,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEvH,gBAAgB,CAAClC,iBAAiB,CAAC0F,KAAK,CAAC,CAACtD,KAAK;QAC1DsH,WAAW,EAAEjH,iBAAiB,CAACxC,WAAW,CAACyF,KAAK,CAAC,CAAC/C;MACpD;MAEA,IAAI;QACFX,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAEmD,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACX1H,SAAS,CAACiE,KAAK,CAACiE,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZ5H,SAAS,CAACiE,KAAK,CAACf,OAAO,CAAC0E,OAAO;YAC/B;UACF,KAAK,WAAW;YACd5H,SAAS,CAACiE,KAAK,CAACkE,SAAS,CAACP,OAAO;YACjC;QACJ;QAEAzK,SAAS,CAACwK,IAAI,CAACV,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAO3G,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;QAC1BhC,QAAQ,CAAC2F,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMW,cAAa,GAAI,MAAOwD,KAAK,IAAK;MACtC;MACA,MAAMzC,OAAM,GAAI1I,KAAK,CAACmL,KAAK,CAACC,GAAG;MAE/B9H,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAEoB,OAAO;MACjCpF,OAAO,CAACgE,GAAG,CAAC,QAAQ,EAAEoB,OAAO,CAAC2C,SAAQ,IAAK3C,OAAO,CAAC4C,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAIxK,WAAW,CAACiG,KAAK,CAACwE,cAAc,CAAC,SAAS;QAC3DlI,OAAO,CAACgE,GAAG,CAAC,aAAa,EAAEiE,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBb,WAAW,EAAEpH,gBAAgB,CAAClC,iBAAiB,CAAC0F,KAAK,CAAC,CAACtD,KAAK;UAC5DmH,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEvH,gBAAgB,CAAClC,iBAAiB,CAAC0F,KAAK,CAAC,CAACtD,KAAK;UAC1DsH,WAAW,EAAEjH,iBAAiB,CAACxC,WAAW,CAACyF,KAAK,CAAC,CAAC/C;QACpD;QAEAX,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAEmE,YAAY;QACnC/C,OAAO,CAACC,UAAU,CAAC8C,YAAY;;QAE/B;QACAC,UAAU,CAAC,MAAM;UACf3K,WAAW,CAACiG,KAAK,CAAC2E,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAENrI,OAAO,CAACgE,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOjE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMhB,QAAO,GAAIuJ,sBAAsB,CAAClD,OAAO;;MAE/C;MACA,IAAI,CAACpH,iBAAiB,CAAC0F,KAAK,EAAE;QAC5B1D,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE/B,iBAAiB,CAAC0F,KAAK;QAChD9G,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC9B,WAAW,CAACyF,KAAK,EAAE;QACtB1D,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE9B,WAAW,CAACyF,KAAK;QAC1C9G,SAAS,CAACmD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChB,QAAQ,EAAE;QACbiB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBnD,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAMwI,QAAO,GAAI;QACf3J,IAAI,EAAEZ,iBAAiB,CAAC0F,KAAK;QAC7B7E,KAAK,EAAEZ,WAAW,CAACyF,KAAK;QACxB5E,WAAW,EAAEX,iBAAiB,CAACuF,KAAI,IAAK,EAAE;QAC1C8E,SAAS,EAAE,CAAC,GAAGpK,eAAe,CAACsF,KAAK,CAAC;QAAE;QACvC3E,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFiB,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAEuE,QAAQ;QAClCvI,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAEhG,iBAAiB,CAAC0F,KAAK;QAC9C1D,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAE/F,WAAW,CAACyF,KAAK;QACxC1D,OAAO,CAACgE,GAAG,CAAC,OAAO,EAAE7F,iBAAiB,CAACuF,KAAK;QAC5C1D,OAAO,CAACgE,GAAG,CAAC,OAAO,EAAEjF,QAAQ;;QAE7B;QACA,MAAM0J,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;UAChDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACR,QAAQ;QAC/B,CAAC;QAEDvI,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE5D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCpJ,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoJ,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCvJ,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAEsF,MAAM;QAE9B,IAAIA,MAAM,CAAC/C,OAAO,EAAE;UAClB,MAAMpF,IAAG,GAAImI,MAAM,CAACE,IAAG;;UAEvB;UACA/L,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACrB,OAAO;;UAEhC;UACAqE,qBAAqB,CAACtI,IAAI;UAE1BvE,SAAS,CAAC2J,OAAO,CAAC,MAAMrG,gBAAgB,CAAClC,iBAAiB,CAAC0F,KAAK,CAAC,CAACvG,IAAI,IAAI;UAC1E6C,OAAO,CAACgE,GAAG,CAAC,kBAAkB,EAAE7C,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIkI,KAAK,CAACC,MAAM,CAACjD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOtG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACsG,OAAO;;QAE3C;QACA5I,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACrB,OAAO;MAClC;;MAEA;MACArH,QAAQ,CAAC2F,KAAI,GAAI,IAAG;MACpB,IAAIjE,SAAS,CAACiE,KAAK,EAAE;QACnBjE,SAAS,CAACiE,KAAK,CAACqB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACA/E,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAEnG,WAAW,CAAC6F,KAAK,CAACT,MAAM;IAClD;IAEA,MAAMqF,sBAAqB,GAAKlD,OAAO,IAAK;MAC1CpF,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAEoB,OAAO,CAAC4C,UAAS,IAAK5C,OAAO,CAAC2C,SAAS;MAEjE,IAAI;QACF,IAAI3C,OAAO,CAAC4C,UAAS,KAAM,aAAY,IAAK5C,OAAO,CAAC2C,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM3G,MAAK,GAAIgE,OAAO,CAACsE,SAAS,CAAC;UACjC,MAAMrI,MAAK,GAAI+D,OAAO,CAACuE,SAAS,CAAC;UACjC3J,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAE;YAAE5C,MAAM;YAAEC;UAAO,CAAC;UACzC,OAAO;YACLzC,IAAI,EAAE,QAAQ;YACdwC,MAAM,EAAE,CAACA,MAAM,CAACH,GAAG,EAAEG,MAAM,CAACF,GAAG,CAAC;YAChCG,MAAM,EAAEA;UACV;QACF,OAAO,IAAI+D,OAAO,CAAC4C,UAAS,KAAM,cAAa,IAAK5C,OAAO,CAAC2C,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAMvG,IAAG,GAAI4D,OAAO,CAACwE,OAAO,CAAC;UAC7B5J,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAExC,IAAI;UAC5B,OAAO;YACL5C,IAAI,EAAE,SAAS;YACf4C,IAAI,EAAEA,IAAI,CAACuC,GAAG,CAACrB,KAAI,IAAK,CAACA,KAAK,CAACzB,GAAG,EAAEyB,KAAK,CAACxB,GAAG,CAAC;UAChD;QACF,OAAO,IAAIkE,OAAO,CAAC4C,UAAS,KAAM,gBAAe,IAAK5C,OAAO,CAAC2C,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMrG,MAAK,GAAI0D,OAAO,CAACyE,SAAS,CAAC;UACjC7J,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAEtC,MAAM;UAC7B,OAAO;YACL9C,IAAI,EAAE,WAAW;YACjB8C,MAAM,EAAE,CAACA,MAAM,CAACoI,YAAY,CAAC,CAAC,CAAC7I,GAAG,EAAES,MAAM,CAACoI,YAAY,CAAC,CAAC,CAAC5I,GAAG,EACrDQ,MAAM,CAACqI,YAAY,CAAC,CAAC,CAAC9I,GAAG,EAAES,MAAM,CAACqI,YAAY,CAAC,CAAC,CAAC7I,GAAG;UAC9D;QACF;MACF,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEqF,OAAO,CAAC4C,UAAS,IAAK5C,OAAO,CAAC2C,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAMxD,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFvE,OAAO,CAACgE,GAAG,CAAC,cAAc;QAC1BhE,OAAO,CAACgE,GAAG,CAAC,0BAA0B;QAEtC,MAAMyE,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChD1I,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAEyE,QAAQ,CAACO,MAAM,EAAEP,QAAQ,CAACQ,UAAU;QAE9D,IAAI,CAACR,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCpJ,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEoJ,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYZ,QAAQ,CAACO,MAAM,IAAIP,QAAQ,CAACQ,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCvJ,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAEsF,MAAM;QAEhC,IAAIA,MAAM,CAAC/C,OAAO,EAAE;UAClBvG,OAAO,CAACgE,GAAG,CAAC,aAAa,EAAEsF,MAAM,CAACE,IAAI;;UAEtC;UACAQ,aAAa,CAAC,IAAI;;UAElB;UACAV,MAAM,CAACE,IAAI,CAAC7F,OAAO,CAACxC,IAAG,IAAK;YAC1BsI,qBAAqB,CAACtI,IAAI;UAC5B,CAAC;UAEDnB,OAAO,CAACgE,GAAG,CAAC,QAAQsF,MAAM,CAACE,IAAI,CAACvG,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAIoG,KAAK,CAACC,MAAM,CAACjD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOtG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACsG,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMoD,qBAAoB,GAAKtI,IAAI,IAAK;MACtC,IAAI,CAAC1D,WAAW,CAACiG,KAAK,EAAE;QACtB1D,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;;MAEA;MACA,IAAI,CAACoB,IAAG,IAAK,CAACA,IAAI,CAACpC,QAAQ,EAAE;QAC3BiB,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoB,IAAI;QAC9B;MACF;MAEA,IAAI;QACFnB,OAAO,CAACgE,GAAG,CAAC,aAAa,EAAE7C,IAAI;QAE/B,MAAM8C,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAImB,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAM+C,YAAW,GAAI;UACnBb,WAAW,EAAEpH,gBAAgB,CAACiB,IAAI,CAACvC,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC5DmH,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEvH,gBAAgB,CAACiB,IAAI,CAACvC,IAAI,CAAC,EAAEwB,KAAI,IAAK,SAAS;UAC1DsH,WAAW,EAAEjH,iBAAiB,CAACU,IAAI,CAACtC,KAAK,CAAC,EAAE8B,OAAM,IAAK;QACzD;QAEAX,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAEmE,YAAY;QACpCnI,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAE7C,IAAI,CAACpC,QAAQ;;QAErC;QACA,IAAIoC,IAAI,CAACpC,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnC;UACA,IAAI,CAACuC,IAAI,CAACpC,QAAQ,CAACqC,MAAK,IAAK,CAAC6I,KAAK,CAACC,OAAO,CAAC/I,IAAI,CAACpC,QAAQ,CAACqC,MAAM,KAC5DD,IAAI,CAACpC,QAAQ,CAACqC,MAAM,CAAC6B,MAAK,KAAM,KAChC9B,IAAI,CAACpC,QAAQ,CAACqC,MAAM,CAAC,CAAC,KAAK,IAAG,IAAKD,IAAI,CAACpC,QAAQ,CAACqC,MAAM,CAAC,CAAC,KAAK,IAAG,IACjE+I,KAAK,CAACC,MAAM,CAACjJ,IAAI,CAACpC,QAAQ,CAACqC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK+I,KAAK,CAACC,MAAM,CAACjJ,IAAI,CAACpC,QAAQ,CAACqC,MAAM,CAAC,CAAC,CAAC,CAAC,KAC/E,CAACD,IAAI,CAACpC,QAAQ,CAACsC,MAAK,IAAKF,IAAI,CAACpC,QAAQ,CAACsC,MAAK,IAAK,CAAC,EAAE;YACtDrB,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoB,IAAI,CAACpC,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAMkC,GAAE,GAAImJ,MAAM,CAACjJ,IAAI,CAACpC,QAAQ,CAACqC,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAMF,GAAE,GAAIkJ,MAAM,CAACjJ,IAAI,CAACpC,QAAQ,CAACqC,MAAM,CAAC,CAAC,CAAC;UAC1C,MAAMC,MAAK,GAAI+I,MAAM,CAACjJ,IAAI,CAACpC,QAAQ,CAACsC,MAAM;UAE1CrB,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAE,CAAC/C,GAAG,EAAEC,GAAG,CAAC,EAAEG,MAAM;UAC1C+D,OAAM,GAAI,IAAInB,IAAI,CAACoG,MAAM,CAAC;YACxBjJ,MAAM,EAAE,IAAI6C,IAAI,CAACqG,MAAM,CAACrJ,GAAG,EAAEC,GAAG,CAAC;YACjCG,MAAM,EAAEA,MAAM;YACd,GAAG8G;UACL,CAAC;QACH,OAAO,IAAIhH,IAAI,CAACpC,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3C;UACA,IAAI,CAACuC,IAAI,CAACpC,QAAQ,CAACyC,IAAG,IAAK,CAACyI,KAAK,CAACC,OAAO,CAAC/I,IAAI,CAACpC,QAAQ,CAACyC,IAAI,KACxDL,IAAI,CAACpC,QAAQ,CAACyC,IAAI,CAACyB,MAAK,GAAI,CAAC,EAAE;YACjCjD,OAAO,CAACD,KAAK,CAAC,eAAe,EAAEoB,IAAI,CAACpC,QAAQ;YAC5C;UACF;;UAEA;UACA,MAAMwL,SAAQ,GAAIpJ,IAAI,CAACpC,QAAQ,CAACyC,IAAI,CAACgJ,KAAK,CAAC9H,KAAI,IAC7CuH,KAAK,CAACC,OAAO,CAACxH,KAAK,KAAKA,KAAK,CAACO,MAAK,KAAM,KACzCP,KAAK,CAAC,CAAC,KAAK,IAAG,IAAKA,KAAK,CAAC,CAAC,KAAK,IAAG,IACnC,CAACyH,KAAK,CAACC,MAAM,CAAC1H,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAACyH,KAAK,CAACC,MAAM,CAAC1H,KAAK,CAAC,CAAC,CAAC,CAAC,CACrD;UAEA,IAAI,CAAC6H,SAAS,EAAE;YACdvK,OAAO,CAACD,KAAK,CAAC,kBAAkB,EAAEoB,IAAI,CAACpC,QAAQ,CAACyC,IAAI;YACpD;UACF;UAEAxB,OAAO,CAACgE,GAAG,CAAC,WAAW,EAAE7C,IAAI,CAACpC,QAAQ,CAACyC,IAAI;UAC3C,MAAMA,IAAG,GAAIL,IAAI,CAACpC,QAAQ,CAACyC,IAAI,CAACuC,GAAG,CAACrB,KAAI,IAAK,IAAIuB,IAAI,CAACqG,MAAM,CAACF,MAAM,CAAC1H,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE0H,MAAM,CAAC1H,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;UAChG0C,OAAM,GAAI,IAAInB,IAAI,CAACwG,OAAO,CAAC;YACzBjJ,IAAI,EAAEA,IAAI;YACV,GAAG2G;UACL,CAAC;QACH,OAAO,IAAIhH,IAAI,CAACpC,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7C;UACA,IAAI,CAACuC,IAAI,CAACpC,QAAQ,CAAC2C,MAAK,IAAK,CAACuI,KAAK,CAACC,OAAO,CAAC/I,IAAI,CAACpC,QAAQ,CAAC2C,MAAM,KAC5DP,IAAI,CAACpC,QAAQ,CAAC2C,MAAM,CAACuB,MAAK,KAAM,KAChC9B,IAAI,CAACpC,QAAQ,CAAC2C,MAAM,CAACgJ,IAAI,CAACC,GAAE,IAAKA,GAAE,IAAK,IAAG,IAAKR,KAAK,CAACC,MAAM,CAACO,GAAG,CAAC,CAAC,CAAC,EAAE;YACvE3K,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoB,IAAI,CAACpC,QAAQ;YAC3C;UACF;;UAEA;UACA,MAAM6L,aAAY,GAAIzJ,IAAI,CAACpC,QAAQ,CAAC2C,MAAM,CAACqC,GAAG,CAAC4G,GAAE,IAAKP,MAAM,CAACO,GAAG,CAAC;UAEjE3K,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAE4G,aAAa;UACrC,MAAMlJ,MAAK,GAAI,IAAIuC,IAAI,CAAC4G,MAAM,CAC5B,IAAI5G,IAAI,CAACqG,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CAAC,EACnD,IAAI3G,IAAI,CAACqG,MAAM,CAACM,aAAa,CAAC,CAAC,CAAC,EAAEA,aAAa,CAAC,CAAC,CAAC,CACpD;UACAxF,OAAM,GAAI,IAAInB,IAAI,CAAC6G,SAAS,CAAC;YAC3BpJ,MAAM,EAAEA,MAAM;YACd,GAAGyG;UACL,CAAC;QACH,OAAO;UACLnI,OAAO,CAACD,KAAK,CAAC,cAAc,EAAEoB,IAAI,CAACpC,QAAQ,CAACH,IAAI;UAChD;QACF;QAEA,IAAIwG,OAAO,EAAE;UACXpF,OAAO,CAACgE,GAAG,CAAC,kBAAkB;;UAE9B;UACAvG,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAAClB,OAAO;;UAE7B;UACAtH,YAAY,CAACqD,IAAI,CAACxC,EAAE,IAAIyG,OAAM;;UAE9B;UACA,MAAM2F,aAAY,GAAIlN,WAAW,CAAC6F,KAAK,CAACsH,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACtM,EAAC,KAAMwC,IAAI,CAACxC,EAAE;UACvE,IAAIoM,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBlN,WAAW,CAAC6F,KAAK,CAACE,IAAI,CAACzC,IAAI;YAC3BnB,OAAO,CAACgE,GAAG,CAAC,WAAW;UACzB,OAAO;YACLhE,OAAO,CAACgE,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACA,MAAMkH,eAAc,GAAKzG,CAAC,IAAK;YAC7BzE,OAAO,CAACgE,GAAG,CAAC,eAAe,EAAExG,WAAW,CAACkG,KAAK,EAAE,QAAQ,EAAEvC,IAAI,CAACxC,EAAE;YAEjE,IAAInB,WAAW,CAACkG,KAAI,KAAM,YAAY,EAAE;cACtC;cACA1D,OAAO,CAACgE,GAAG,CAAC,WAAW;cACvBmH,UAAU,CAAChK,IAAI,CAACxC,EAAE;cAClB;cACA,IAAI8F,CAAC,CAAC2G,eAAe,EAAE;gBACrB3G,CAAC,CAAC2G,eAAe,CAAC;cACpB;YACF,OAAO;cACL;cACApL,OAAO,CAACgE,GAAG,CAAC,mBAAmB;cAE/B,IAAI;gBACF;gBACA,MAAMU,MAAK,GAAID,CAAC,CAACC,MAAK;gBACtB1E,OAAO,CAACgE,GAAG,CAAC,WAAW,EAAEU,MAAM;;gBAE/B;gBACAF,UAAU,CAAC;kBAAEE;gBAAO,CAAC;cACvB,EAAE,OAAO3E,KAAK,EAAE;gBACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;cACpC;YACF;UACF;;UAEA;UACAqF,OAAO,CAAChB,EAAE,CAAC,OAAO,EAAE8G,eAAe;;UAEnC;UACA9C,UAAU,CAAC,MAAM;YACf3K,WAAW,CAACiG,KAAK,CAAC2E,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENrI,OAAO,CAACgE,GAAG,CAAC,OAAO7C,IAAI,CAACxC,EAAE,WAAW;QAEvC,OAAO;UACLqB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoB,IAAI,CAACxC,EAAE,EAAEoB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMoL,UAAS,GAAKxM,EAAE,IAAK;MACzBJ,cAAc,CAACmF,KAAI,GAAI/E,EAAC;MACxB,MAAMyG,OAAM,GAAItH,YAAY,CAACa,EAAE;MAC/B,IAAIyG,OAAO,EAAE;QACX;QACAA,OAAO,CAACC,UAAU,CAAC;UACjBkC,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACA3J,WAAW,CAAC6F,KAAK,CAACC,OAAO,CAACsH,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACtM,EAAC,KAAMA,EAAE,EAAE;YACf,MAAM0M,YAAW,GAAIvN,YAAY,CAACmN,CAAC,CAACtM,EAAE;YACtC,IAAI0M,YAAY,EAAE;cAChBA,YAAY,CAAChG,UAAU,CAAC;gBACtBkC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAM8D,UAAS,GAAI,MAAO3M,EAAE,IAAK;MAC/B,IAAI;QACFqB,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAErF,EAAE;QAE1B,MAAM8J,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqB/J,EAAE,EAAE,EAAE;UACtDgK,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAAC/C,OAAO,EAAE;UAClB;UACA,MAAMnB,OAAM,GAAItH,YAAY,CAACa,EAAE;UAC/B,IAAIyG,OAAO,EAAE;YACX3H,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACrB,OAAO;YAChC,OAAOtH,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAAC6F,KAAI,GAAI7F,WAAW,CAAC6F,KAAK,CAAC6H,MAAM,CAACpK,IAAG,IAAKA,IAAI,CAACxC,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAACmF,KAAI,KAAM/E,EAAE,EAAE;YAC/BJ,cAAc,CAACmF,KAAI,GAAI,IAAG;UAC5B;UAEA9G,SAAS,CAAC2J,OAAO,CAAC,QAAQ;UAC1BvG,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAErF,EAAE;QAE5B,OAAO;UACL,MAAM,IAAI0K,KAAK,CAACC,MAAM,CAACjD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOtG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACsG,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMmF,QAAO,GAAKrK,IAAI,IAAK;MACzBzC,QAAQ,CAACgF,KAAI,GAAI;QAAE,GAAGvC;MAAK;MAC3B1C,iBAAiB,CAACiF,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAM+H,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFzL,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAEtF,QAAQ,CAACgF,KAAK,CAAC/E,EAAE;QAEzC,MAAM8J,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBhK,QAAQ,CAACgF,KAAK,CAAC/E,EAAE,EAAE,EAAE;UACrEgK,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBnK,IAAI,EAAEF,QAAQ,CAACgF,KAAK,CAAC9E,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACgF,KAAK,CAAC7E,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACgF,KAAK,CAAC5E;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC2J,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QAEnC,IAAID,MAAM,CAAC/C,OAAO,EAAE;UAClB;UACA,MAAMpF,IAAG,GAAItD,WAAW,CAAC6F,KAAK,CAACgI,IAAI,CAACT,CAAA,IAAKA,CAAC,CAACtM,EAAC,KAAMD,QAAQ,CAACgF,KAAK,CAAC/E,EAAE;UACnE,IAAIwC,IAAI,EAAE;YACRA,IAAI,CAACvC,IAAG,GAAIF,QAAQ,CAACgF,KAAK,CAAC9E,IAAG;YAC9BuC,IAAI,CAACtC,KAAI,GAAIH,QAAQ,CAACgF,KAAK,CAAC7E,KAAI;YAChCsC,IAAI,CAACrC,WAAU,GAAIJ,QAAQ,CAACgF,KAAK,CAAC5E,WAAU;;YAE5C;YACA,MAAMsG,OAAM,GAAItH,YAAY,CAACqD,IAAI,CAACxC,EAAE;YACpC,IAAIyG,OAAO,EAAE;cACXA,OAAO,CAACC,UAAU,CAAC;gBACjBiC,WAAW,EAAEpH,gBAAgB,CAACiB,IAAI,CAACvC,IAAI,CAAC,CAACwB,KAAK;gBAC9CqH,SAAS,EAAEvH,gBAAgB,CAACiB,IAAI,CAACvC,IAAI,CAAC,CAACwB,KAAK;gBAC5CsH,WAAW,EAAEjH,iBAAiB,CAACU,IAAI,CAACtC,KAAK,CAAC,CAAC8B;cAC7C,CAAC;YACH;UACF;UAEA/D,SAAS,CAAC2J,OAAO,CAAC,QAAQ;UAC1BvG,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAEsF,MAAM,CAACE,IAAI;QAErC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACjD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOtG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BnD,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACsG,OAAO;MAC7C;MAEA5H,iBAAiB,CAACiF,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMsG,aAAY,GAAI,MAAAA,CAAO2B,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK9N,WAAW,CAAC6F,KAAK,CAACT,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAM2I,OAAM,GAAI/N,WAAW,CAAC6F,KAAK,CAACK,GAAG,CAAC5C,IAAG,IAAKA,IAAI,CAACxC,EAAE;UAErDqB,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAE4H,OAAO;UAEjC,MAAMnD,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB,EAAE;YAChDC,MAAM,EAAE,QAAQ;YAChBC,OAAO,EAAE;cACP,cAAc,EAAE;YAClB,CAAC;YACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;cAAE8C,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAACnD,QAAQ,CAACS,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAAC/C,OAAO,EAAE;YACnB,MAAM,IAAI8C,KAAK,CAACC,MAAM,CAACjD,OAAM,IAAK,WAAW;UAC/C;UAEArG,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAEsF,MAAM,CAACE,IAAI;QACvC;;QAEA;QACAtE,MAAM,CAACC,MAAM,CAACrH,YAAY,CAAC,CAAC6F,OAAO,CAACyB,OAAM,IAAK;UAC7C,IAAI3H,WAAW,CAACiG,KAAK,EAAE;YACrBjG,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACrB,OAAO;UAClC;QACF,CAAC;;QAED;QACAvH,WAAW,CAAC6F,KAAI,GAAI,EAAC;QACrBwB,MAAM,CAAC4G,IAAI,CAAChO,YAAY,CAAC,CAAC6F,OAAO,CAACoI,GAAE,IAAK;UACvC,OAAOjO,YAAY,CAACiO,GAAG;QACzB,CAAC;QACDxN,cAAc,CAACmF,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACiI,WAAW,EAAE;UAChB/O,SAAS,CAAC2J,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOxG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAAC4L,WAAW,EAAE;UAChB/O,SAAS,CAACmD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACsG,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAM2F,qBAAoB,GAAKC,MAAM,IAAK;MACxCzN,aAAa,CAACkF,KAAI,GAAIuI,MAAK;;MAE3B;MACApO,WAAW,CAAC6F,KAAK,CAACC,OAAO,CAACxC,IAAG,IAAK;QAChC,MAAMiE,OAAM,GAAItH,YAAY,CAACqD,IAAI,CAACxC,EAAE;QACpC,IAAIyG,OAAO,EAAE;UACX,IAAI6G,MAAM,CAACC,QAAQ,CAAC/K,IAAI,CAACvC,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAAClB,OAAO;UAC/B,OAAO;YACL3H,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACrB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAM+G,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAItO,WAAW,CAAC6F,KAAK,CAACT,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMvB,MAAK,GAAI,IAAKwC,MAAM,CAACD,IAAI,CAAC4G,MAAM,CAAE;MACxChN,WAAW,CAAC6F,KAAK,CAACC,OAAO,CAACxC,IAAG,IAAK;QAChC,MAAMiE,OAAM,GAAItH,YAAY,CAACqD,IAAI,CAACxC,EAAE;QACpC,IAAIyG,OAAM,IAAKA,OAAO,CAACyE,SAAS,EAAE;UAChCnI,MAAM,CAAC0K,MAAM,CAAChH,OAAO,CAACyE,SAAS,CAAC,CAAC;QACnC,OAAO,IAAI1I,IAAI,CAACpC,QAAQ,EAAEqC,MAAM,EAAE;UAChCM,MAAM,CAAC0K,MAAM,CAACjL,IAAI,CAACpC,QAAQ,CAACqC,MAAM;QACpC;MACF,CAAC;MAED3D,WAAW,CAACiG,KAAK,CAAC2I,SAAS,CAAC3K,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAMkD,YAAW,GAAIA,CAAC3D,GAAG,EAAEC,GAAG,KAAK;MACjClB,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAE;QAAE/C,GAAG;QAAEC,GAAG;QAAEzD,WAAW,EAAE,CAAC,CAACA,WAAW,CAACiG,KAAK;QAAEhG,OAAO,EAAEA,OAAO,CAACgG;MAAM,CAAC;MAC9F,IAAI,CAAChG,OAAO,CAACgG,KAAI,IAAK,CAACjG,WAAW,CAACiG,KAAK,EAAE;MAE1C,MAAMO,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMqI,UAAS,GAAItN,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI;;MAE7C;MACA,MAAMsJ,UAAS,GAAIjJ,yBAAyB,CAACrC,GAAG,EAAEC,GAAG;;MAErD;MACA,MAAMsL,SAAQ,GAAI;QAChBvL,GAAG;QACHC,GAAG;QACHjD,WAAW,EAAEsO,UAAU,CAAC1N,KAAK;QAC7B4N,cAAc,EAAEF,UAAU,CAAC3L,QAAQ;QACnC8L,cAAc,EAAEH,UAAU,CAAC1N,KAAI,KAAM,IAAI;QACzCgF,aAAa,EAAE0I,UAAU,CAAC1I,aAAa;QACvCJ,cAAc,EAAE8I,UAAU,CAAC9I;MAC7B;MAEAzE,UAAU,CAAC0E,KAAK,CAACE,IAAI,CAAC4I,SAAS;MAC/BxM,OAAO,CAACgE,GAAG,CAAC,YAAY,EAAEhF,UAAU,CAAC0E,KAAK,CAACT,MAAM,EAAE,OAAO,EAAEsJ,UAAU;;MAEtE;MACA,IAAII,WAAU,GAAI,SAAQ,EAAE;MAC5B,IAAIrF,WAAU,GAAI,MAAK;MAEvB,IAAIkF,SAAS,CAACE,cAAc,EAAE;QAC5B,QAAQF,SAAS,CAACvO,WAAW;UAC3B,KAAK,KAAK;YACR0O,WAAU,GAAI,SAAQ,EAAE;YACxB;UACF,KAAK,QAAQ;YACXA,WAAU,GAAI,SAAQ,EAAE;YACxB;UACF,KAAK,MAAM;YACTA,WAAU,GAAI,SAAQ,EAAE;YACxB;UACF,KAAK,UAAU;YACbA,WAAU,GAAI,SAAQ,EAAE;YACxBrF,WAAU,GAAI,SAAQ,EAAE;YACxB;QACJ;MACF;;MAEA;MACA,MAAMsF,oBAAmB,GAAIJ,SAAS,CAAC3I,aAAY,GACjD,sGAAqG,GAAI,EAAC;;MAE5G;MACA,MAAM6B,MAAK,GAAI,IAAIzB,IAAI,CAAC0B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAAC3E,GAAG,EAAEC,GAAG,CAAC;QACpB2E,IAAI,EAAE,IAAI5B,IAAI,CAAC6B,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAI9B,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAIvG,gBAAgB,CAAC;;qDAEZiN,WAAW,aAAarF,WAAW;gBACxEsF,oBAAoB;wGACoEN,UAAU;;WAEvG,CAAC;UACFpG,SAAS,EAAE,IAAIjC,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMmG,UAAU,GAAGE,SAAS,CAACE,cAAa,GAAI,KAAKjM,iBAAiB,CAAC+L,SAAS,CAACvO,WAAW,CAAC,EAAEd,IAAI,GAAE,GAAI,SAAS,GAAGqP,SAAS,CAAC3I,aAAY,GAAI,SAAQ,GAAI,EAAE,EAAE;QACpK0B,MAAM,EAAE,GAAE,CAAE;MACd,CAAC;MAEDvF,OAAO,CAACgE,GAAG,CAAC,cAAc;MAC1BvG,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAACZ,MAAM;MAC5BzG,WAAW,CAACyE,KAAK,CAACE,IAAI,CAAC8B,MAAM;MAC7B1F,OAAO,CAACgE,GAAG,CAAC,eAAe,EAAE/E,WAAW,CAACyE,KAAK,CAACT,MAAM;;MAErD;MACA,IAAIjE,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI,CAAC,EAAE;QAC/B4J,cAAc,CAAC;MACjB;;MAEA;MACA,IAAIxG,OAAM,GAAI,SAASiG,UAAU,EAAC;MAClC,IAAIE,SAAS,CAACE,cAAc,EAAE;QAC5B,IAAIF,SAAS,CAAC3I,aAAa,EAAE;UAC3BwC,OAAM,IAAK,aAAa5F,iBAAiB,CAAC+L,SAAS,CAACvO,WAAW,CAAC,EAAEd,IAAI,GAAE;UACxEP,SAAS,CAACkQ,OAAO,CAACzG,OAAO;QAC3B,OAAO;UACLA,OAAM,IAAK,KAAK5F,iBAAiB,CAAC+L,SAAS,CAACvO,WAAW,CAAC,EAAEd,IAAI,GAAE;UAChE,IAAIqP,SAAS,CAACvO,WAAU,KAAM,UAAS,IAAKuO,SAAS,CAACvO,WAAU,KAAM,MAAM,EAAE;YAC5ErB,SAAS,CAACkQ,OAAO,CAACzG,OAAO;UAC3B,OAAO;YACLzJ,SAAS,CAAC2J,OAAO,CAACF,OAAO;UAC3B;QACF;MACF,OAAO;QACLA,OAAM,IAAK,SAAQ;QACnBzJ,SAAS,CAAC2J,OAAO,CAACF,OAAO;MAC3B;IACF;IAEA,MAAMwG,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAACpP,WAAW,CAACiG,KAAK,EAAE;MAExB,MAAMO,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAI/E,QAAQ,CAACwE,KAAK,EAAE;QAClBjG,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACvH,QAAQ,CAACwE,KAAK;MACzC;MAEA,MAAMlC,IAAG,GAAIxC,UAAU,CAAC0E,KAAK,CAACK,GAAG,CAACgJ,CAAA,IAAK,CAACA,CAAC,CAAC9L,GAAG,EAAE8L,CAAC,CAAC7L,GAAG,CAAC;MAErDhC,QAAQ,CAACwE,KAAI,GAAI,IAAIO,IAAI,CAAC+I,QAAQ,CAAC;QACjCxL,IAAI,EAAEA,IAAI;QACV8F,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACf0F,WAAW,EAAE;MACf,CAAC;MAEDxP,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAACpH,QAAQ,CAACwE,KAAK;IACtC;;IAEA;IACA,MAAMwJ,WAAU,GAAKC,KAAK,IAAK;MAC7BnO,UAAU,CAAC0E,KAAK,CAAC0J,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjBrO,UAAU,CAAC0E,KAAK,CAACC,OAAO,CAAC,CAACjB,KAAK,EAAEK,CAAC,KAAK;QACrCuK,kBAAkB,CAAC5K,KAAK,EAAEK,CAAA,GAAI,CAAC;MACjC,CAAC;MAED,IAAI/D,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI,CAAC,EAAE;QAC/B4J,cAAc,CAAC;MACjB,OAAO,IAAI3N,QAAQ,CAACwE,KAAK,EAAE;QACzBjG,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACvH,QAAQ,CAACwE,KAAK;QACvCxE,QAAQ,CAACwE,KAAI,GAAI,IAAG;MACtB;;MAEA;MACApE,QAAQ,CAACoE,KAAI,GAAI,IAAG;IACtB;IAEA,MAAM4J,kBAAiB,GAAIA,CAACd,SAAS,EAAEW,KAAK,KAAK;MAC/C,MAAMlJ,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAM;QAAEhD,GAAG;QAAEC;MAAI,IAAIsL,SAAQ;;MAE7B;MACA,IAAIG,WAAU,GAAI,SAAQ,EAAE;MAC5B,IAAIrF,WAAU,GAAI,MAAK;MAEvB,IAAIkF,SAAS,CAACE,cAAc,EAAE;QAC5B,QAAQF,SAAS,CAACvO,WAAW;UAC3B,KAAK,KAAK;YACR0O,WAAU,GAAI,SAAQ,EAAE;YACxB;UACF,KAAK,QAAQ;YACXA,WAAU,GAAI,SAAQ,EAAE;YACxB;UACF,KAAK,MAAM;YACTA,WAAU,GAAI,SAAQ,EAAE;YACxB;UACF,KAAK,UAAU;YACbA,WAAU,GAAI,SAAQ,EAAE;YACxBrF,WAAU,GAAI,SAAQ,EAAE;YACxB;QACJ;MACF;;MAEA;MACA,MAAMsF,oBAAmB,GAAIJ,SAAS,CAAC3I,aAAY,GACjD,sGAAqG,GAAI,EAAC;MAE5G,MAAM6B,MAAK,GAAI,IAAIzB,IAAI,CAAC0B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAAC3E,GAAG,EAAEC,GAAG,CAAC;QACpB2E,IAAI,EAAE,IAAI5B,IAAI,CAAC6B,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAI9B,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAIvG,gBAAgB,CAAC;;qDAEZiN,WAAW,aAAarF,WAAW;gBACxEsF,oBAAoB;wGACoEO,KAAK;;WAElG,CAAC;UACFjH,SAAS,EAAE,IAAIjC,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,MAAMgH,KAAK,GAAGX,SAAS,CAACE,cAAa,GAAI,KAAKjM,iBAAiB,CAAC+L,SAAS,CAACvO,WAAW,CAAC,EAAEd,IAAI,GAAE,GAAI,SAAS,GAAGqP,SAAS,CAAC3I,aAAY,GAAI,SAAQ,GAAI,EAAE,EAAE;QAC/J0B,MAAM,EAAE;MACV,CAAC;MAED9H,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAACZ,MAAM;MAC5BzG,WAAW,CAACyE,KAAK,CAACE,IAAI,CAAC8B,MAAM;IAC/B;IAEA,MAAM2H,gBAAe,GAAIA,CAAA,KAAM;MAC7BpO,WAAW,CAACyE,KAAK,CAACC,OAAO,CAAC+B,MAAK,IAAK;QAClCjI,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACf,MAAM;MACjC,CAAC;MACDzG,WAAW,CAACyE,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM6J,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAIvO,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI,CAAC,EAAE;QAC/BrG,SAAS,CAACkQ,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACF9M,OAAO,CAACgE,GAAG,CAAC,cAAc;QAC1BhE,OAAO,CAACgE,GAAG,CAAC,KAAK,EAAE7E,iBAAiB,CAACuE,KAAK;QAC1C1D,OAAO,CAACgE,GAAG,CAAC,QAAQ,EAAEhF,UAAU,CAAC0E,KAAK,CAACT,MAAM;QAC7CjD,OAAO,CAACgE,GAAG,CAAC,MAAM,EAAEnG,WAAW,CAAC6F,KAAK;QAErC,MAAM8J,UAAS,GAAIxO,UAAU,CAAC0E,KAAK,CAAC,CAAC;QACrC,MAAM/F,YAAW,GAAIqB,UAAU,CAAC0E,KAAK,CAAC+J,KAAK,CAAC,CAAC,GAAE;;QAE/C;QACA,MAAMC,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVvM,GAAG,EAAEuM,UAAU,CAACvM,GAAG;YACnBC,GAAG,EAAEsM,UAAU,CAACtM,GAAG;YACnBjD,WAAW,EAAEuP,UAAU,CAACvP,WAAW;YACnCwO,cAAc,EAAEe,UAAU,CAACf,cAAc;YACzCC,cAAc,EAAEc,UAAU,CAACd,cAAc;YACzC7I,aAAa,EAAE2J,UAAU,CAAC3J;UAC5B,CAAC;UACDlG,YAAY,EAAEA,YAAY,CAACoG,GAAG,CAACrB,KAAI,KAAM;YACvCzB,GAAG,EAAEyB,KAAK,CAACzB,GAAG;YACdC,GAAG,EAAEwB,KAAK,CAACxB,GAAG;YACdjD,WAAW,EAAEyE,KAAK,CAACzE,WAAW;YAC9BwO,cAAc,EAAE/J,KAAK,CAAC+J,cAAc;YACpCC,cAAc,EAAEhK,KAAK,CAACgK,cAAc;YACpC7I,aAAa,EAAEnB,KAAK,CAACmB;UACvB,CAAC,CAAC,CAAC;UACH8J,SAAS,EAAExO,iBAAiB,CAACuE,KAAI,IAAK,OAAO;UAAE;UAC/CtE,cAAc,EAAEA,cAAc,CAACsE,KAAK;UACpCrE,WAAW,EAAEA,WAAW,CAACqE,KAAK;UAC9B7F,WAAW,EAAEA,WAAW,CAAC6F,KAAI,IAAK7F,WAAW,CAAC6F,KAAK,CAACT,MAAK,GAAI,IAAIpF,WAAW,CAAC6F,KAAK,CAACK,GAAG,CAAC5C,IAAG,KAAM;YAC9FxC,EAAE,EAAEwC,IAAI,CAACxC,EAAE;YACXC,IAAI,EAAEuC,IAAI,CAACvC,IAAI;YACfC,KAAK,EAAEsC,IAAI,CAACtC,KAAK;YACjB+O,aAAa,EAAEzM,IAAI,CAACpC,QAAQ,EAAEH,IAAG,IAAKuC,IAAI,CAACyM,aAAa;YACxDC,aAAa,EAAE1M,IAAI,CAACpC,QAAO,IAAKoC,IAAI,CAAC0M,aAAa;YAClD/O,WAAW,EAAEqC,IAAI,CAACrC;UACpB,CAAC,CAAC,IAAI;QACR;QAEAkB,OAAO,CAACgE,GAAG,CAAC,cAAc,EAAE0J,YAAY;;QAExC;QACA,MAAMjF,QAAO,GAAI,MAAMC,KAAK,CAAC,oBAAoB,EAAE;UACjDC,MAAM,EAAE,MAAM;UACdC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC2E,YAAY;QACnC,CAAC;QAED,IAAI,CAACjF,QAAQ,CAACS,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMV,QAAQ,CAACW,IAAI,CAAC;UACtCpJ,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvBiJ,MAAM,EAAEP,QAAQ,CAACO,MAAM;YACvBC,UAAU,EAAER,QAAQ,CAACQ,UAAU;YAC/BlJ,KAAK,EAAEoJ;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWZ,QAAQ,CAACO,MAAM,MAAMG,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMb,QAAQ,CAACc,IAAI,CAAC;QACnCvJ,OAAO,CAACgE,GAAG,CAAC,SAAS,EAAEsF,MAAM;QAE7B,IAAIA,MAAM,CAAC/C,OAAO,EAAE;UAClB,MAAM;YAAEiD,IAAI;YAAEsE;UAAQ,IAAIxE,MAAK;;UAE/B;UACAhK,QAAQ,CAACoE,KAAI,GAAI;YACfpC,QAAQ,EAAEW,IAAI,CAAC8L,KAAK,CAACvE,IAAI,CAAClI,QAAO,IAAKwM,OAAO,EAAEE,aAAY,IAAK,CAAC,CAAC;YAClEC,QAAQ,EAAEzE,IAAI,CAAC0E,cAAa,IAAKJ,OAAO,EAAEK,aAAY,IAAK,CAAC;YAC5DC,UAAU,EAAE5E,IAAI,CAAC6E,WAAW,EAAEpL,MAAK,IAAK6K,OAAO,EAAEQ,aAAY,IAAK,CAAC;YACnEX,SAAS,EAAEnE,IAAI,CAACmE,SAAQ,IAAKrE,MAAM,CAACqE,SAAS;YAC7CY,kBAAkB,EAAE/E,IAAI,CAACgF,oBAAmB,IAAKV,OAAO,EAAES,kBAAiB,IAAK,EAAE;YAClFE,WAAW,EAAEX,OAAO,EAAEW,WAAU,IAAK;UACvC;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACA,MAAMC,QAAO,GAAInF,IAAI,CAAC6E,WAAU,IAAK7E,IAAI,CAAChI,IAAG,IAAK,EAAC;UACnDoN,4BAA4B,CAACD,QAAQ,EAAEhR,YAAY,EAAEmQ,OAAO,EAAEW,WAAW;UAEzE7R,SAAS,CAAC2J,OAAO,CAAC,GAAGsI,gBAAgB,CAACvF,MAAM,CAACqE,SAAS,CAAC,YAAY;UAEnE,MAAMmB,WAAU,GAAItF,IAAI,CAACgF,oBAAoB,EAAEvL,MAAK,IAAK6K,OAAO,EAAES,kBAAkB,EAAEtL,MAAK,IAAK;UAChG,IAAI6L,WAAU,GAAI,CAAC,EAAE;YACnBlS,SAAS,CAACwK,IAAI,CAAC,QAAQ0H,WAAW,OAAO;UAC3C;;UAEA;UACA,IAAIhB,OAAO,EAAEW,WAAU,IAAKX,OAAO,CAACW,WAAW,CAACxL,MAAK,GAAI,CAAC,EAAE;YAC1D,MAAM8L,SAAQ,GAAIjB,OAAO,CAACW,WAAW,CAAC1K,GAAG,CAAC,CAACiL,MAAM,EAAE7B,KAAK,KACtD,GAAGA,KAAI,GAAI,CAAC,KAAK6B,MAAM,CAACC,MAAM,CAAChO,GAAG,CAACmF,OAAO,CAAC,CAAC,CAAC,KAAK4I,MAAM,CAACC,MAAM,CAAC/N,GAAG,CAACkF,OAAO,CAAC,CAAC,CAAC,GAAG4I,MAAM,CAACE,YAAW,GAAI,SAAQ,GAAI,EAAE,EACvH,CAAC,CAACC,IAAI,CAAC,IAAI;YAEX/G,UAAU,CAAC,MAAM;cACfxL,SAAS,CAAC;gBACRyJ,OAAO,EAAE,aAAa0I,SAAS,EAAE;gBACjCnQ,IAAI,EAAE,MAAM;gBACZqP,QAAQ,EAAE,KAAK;gBACfmB,SAAS,EAAE;cACb,CAAC;YACH,CAAC,EAAE,IAAI;UACT;QAEF,OAAO;UACL,MAAM,IAAI/F,KAAK,CAACC,MAAM,CAACjD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAOtG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BnD,SAAS,CAACmD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAACsG,OAAO;MAC5C;IACF;;IAEA;IACA,MAAMwI,gBAAe,GAAKlB,SAAS,IAAK;MACtC,MAAM0B,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAAC1B,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMiB,4BAA2B,GAAIA,CAACc,WAAW,EAAEC,eAAe,EAAElB,WAAW,KAAK;MAClF,IAAI,CAAChR,WAAW,CAACiG,KAAI,IAAK,CAACgM,WAAU,IAAKA,WAAW,CAACzM,MAAK,GAAI,CAAC,EAAE;MAElE,MAAMgB,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBjE,OAAO,CAACgE,GAAG,CAAC,UAAU,EAAE;QACtB4L,UAAU,EAAEF,WAAW,CAACzM,MAAM;QAC9B4M,WAAW,EAAEF,eAAe,CAAC1M,MAAM;QACnCwL,WAAW,EAAEA;MACf,CAAC;;MAED;MACA,MAAMqB,UAAS,GAAIJ,WAAW,CAAC3L,GAAG,CAACrB,KAAI,IAAK,CAACA,KAAK,CAACzB,GAAG,EAAEyB,KAAK,CAACxB,GAAG,CAAC;MAElEhC,QAAQ,CAACwE,KAAI,GAAI,IAAIO,IAAI,CAAC+I,QAAQ,CAAC;QACjCxL,IAAI,EAAEsO,UAAU;QAChBxI,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACf0F,WAAW,EAAE,OAAO;QACpBzF,aAAa,EAAE;MACjB,CAAC;MAED/J,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAACpH,QAAQ,CAACwE,KAAK;MAEpC,MAAMqM,OAAM,GAAI,EAAC;;MAEjB;MACA,MAAMC,WAAU,GAAI,IAAI/L,IAAI,CAAC0B,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAAC8J,WAAW,CAAC,CAAC,CAAC,CAACzO,GAAG,EAAEyO,WAAW,CAAC,CAAC,CAAC,CAACxO,GAAG,CAAC;QAClD2E,IAAI,EAAE,IAAI5B,IAAI,CAAC6B,IAAI,CAAC;UAClBC,IAAI,EAAE,IAAI9B,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAC3BC,KAAK,EAAE,4BAA2B,GAAIvG,gBAAgB,CAAC;;;;;WAKtD,CAAC;UACFwG,SAAS,EAAE,IAAIjC,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFG,KAAK,EAAE,IAAI;QACXZ,MAAM,EAAE;MACV,CAAC;MAED9H,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAAC0J,WAAW;MACjCD,OAAO,CAACnM,IAAI,CAACoM,WAAW;;MAExB;MACA,IAAIvB,WAAU,IAAKA,WAAW,CAACxL,MAAK,GAAI,CAAC,EAAE;QACzCwL,WAAW,CAAC9K,OAAO,CAAC,CAACqL,MAAM,EAAE7B,KAAK,KAAK;UACrC,MAAM8C,UAAS,GAAI9C,KAAI,GAAI;UAC3B,MAAM+C,UAAS,GAAIlB,MAAM,CAACE,YAAW;UACrC,MAAMjR,WAAU,GAAI+Q,MAAM,CAAC/Q,WAAU;;UAErC;UACA,IAAImC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAI8P,UAAU,EAAE;YACd,QAAQjS,WAAW;cACjB,KAAK,KAAK;gBACRmC,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,QAAQ;gBACXA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,MAAM;gBACTA,KAAI,GAAI,SAAQ,EAAE;gBAClB;cACF,KAAK,UAAU;gBACbA,KAAI,GAAI,SAAQ,EAAE;gBAClB;YACJ;UACF;UAEA,MAAM+P,YAAW,GAAI,IAAIlM,IAAI,CAAC0B,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAACC,MAAM,CAAChO,GAAG,EAAE+N,MAAM,CAACC,MAAM,CAAC/N,GAAG,CAAC;YAChD2E,IAAI,EAAE,IAAI5B,IAAI,CAAC6B,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAI9B,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAIvG,gBAAgB,CAAC;;yDAEZU,KAAK;2GAC6C6P,UAAU;oBACjGC,UAAS,GAAI,8EAA6E,GAAI,EAAE;;eAErG,CAAC;cACFhK,SAAS,EAAE,IAAIjC,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAE,MAAM8J,UAAU,GAAGC,UAAS,GAAI,KAAKjS,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3EsH,MAAM,EAAE;UACV,CAAC;UAED9H,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAAC6J,YAAY;UAClCJ,OAAO,CAACnM,IAAI,CAACuM,YAAY;QAC3B,CAAC;MACH,OAAO;QACL;QACAR,eAAe,CAAChM,OAAO,CAAC,CAACqL,MAAM,EAAE7B,KAAK,KAAK;UACzC,MAAMiD,YAAW,GAAIjD,KAAI,GAAI;UAC7B,MAAMkD,YAAW,GAAIlD,KAAI,KAAMwC,eAAe,CAAC1M,MAAK,GAAI;UAExD,MAAMkN,YAAW,GAAI,IAAIlM,IAAI,CAAC0B,MAAM,CAAC;YACnCC,QAAQ,EAAE,CAACoJ,MAAM,CAAC/N,GAAG,EAAE+N,MAAM,CAAC9N,GAAG,CAAC;YAClC2E,IAAI,EAAE,IAAI5B,IAAI,CAAC6B,IAAI,CAAC;cAClBC,IAAI,EAAE,IAAI9B,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;cAC3BC,KAAK,EAAE,4BAA2B,GAAIvG,gBAAgB,CAAC;;yDAEZ2Q,YAAW,GAAI,SAAQ,GAAI,SAAS;2GACcA,YAAW,GAAI,GAAE,GAAID,YAAY;;eAE7H,CAAC;cACFlK,SAAS,EAAE,IAAIjC,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;YACjC,CAAC,CAAC;YACFG,KAAK,EAAEkK,YAAW,GAAI,IAAG,GAAI,MAAMD,YAAY,EAAE;YACjD7K,MAAM,EAAE;UACV,CAAC;UAED9H,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAAC6J,YAAY;UAClCJ,OAAO,CAACnM,IAAI,CAACuM,YAAY;QAC3B,CAAC;MACH;MAEAlR,WAAW,CAACyE,KAAI,GAAIqM,OAAM;;MAE1B;MACA3H,UAAU,CAAC,MAAM;QACf,IAAIlJ,QAAQ,CAACwE,KAAK,EAAE;UAClBjG,WAAW,CAACiG,KAAK,CAAC2E,UAAU,CAAC,CAACnJ,QAAQ,CAACwE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;QAC1E;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMgL,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAIxP,QAAQ,CAACwE,KAAK,EAAE;QAClBjG,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACvH,QAAQ,CAACwE,KAAK;QACvCxE,QAAQ,CAACwE,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA2J,gBAAgB,CAAC;IACnB;IAEA,MAAMiD,0BAAyB,GAAIA,CAAA,KAAM;MACvC,IAAItC,aAAY,GAAI;MACpB,KAAK,IAAIjL,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAI/D,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI,CAAC,EAAEF,CAAC,EAAE,EAAE;QACpD,MAAMwN,EAAC,GAAIvR,UAAU,CAAC0E,KAAK,CAACX,CAAC;QAC7B,MAAMyN,EAAC,GAAIxR,UAAU,CAAC0E,KAAK,CAACX,CAAA,GAAI,CAAC;QACjCiL,aAAY,IAAKyC,WAAW,CAACF,EAAE,CAACrP,GAAG,EAAEqP,EAAE,CAACtP,GAAG,EAAEuP,EAAE,CAACtP,GAAG,EAAEsP,EAAE,CAACvP,GAAG;MAC7D;MACA,OAAO+M,aAAY;IACrB;IAEA,MAAMyC,WAAU,GAAIA,CAAC7O,IAAI,EAAED,IAAI,EAAEG,IAAI,EAAED,IAAI,KAAK;MAC9C,MAAME,CAAA,GAAI,MAAK;MACf,MAAM2O,EAAC,GAAI9O,IAAG,GAAIK,IAAI,CAACC,EAAE,GAAC,GAAE;MAC5B,MAAMyO,EAAC,GAAI7O,IAAG,GAAIG,IAAI,CAACC,EAAE,GAAC,GAAE;MAC5B,MAAM0O,EAAC,GAAI,CAAC9O,IAAI,GAACF,IAAI,IAAIK,IAAI,CAACC,EAAE,GAAC,GAAE;MACnC,MAAM2O,EAAC,GAAI,CAAChP,IAAI,GAACF,IAAI,IAAIM,IAAI,CAACC,EAAE,GAAC,GAAE;MAEnC,MAAME,CAAA,GAAIH,IAAI,CAACI,GAAG,CAACuO,EAAE,GAAC,CAAC,IAAI3O,IAAI,CAACI,GAAG,CAACuO,EAAE,GAAC,CAAC,IAC9B3O,IAAI,CAACK,GAAG,CAACoO,EAAE,IAAIzO,IAAI,CAACK,GAAG,CAACqO,EAAE,IAC1B1O,IAAI,CAACI,GAAG,CAACwO,EAAE,GAAC,CAAC,IAAI5O,IAAI,CAACI,GAAG,CAACwO,EAAE,GAAC,CAAC;MACxC,MAAMtO,CAAA,GAAI,IAAIN,IAAI,CAACO,KAAK,CAACP,IAAI,CAACQ,IAAI,CAACL,CAAC,CAAC,EAAEH,IAAI,CAACQ,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAOL,CAAA,GAAIQ,CAAA;IACb;;IAEA;IACA,MAAMuO,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAMjU,YAAY,CAACkU,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtBrS,IAAI,EAAE;QACR,CAAC;QAEDhC,SAAS,CAAC2J,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACN3J,SAAS,CAACwK,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAM8J,QAAO,GAAIA,CAAA,KAAM;MACrB7D,gBAAgB,CAAC;MAEjB,IAAInO,QAAQ,CAACwE,KAAK,EAAE;QAClBjG,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACvH,QAAQ,CAACwE,KAAK;QACvCxE,QAAQ,CAACwE,KAAI,GAAI,IAAG;MACtB;MAEA1E,UAAU,CAAC0E,KAAI,GAAI,EAAC;MACpBpE,QAAQ,CAACoE,KAAI,GAAI,IAAG;MAEpB9G,SAAS,CAAC2J,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAM4K,uBAAsB,GAAKxD,SAAS,IAAK;MAC7CxO,iBAAiB,CAACuE,KAAI,GAAIiK,SAAQ;IACpC;;IAEA;IACA,MAAMyD,oBAAmB,GAAKC,QAAQ,IAAK;MACzCjS,cAAc,CAACsE,KAAI,GAAI2N,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnClS,WAAW,CAACqE,KAAI,GAAI6N,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAIxS,UAAU,CAAC0E,KAAK,CAACT,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMuK,UAAS,GAAIxO,UAAU,CAAC0E,KAAK,CAAC,CAAC;MACrCjG,WAAW,CAACiG,KAAK,CAAC+N,SAAS,CAAC,CAACjE,UAAU,CAACvM,GAAG,EAAEuM,UAAU,CAACtM,GAAG,CAAC;MAC5DzD,WAAW,CAACiG,KAAK,CAACgO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAI3S,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAM2O,QAAO,GAAI5S,UAAU,CAAC0E,KAAK,CAAC1E,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI,CAAC;MAC7DxF,WAAW,CAACiG,KAAK,CAAC+N,SAAS,CAAC,CAACG,QAAQ,CAAC3Q,GAAG,EAAE2Q,QAAQ,CAAC1Q,GAAG,CAAC;MACxDzD,WAAW,CAACiG,KAAK,CAACgO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,iBAAgB,GAAKC,WAAW,IAAK;MACzC,IAAI,CAACA,WAAU,IAAKA,WAAW,CAAC7O,MAAK,KAAM,CAAC,EAAE;QAC5CrG,SAAS,CAACmD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,IAAI;QACF;QACA,MAAMgS,SAAQ,GAAID,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEvP,KAAK,KAAKuP,GAAE,GAAIvP,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAIoP,WAAW,CAAC7O,MAAK;QAC3F,MAAMiP,SAAQ,GAAIJ,WAAW,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEvP,KAAK,KAAKuP,GAAE,GAAIvP,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAIoP,WAAW,CAAC7O,MAAK;QAE3FjD,OAAO,CAACgE,GAAG,CAAC,aAAa+N,SAAS,KAAKG,SAAS,GAAG;;QAEnD;QACAzU,WAAW,CAACiG,KAAK,CAAC+N,SAAS,CAAC,CAACM,SAAS,EAAEG,SAAS,CAAC;;QAElD;QACA,IAAIJ,WAAW,CAAC7O,MAAK,KAAM,CAAC,EAAE;UAC5BxF,WAAW,CAACiG,KAAK,CAACgO,OAAO,CAAC,EAAE;QAC9B,OAAO;UACL;UACA,MAAMS,IAAG,GAAIL,WAAW,CAAC/N,GAAG,CAACgJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMqF,IAAG,GAAIN,WAAW,CAAC/N,GAAG,CAACgJ,CAAA,IAAKA,CAAC,CAAC,CAAC,CAAC;UACtC,MAAMsF,OAAM,GAAIpQ,IAAI,CAACqQ,GAAG,CAAC,GAAGH,IAAI,IAAIlQ,IAAI,CAACsQ,GAAG,CAAC,GAAGJ,IAAI;UACpD,MAAMK,OAAM,GAAIvQ,IAAI,CAACqQ,GAAG,CAAC,GAAGF,IAAI,IAAInQ,IAAI,CAACsQ,GAAG,CAAC,GAAGH,IAAI;UACpD,MAAMK,OAAM,GAAIxQ,IAAI,CAACqQ,GAAG,CAACD,OAAO,EAAEG,OAAO;UAEzC,IAAIE,IAAG,GAAI,EAAC;UACZ,IAAID,OAAM,GAAI,IAAI,EAAEC,IAAG,GAAI,EAAC,MACvB,IAAID,OAAM,GAAI,GAAG,EAAEC,IAAG,GAAI,EAAC,MAC3B,IAAID,OAAM,GAAI,CAAC,EAAEC,IAAG,GAAI,EAAC,MACzBA,IAAG,GAAI;UAEZjV,WAAW,CAACiG,KAAK,CAACgO,OAAO,CAACgB,IAAI;QAChC;QAEA9V,SAAS,CAAC2J,OAAO,CAAC,QAAQuL,WAAW,CAAC7O,MAAM,SAAS;MACvD,EAAE,OAAO0P,WAAW,EAAE;QACpB3S,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE4S,WAAW;QACrC/V,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAM6S,SAAQ,GAAIA,CAAA,KAAM;MACtB5S,OAAO,CAACgE,GAAG,CAAC,sCAAsC,EAAEhF,UAAU,CAAC0E,KAAK,CAACT,MAAM;MAE3E,IAAI,CAACjE,UAAU,CAAC0E,KAAI,IAAK1E,UAAU,CAAC0E,KAAK,CAACT,MAAK,KAAM,CAAC,EAAE;QACtDjD,OAAO,CAACC,IAAI,CAAC,SAAS;QACtBrD,SAAS,CAACkQ,OAAO,CAAC,UAAU;QAC5B;MACF;MAEA,IAAI;QACF;QACA,IAAI,CAACrP,WAAW,CAACiG,KAAK,EAAE;UACtB1D,OAAO,CAACD,KAAK,CAAC,SAAS;UACvBnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;UACxB;QACF;;QAEA;QACA,IAAI,CAACmE,MAAM,CAACD,IAAG,IAAK,CAACC,MAAM,CAACD,IAAI,CAAC4G,MAAM,EAAE;UACvC7K,OAAO,CAACD,KAAK,CAAC,oBAAoB;UAClCnD,SAAS,CAACmD,KAAK,CAAC,YAAY;UAC5B;QACF;QAEAC,OAAO,CAACgE,GAAG,CAAC,QAAQ,EAAEhF,UAAU,CAAC0E,KAAK;;QAEtC;QACA,MAAMhC,MAAK,GAAI,IAAIwC,MAAM,CAACD,IAAI,CAAC4G,MAAM,CAAC;;QAEtC;QACA,IAAIgI,gBAAe,GAAI;QACvB,MAAMf,WAAU,GAAI,EAAC;QAErB9S,UAAU,CAAC0E,KAAK,CAACC,OAAO,CAAC,CAACjB,KAAK,EAAEyK,KAAK,KAAK;UACzC,IAAIzK,KAAI,IAAK,OAAOA,KAAK,CAACzB,GAAE,KAAM,QAAO,IAAK,OAAOyB,KAAK,CAACxB,GAAE,KAAM,QAAO,IACtE,CAACiJ,KAAK,CAACzH,KAAK,CAACzB,GAAG,KAAK,CAACkJ,KAAK,CAACzH,KAAK,CAACxB,GAAG,KACrC4R,QAAQ,CAACpQ,KAAK,CAACzB,GAAG,KAAK6R,QAAQ,CAACpQ,KAAK,CAACxB,GAAG,KACzCwB,KAAK,CAACzB,GAAE,IAAK,CAAC,GAAE,IAAKyB,KAAK,CAACzB,GAAE,IAAK,GAAE,IACpCyB,KAAK,CAACxB,GAAE,IAAK,CAAC,EAAC,IAAKwB,KAAK,CAACxB,GAAE,IAAK,EAAE,EAAE;YAEvC;YACA,MAAMD,GAAE,GAAImJ,MAAM,CAAC1H,KAAK,CAACzB,GAAG;YAC5B,MAAMC,GAAE,GAAIkJ,MAAM,CAAC1H,KAAK,CAACxB,GAAG;YAE5B,IAAI,CAACiJ,KAAK,CAAClJ,GAAG,KAAK,CAACkJ,KAAK,CAACjJ,GAAG,KAAK4R,QAAQ,CAAC7R,GAAG,KAAK6R,QAAQ,CAAC5R,GAAG,CAAC,EAAE;cAChE4Q,WAAW,CAAClO,IAAI,CAAC,CAAC3C,GAAG,EAAEC,GAAG,CAAC;cAC3B2R,gBAAgB,EAAC;cACjB7S,OAAO,CAACgE,GAAG,CAAC,UAAUmJ,KAAI,GAAI,CAAC,MAAMlM,GAAG,KAAKC,GAAG,GAAG;YACrD,OAAO;cACLlB,OAAO,CAACC,IAAI,CAAC,UAAUkN,KAAI,GAAI,CAAC,GAAG,EAAEzK,KAAK;YAC5C;UACF,OAAO;YACL1C,OAAO,CAACC,IAAI,CAAC,SAASkN,KAAI,GAAI,CAAC,GAAG,EAAEzK,KAAK;UAC3C;QACF,CAAC;QAED,IAAImQ,gBAAe,KAAM,CAAC,EAAE;UAC1B7S,OAAO,CAACD,KAAK,CAAC,UAAU;UACxBnD,SAAS,CAACmD,KAAK,CAAC,SAAS;UACzB;QACF;;QAEA;QACA+R,WAAW,CAACnO,OAAO,CAAC,CAACoP,KAAK,EAAE5F,KAAK,KAAK;UACpC,IAAI;YACFzL,MAAM,CAAC0K,MAAM,CAAC2G,KAAK;YACnB/S,OAAO,CAACgE,GAAG,CAAC,WAAWmJ,KAAI,GAAI,CAAC,MAAM4F,KAAK,CAAC,CAAC,CAAC,KAAKA,KAAK,CAAC,CAAC,CAAC,GAAG;UAChE,EAAE,OAAOC,WAAW,EAAE;YACpBhT,OAAO,CAACD,KAAK,CAAC,aAAaoN,KAAI,GAAI,CAAC,GAAG,EAAE4F,KAAK,EAAEC,WAAW;UAC7D;QACF,CAAC;;QAED;QACA,IAAIC,SAAS,EAAEC,SAAQ;QACvB,IAAI;UACFD,SAAQ,GAAIvR,MAAM,CAACoI,YAAY,CAAC;UAChCoJ,SAAQ,GAAIxR,MAAM,CAACqI,YAAY,CAAC;QAClC,EAAE,OAAOoJ,cAAc,EAAE;UACvBnT,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEoT,cAAc;UACzCvW,SAAS,CAACmD,KAAK,CAAC,UAAU;UAC1B8R,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEA9R,OAAO,CAACgE,GAAG,CAAC,OAAO,EAAE;UACnBiP,SAAS,EAAE,CAACA,SAAS,CAAChS,GAAG,EAAEgS,SAAS,CAAC/R,GAAG,CAAC;UACzCgS,SAAS,EAAE,CAACA,SAAS,CAACjS,GAAG,EAAEiS,SAAS,CAAChS,GAAG;QAC1C,CAAC;;QAED;QACA,IAAI,CAAC+R,SAAQ,IAAK,CAACC,SAAQ,IACvB/I,KAAK,CAAC8I,SAAS,CAAChS,GAAG,KAAKkJ,KAAK,CAAC8I,SAAS,CAAC/R,GAAG,KAC3CiJ,KAAK,CAAC+I,SAAS,CAACjS,GAAG,KAAKkJ,KAAK,CAAC+I,SAAS,CAAChS,GAAG,KAC3C,CAAC4R,QAAQ,CAACG,SAAS,CAAChS,GAAG,KAAK,CAAC6R,QAAQ,CAACG,SAAS,CAAC/R,GAAG,KACnD,CAAC4R,QAAQ,CAACI,SAAS,CAACjS,GAAG,KAAK,CAAC6R,QAAQ,CAACI,SAAS,CAAChS,GAAG,CAAC,EAAE;UACxDlB,OAAO,CAACD,KAAK,CAAC,YAAY;UAC1BnD,SAAS,CAACkQ,OAAO,CAAC,gBAAgB;UAClC+E,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,MAAMO,OAAM,GAAIpQ,IAAI,CAACmR,GAAG,CAACF,SAAS,CAACjS,GAAE,GAAIgS,SAAS,CAAChS,GAAG;QACtD,MAAMuR,OAAM,GAAIvQ,IAAI,CAACmR,GAAG,CAACF,SAAS,CAAChS,GAAE,GAAI+R,SAAS,CAAC/R,GAAG;QAEtD,IAAImR,OAAM,GAAI,MAAK,IAAKG,OAAM,GAAI,MAAM,EAAE;UACxCxS,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7B4R,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEA,IAAIO,OAAM,GAAI,GAAE,IAAKG,OAAM,GAAI,EAAE,EAAE;UACjCxS,OAAO,CAACC,IAAI,CAAC,gBAAgB;UAC7B4R,iBAAiB,CAACC,WAAW;UAC7B;QACF;;QAEA;QACA,IAAI;UACFrU,WAAW,CAACiG,KAAK,CAAC2I,SAAS,CAAC3K,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAE;UAC7D1B,OAAO,CAACgE,GAAG,CAAC,UAAU;QACxB,EAAE,OAAOqP,WAAW,EAAE;UACpBrT,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEsT,WAAW;UACtCzW,SAAS,CAACkQ,OAAO,CAAC,gBAAgB;UAClC+E,iBAAiB,CAACC,WAAW;UAC7B;QACF;QAEA9R,OAAO,CAACgE,GAAG,CAAC,aAAa,EAAE6O,gBAAgB,EAAE,MAAM;QACnDjW,SAAS,CAAC2J,OAAO,CAAC,QAAQsM,gBAAgB,SAAS;MAErD,EAAE,OAAO9S,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,gBAAgB,EAAEA,KAAK;QACrCnD,SAAS,CAACmD,KAAK,CAAC,YAAW,GAAIA,KAAK,CAACsG,OAAO;MAC9C;IACF;;IAEA;;IAEA;IACA,MAAMiN,eAAc,GAAK9R,IAAI,IAAK;MAChC,IAAI,CAAC/D,WAAW,CAACiG,KAAI,IAAK,CAACQ,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,MAAM/E,QAAO,GAAI,IAAIgF,MAAM,CAACD,IAAI,CAAC+I,QAAQ,CAAC;UACxCxL,IAAI,EAAEA,IAAI,CAAC6M,WAAW,CAACtK,GAAG,CAACrB,KAAI,IAAK,CAACA,KAAK,CAACzB,GAAG,EAAEyB,KAAK,CAACxB,GAAG,CAAC,CAAC;UAC3DoG,WAAW,EAAE9F,IAAI,CAACpB,KAAI,IAAK,SAAS;UACpCmH,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,GAAG;UAClByF,WAAW,EAAE,OAAO;UACpBsG,OAAO,EAAE,IAAI;UACbC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;QAC3B,CAAC;;QAED;QACA,MAAMhG,UAAS,GAAIhM,IAAI,CAAC6M,WAAW,CAAC,CAAC;QACrC,MAAMuD,QAAO,GAAIpQ,IAAI,CAAC6M,WAAW,CAAC7M,IAAI,CAAC6M,WAAW,CAACpL,MAAK,GAAI,CAAC;QAE7D,MAAM+M,WAAU,GAAI,IAAI9L,MAAM,CAACD,IAAI,CAAC0B,MAAM,CAAC;UACzCC,QAAQ,EAAE,CAAC4H,UAAU,CAACvM,GAAG,EAAEuM,UAAU,CAACtM,GAAG,CAAC;UAC1C2E,IAAI,EAAE,IAAI3B,MAAM,CAACD,IAAI,CAAC6B,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAI7B,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsBnG,kBAAkB,CAAC;;uDAEL0B,IAAI,CAACpB,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJ8F,SAAS,EAAE,IAAIhC,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG3E,IAAI,CAACrE,IAAI,OAAO;UAC1BoI,MAAM,EAAE;QACV,CAAC;QAED,MAAMkO,SAAQ,GAAI,IAAIvP,MAAM,CAACD,IAAI,CAAC0B,MAAM,CAAC;UACvCC,QAAQ,EAAE,CAACgM,QAAQ,CAAC3Q,GAAG,EAAE2Q,QAAQ,CAAC1Q,GAAG,CAAC;UACtC2E,IAAI,EAAE,IAAI3B,MAAM,CAACD,IAAI,CAAC6B,IAAI,CAAC;YACzBC,IAAI,EAAE,IAAI7B,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;YAClCC,KAAK,EAAE,sBAAsBnG,kBAAkB,CAAC;;uDAEL0B,IAAI,CAACpB,KAAI,IAAK,SAAS;;;aAGjE,CAAC,EAAE;YACJ8F,SAAS,EAAE,IAAIhC,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;UACxC,CAAC,CAAC;UACFG,KAAK,EAAE,GAAG3E,IAAI,CAACrE,IAAI,OAAO;UAC1BoI,MAAM,EAAE;QACV,CAAC;;QAED;QACA/F,mBAAmB,CAACgC,IAAI,CAAC7C,EAAE,IAAI;UAC7BO,QAAQ;UACR8Q,WAAW;UACXyD;QACF;;QAEA;QACAhW,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAAC,CAACpH,QAAQ,EAAE8Q,WAAW,EAAEyD,SAAS,CAAC;QAExD7W,SAAS,CAAC2J,OAAO,CAAC,UAAU/E,IAAI,CAACrE,IAAI,EAAE;MACzC,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAM2T,eAAc,GAAKlS,IAAI,IAAK;MAChC,IAAI,CAAC/D,WAAW,CAACiG,KAAK,EAAE;MAExB,MAAMuE,QAAO,GAAIzI,mBAAmB,CAACgC,IAAI,CAAC7C,EAAE;MAC5C,IAAIsJ,QAAQ,EAAE;QACZxK,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAAC,CAACwB,QAAQ,CAAC/I,QAAQ,EAAE+I,QAAQ,CAAC+H,WAAW,EAAE/H,QAAQ,CAACwL,SAAS,CAAC;QACtF,OAAOjU,mBAAmB,CAACgC,IAAI,CAAC7C,EAAE;QAClC/B,SAAS,CAACwK,IAAI,CAAC,UAAU5F,IAAI,CAACrE,IAAI,EAAE;MACtC;IACF;;IAEA;IACA,MAAMwW,mBAAkB,GAAKC,KAAK,IAAK;MACrCA,KAAK,CAACjQ,OAAO,CAACnC,IAAG,IAAK;QACpB,IAAI,CAACjC,oBAAoB,CAACmE,KAAK,CAACwI,QAAQ,CAAC1K,IAAI,CAAC7C,EAAE,CAAC,EAAE;UACjD2U,eAAe,CAAC9R,IAAI;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAMqS,mBAAkB,GAAIA,CAAA,KAAM;MAChC3O,MAAM,CAAC4G,IAAI,CAACtM,mBAAmB,CAAC,CAACmE,OAAO,CAACmQ,MAAK,IAAK;QACjD,MAAM7L,QAAO,GAAIzI,mBAAmB,CAACsU,MAAM;QAC3C,IAAI7L,QAAO,IAAKxK,WAAW,CAACiG,KAAK,EAAE;UACjCjG,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAAC,CAACwB,QAAQ,CAAC/I,QAAQ,EAAE+I,QAAQ,CAAC+H,WAAW,EAAE/H,QAAQ,CAACwL,SAAS,CAAC;QACxF;MACF,CAAC;MACD;MACAvO,MAAM,CAAC4G,IAAI,CAACtM,mBAAmB,CAAC,CAACmE,OAAO,CAACoI,GAAE,IAAK,OAAOvM,mBAAmB,CAACuM,GAAG,CAAC;MAC/EnP,SAAS,CAACwK,IAAI,CAAC,WAAW;IAC5B;;IAEA;IACA,MAAM2M,mBAAkB,GAAKvS,IAAI,IAAK;MACpC,IAAI,CAAC/D,WAAW,CAACiG,KAAI,IAAK,CAAClC,IAAI,CAAC6M,WAAU,IAAK7M,IAAI,CAAC6M,WAAW,CAACpL,MAAK,KAAM,CAAC,EAAE;MAE9E,IAAI;QACF,MAAMvB,MAAK,GAAI,IAAIwC,MAAM,CAACD,IAAI,CAAC4G,MAAM,CAAC;QACtCrJ,IAAI,CAAC6M,WAAW,CAAC1K,OAAO,CAACjB,KAAI,IAAK;UAChChB,MAAM,CAAC0K,MAAM,CAAC,CAAC1J,KAAK,CAACzB,GAAG,EAAEyB,KAAK,CAACxB,GAAG,CAAC;QACtC,CAAC;QACDzD,WAAW,CAACiG,KAAK,CAAC2I,SAAS,CAAC3K,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3D9E,SAAS,CAAC2J,OAAO,CAAC,YAAY/E,IAAI,CAACrE,IAAI,EAAE;MAC3C,EAAE,OAAO4C,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,QAAQ;MAC1B;IACF;;IAEA;IACA,MAAMiU,oBAAmB,GAAKxS,IAAI,IAAK;MACrC;MACA0P,QAAQ,CAAC;;MAET;MACAlS,UAAU,CAAC0E,KAAI,GAAI,CAAC,GAAGlC,IAAI,CAAC6M,WAAW;MACvClP,iBAAiB,CAACuE,KAAI,GAAIlC,IAAI,CAACmM,SAAQ,IAAK,OAAM;MAClDvO,cAAc,CAACsE,KAAI,GAAIlC,IAAI,CAACyS,eAAc,IAAK,GAAE;MACjD5U,WAAW,CAACqE,KAAI,GAAIlC,IAAI,CAAC0S,YAAW,IAAK,EAAC;;MAE1C;MACA1W,WAAW,CAACkG,KAAI,GAAI,cAAa;;MAEjC;MACAyQ,iBAAiB,CAAC;MAElBvX,SAAS,CAAC2J,OAAO,CAAC,UAAU/E,IAAI,CAACrE,IAAI,SAAS;IAChD;;IAEA;IACA,MAAMiX,0BAAyB,GAAKC,OAAO,IAAK;MAC9C9U,oBAAoB,CAACmE,KAAI,GAAI2Q,OAAM;IACrC;;IAEA;IACA,MAAMF,iBAAgB,GAAIA,CAACG,aAAY,GAAI,KAAK,KAAK;MACnD,IAAI,CAAC7W,WAAW,CAACiG,KAAI,IAAK,CAACQ,MAAM,CAACD,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIhF,WAAW,CAACyE,KAAK,CAACT,MAAK,GAAI,CAAC,EAAE;UAChCxF,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACxH,WAAW,CAACyE,KAAK;UAC1CzE,WAAW,CAACyE,KAAI,GAAI,EAAC;QACvB;QAEA,IAAIxE,QAAQ,CAACwE,KAAK,EAAE;UAClBjG,WAAW,CAACiG,KAAK,CAAC+C,MAAM,CAACvH,QAAQ,CAACwE,KAAK;UACvCxE,QAAQ,CAACwE,KAAI,GAAI,IAAG;QACtB;QAEA,IAAI1E,UAAU,CAAC0E,KAAK,CAACT,MAAK,KAAM,CAAC,EAAE;QAEnC,IAAIqR,aAAa,EAAE;UACjB;UACA,MAAM9G,UAAS,GAAIxO,UAAU,CAAC0E,KAAK,CAAC,CAAC;UACrC,MAAMkO,QAAO,GAAI5S,UAAU,CAAC0E,KAAK,CAAC1E,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI,CAAC;;UAE7D;UACA,IAAIuK,UAAS,IAAK,OAAOA,UAAU,CAACvM,GAAE,KAAM,QAAO,IAAK,OAAOuM,UAAU,CAACtM,GAAE,KAAM,QAAO,IACrF,CAACiJ,KAAK,CAACqD,UAAU,CAACvM,GAAG,KAAK,CAACkJ,KAAK,CAACqD,UAAU,CAACtM,GAAG,CAAC,EAAE;YACpD,MAAM8O,WAAU,GAAI,IAAI9L,MAAM,CAACD,IAAI,CAAC0B,MAAM,CAAC;cACzCC,QAAQ,EAAE,CAAC4H,UAAU,CAACvM,GAAG,EAAEuM,UAAU,CAACtM,GAAG,CAAC;cAC1C2E,IAAI,EAAE,IAAI3B,MAAM,CAACD,IAAI,CAAC6B,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAI7B,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsBnG,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJoG,SAAS,EAAE,IAAIhC,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQqH,UAAU,CAACvM,GAAG,CAACmF,OAAO,CAAC,CAAC,CAAC,KAAKoH,UAAU,CAACtM,GAAG,CAACkF,OAAO,CAAC,CAAC,CAAC,GAAG;cACzEb,MAAM,EAAE;YACV,CAAC;YACDtG,WAAW,CAACyE,KAAK,CAACE,IAAI,CAACoM,WAAW;UACpC;;UAEA;UACA,IAAI4B,QAAO,IAAK,OAAOA,QAAQ,CAAC3Q,GAAE,KAAM,QAAO,IAAK,OAAO2Q,QAAQ,CAAC1Q,GAAE,KAAM,QAAO,IAC/E,CAACiJ,KAAK,CAACyH,QAAQ,CAAC3Q,GAAG,KAAK,CAACkJ,KAAK,CAACyH,QAAQ,CAAC1Q,GAAG,MAC1C0Q,QAAQ,CAAC3Q,GAAE,KAAMuM,UAAU,CAACvM,GAAE,IAAK2Q,QAAQ,CAAC1Q,GAAE,KAAMsM,UAAU,CAACtM,GAAG,CAAC,EAAE;YACxE,MAAMuS,SAAQ,GAAI,IAAIvP,MAAM,CAACD,IAAI,CAAC0B,MAAM,CAAC;cACvCC,QAAQ,EAAE,CAACgM,QAAQ,CAAC3Q,GAAG,EAAE2Q,QAAQ,CAAC1Q,GAAG,CAAC;cACtC2E,IAAI,EAAE,IAAI3B,MAAM,CAACD,IAAI,CAAC6B,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAI7B,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClCC,KAAK,EAAE,sBAAsBnG,kBAAkB,CAAC;;;;;iBAK/C,CAAC,EAAE;gBACJoG,SAAS,EAAE,IAAIhC,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAAC,EAAE,EAAE,EAAE;cACxC,CAAC,CAAC;cACFG,KAAK,EAAE,QAAQyL,QAAQ,CAAC3Q,GAAG,CAACmF,OAAO,CAAC,CAAC,CAAC,KAAKwL,QAAQ,CAAC1Q,GAAG,CAACkF,OAAO,CAAC,CAAC,CAAC,GAAG;cACrEb,MAAM,EAAE;YACV,CAAC;YACDtG,WAAW,CAACyE,KAAK,CAACE,IAAI,CAAC6P,SAAS;UAClC;QACF,OAAO;UACL;UACAzU,UAAU,CAAC0E,KAAK,CAACC,OAAO,CAAC,CAACjB,KAAK,EAAEyK,KAAK,KAAK;YACzC;YACA,IAAI,CAACzK,KAAI,IAAK,OAAOA,KAAK,CAACzB,GAAE,KAAM,QAAO,IAAK,OAAOyB,KAAK,CAACxB,GAAE,KAAM,QAAO,IACvEiJ,KAAK,CAACzH,KAAK,CAACzB,GAAG,KAAKkJ,KAAK,CAACzH,KAAK,CAACxB,GAAG,CAAC,EAAE;cACxClB,OAAO,CAACC,IAAI,CAAC,YAAYkN,KAAK,GAAG,EAAEzK,KAAK;cACxC;YACF;YAEA,MAAM6R,OAAM,GAAIpH,KAAI,KAAM;YAC1B,MAAMqH,KAAI,GAAIrH,KAAI,KAAMnO,UAAU,CAAC0E,KAAK,CAACT,MAAK,GAAI;;YAElD;YACA,MAAMyC,MAAK,GAAI,IAAIxB,MAAM,CAACD,IAAI,CAAC0B,MAAM,CAAC;cACpCC,QAAQ,EAAE,CAAClD,KAAK,CAACzB,GAAG,EAAEyB,KAAK,CAACxB,GAAG,CAAC;cAChC2E,IAAI,EAAE,IAAI3B,MAAM,CAACD,IAAI,CAAC6B,IAAI,CAAC;gBACzBC,IAAI,EAAE,IAAI7B,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAACuO,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE,CAAC;gBAChEtO,KAAK,EAAE,sBAAsBnG,kBAAkB,CAAC;mEACGyU,OAAM,GAAI,EAAC,GAAI,EAAE,aAAaA,OAAM,GAAI,EAAC,GAAI,EAAE;2DACvDA,OAAM,GAAI,SAAQ,GAAKC,KAAI,GAAI,SAAQ,GAAI,SAAU;8GACFD,OAAM,GAAI,GAAE,GAAKC,KAAI,GAAI,GAAE,GAAIrH,KAAM;;iBAElI,CAAC,EAAE;gBACJjH,SAAS,EAAE,IAAIhC,MAAM,CAACD,IAAI,CAAC+B,IAAI,CAACuO,OAAM,GAAI,EAAC,GAAI,EAAE,EAAEA,OAAM,GAAI,EAAC,GAAI,EAAE;cACtE,CAAC,CAAC;cACFpO,KAAK,EAAE,GAAGoO,OAAM,GAAI,IAAG,GAAKC,KAAI,GAAI,IAAG,GAAI,MAAMrH,KAAK,EAAG,MAAMzK,KAAK,CAACzB,GAAG,CAACmF,OAAO,CAAC,CAAC,CAAC,KAAK1D,KAAK,CAACxB,GAAG,CAACkF,OAAO,CAAC,CAAC,CAAC,GAAG;cAC/Gb,MAAM,EAAE;YACV,CAAC;YAEDtG,WAAW,CAACyE,KAAK,CAACE,IAAI,CAAC8B,MAAM;UAC/B,CAAC;QACH;;QAEA;QACA,IAAIzG,WAAW,CAACyE,KAAK,CAACT,MAAK,GAAI,CAAC,EAAE;UAChCxF,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAACrH,WAAW,CAACyE,KAAK;QACzC;;QAEA;QACA,IAAIpE,QAAQ,CAACoE,KAAI,IAAKpE,QAAQ,CAACoE,KAAK,CAAClC,IAAI,EAAE;UACzC,IAAImN,QAAO,GAAIrP,QAAQ,CAACoE,KAAK,CAAClC,IAAG;;UAEjC;UACA,IAAI,OAAOmN,QAAO,KAAM,QAAQ,EAAE;YAChC,IAAI;cACFA,QAAO,GAAI7F,IAAI,CAAC2L,KAAK,CAAC9F,QAAQ;YAChC,EAAE,OAAOlK,CAAC,EAAE;cACVzE,OAAO,CAACD,KAAK,CAAC,WAAW,EAAE0E,CAAC;cAC5BkK,QAAO,GAAI,EAAC;YACd;UACF;UAEA,IAAI1E,KAAK,CAACC,OAAO,CAACyE,QAAQ,KAAKA,QAAQ,CAAC1L,MAAK,GAAI,CAAC,EAAE;YAClD;YACA,MAAM6M,UAAS,GAAInB,QAAQ,CAAC5K,GAAG,CAACrB,KAAI,IAAK;cACvC,IAAI,OAAOA,KAAI,KAAM,QAAO,IAAKA,KAAK,CAACzB,GAAE,KAAMyT,SAAQ,IAAKhS,KAAK,CAACxB,GAAE,KAAMwT,SAAS,EAAE;gBACnF,MAAMzT,GAAE,GAAI0T,UAAU,CAACjS,KAAK,CAACzB,GAAG;gBAChC,MAAMC,GAAE,GAAIyT,UAAU,CAACjS,KAAK,CAACxB,GAAG;gBAChC,IAAI,CAACiJ,KAAK,CAAClJ,GAAG,KAAK,CAACkJ,KAAK,CAACjJ,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF,OAAO,IAAI+I,KAAK,CAACC,OAAO,CAACxH,KAAK,KAAKA,KAAK,CAACO,MAAK,IAAK,CAAC,EAAE;gBACpD,MAAMhC,GAAE,GAAI0T,UAAU,CAACjS,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAMxB,GAAE,GAAIyT,UAAU,CAACjS,KAAK,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAACyH,KAAK,CAAClJ,GAAG,KAAK,CAACkJ,KAAK,CAACjJ,GAAG,CAAC,EAAE;kBAC9B,OAAO,CAACD,GAAG,EAAEC,GAAG;gBAClB;cACF;cACAlB,OAAO,CAACC,IAAI,CAAC,WAAW,EAAEyC,KAAK;cAC/B,OAAO,IAAG;YACZ,CAAC,CAAC,CAAC6I,MAAM,CAACwH,KAAI,IAAKA,KAAI,KAAM,IAAI;YAEjC/S,OAAO,CAACgE,GAAG,CAAC,WAAW,EAAE8L,UAAU,CAAC7M,MAAM;YAE1C,IAAI6M,UAAU,CAAC7M,MAAK,GAAI,CAAC,EAAE;cACzB,MAAM2R,WAAU,GAAI,IAAI1Q,MAAM,CAACD,IAAI,CAAC+I,QAAQ,CAAC;gBAC3CxL,IAAI,EAAEsO,UAAU;gBAChBxI,WAAW,EAAE,SAAS;gBACtBC,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE,GAAG;gBAClByF,WAAW,EAAE,OAAO;gBACpBsG,OAAO,EAAE;cACX,CAAC;cAEDrU,QAAQ,CAACwE,KAAI,GAAIkR,WAAU;cAC3BnX,WAAW,CAACiG,KAAK,CAAC4C,GAAG,CAACsO,WAAW;YACnC;UACF;QACF;MAEF,EAAE,OAAO7U,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;MACjC;IACF;;IAEA;IACA,MAAM8U,yBAAwB,GAAKC,WAAW,IAAK;MACjD,IAAI;QACF;QACA5D,QAAQ,CAAC;;QAET;QACAlS,UAAU,CAAC0E,KAAI,GAAI,CAAC,GAAGoR,WAAW,CAAC9V,UAAU;;QAE7C;QACAG,iBAAiB,CAACuE,KAAI,GAAIoR,WAAW,CAACnH,SAAQ;QAC9CvO,cAAc,CAACsE,KAAI,GAAIoR,WAAW,CAAC1V,cAAa;QAChDC,WAAW,CAACqE,KAAI,GAAIoR,WAAW,CAACzV,WAAU;;QAE1C;QACAC,QAAQ,CAACoE,KAAI,GAAIoR,WAAW,CAACxV,QAAO;;QAEpC;QACA6U,iBAAiB,CAAC,IAAI;;QAEtB;QACA/L,UAAU,CAAC,MAAM;UACfwK,SAAS,CAAC;QACZ,CAAC,EAAE,GAAG;QAEN5S,OAAO,CAACgE,GAAG,CAAC,WAAW,EAAE8Q,WAAW;MAEtC,EAAE,OAAO/U,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCnD,SAAS,CAACmD,KAAK,CAAC,UAAU;MAC5B;IACF;IAEAxD,SAAS,CAAC,MAAM;MACd;MACAyD,OAAO,CAACgE,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACLzG,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZE,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MACRC,oBAAoB;MAEpBuF,cAAc;MACdhB,WAAW;MACXU,UAAU;MACVgB,aAAa;MACbgB,YAAY;MACZf,aAAa;MACbiB,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBC,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACXiE,UAAU;MACVG,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdzB,aAAa;MACbgC,qBAAqB;MACrBG,UAAU;MACVe,WAAW;MACXK,QAAQ;MACRuD,WAAW;MACXI,QAAQ;MACRC,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXiB,SAAS;MACTf,iBAAiB;MAEjB;MACAyB,eAAe;MACfI,eAAe;MACfC,mBAAmB;MACnBE,mBAAmB;MACnBE,mBAAmB;MACnBC,oBAAoB;MACpBI,0BAA0B;MAC1BS,yBAAyB;MACzBV,iBAAiB;MAEjB;MACAY,iBAAiB,EAAGnW,IAAI,IAAKsB,gBAAgB,CAACtB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnE6X,kBAAkB,EAAGnW,KAAK,IAAK4B,iBAAiB,CAAC5B,KAAK,CAAC,EAAE1B,IAAG,IAAK,MAAM;MAEvE;MACA6D,mBAAmB;MACnBO,oBAAoB;MACpB+B;IACF;EACF;AACF","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f410dcfbd96a1dc219ffeba2020c1606977a23a46fce1df9c946a80efe42e6f0.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f410dcfbd96a1dc219ffeba2020c1606977a23a46fce1df9c946a80efe42e6f0.json
new file mode 100644
index 00000000..877f37c1
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f410dcfbd96a1dc219ffeba2020c1606977a23a46fce1df9c946a80efe42e6f0.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"shared-map-container\"\n};\nconst _hoisted_2 = {\n id: \"sharedMap\",\n class: \"map-area\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"map-loading\"\n};\nconst _hoisted_4 = {\n class: \"map-controls\"\n};\nconst _hoisted_5 = {\n class: \"control-item\"\n};\nconst _hoisted_6 = {\n class: \"control-item\"\n};\nconst _hoisted_7 = {\n class: \"control-item\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 地图容器 \"), _createElementVNode(\"div\", _hoisted_2, [!$setup.mapLoaded ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_text, null, {\n default: _withCtx(() => _cache[3] || (_cache[3] = [_createTextVNode(\"地图加载中...\")])),\n _: 1 /* STABLE */,\n __: [3]\n })])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 基本地图控制 \"), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: \"map-control-card\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_cache[7] || (_cache[7] = _createElementVNode(\"h4\", null, \"地图图层\", -1 /* HOISTED */)), _createVNode(_component_el_radio_group, {\n modelValue: $setup.currentMapStyle,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.currentMapStyle = $event),\n onChange: $setup.changeMapStyle,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n value: \"normal\"\n }, {\n default: _withCtx(() => _cache[4] || (_cache[4] = [_createTextVNode(\"标准地图\")])),\n _: 1 /* STABLE */,\n __: [4]\n }), _createVNode(_component_el_radio_button, {\n value: \"satellite\"\n }, {\n default: _withCtx(() => _cache[5] || (_cache[5] = [_createTextVNode(\"卫星地图\")])),\n _: 1 /* STABLE */,\n __: [5]\n }), _createVNode(_component_el_radio_button, {\n value: \"dark\"\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"暗色地图\")])),\n _: 1 /* STABLE */,\n __: [6]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_6, [_cache[10] || (_cache[10] = _createElementVNode(\"h4\", null, \"显示模式\", -1 /* HOISTED */)), _createVNode(_component_el_radio_group, {\n modelValue: $setup.viewMode,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.viewMode = $event),\n onChange: $setup.changeViewMode,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n value: \"2D\"\n }, {\n default: _withCtx(() => _cache[8] || (_cache[8] = [_createTextVNode(\"2D视图\")])),\n _: 1 /* STABLE */,\n __: [8]\n }), _createVNode(_component_el_radio_button, {\n value: \"3D\"\n }, {\n default: _withCtx(() => _cache[9] || (_cache[9] = [_createTextVNode(\"3D视图\")])),\n _: 1 /* STABLE */,\n __: [9]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_7, [_cache[16] || (_cache[16] = _createElementVNode(\"h4\", null, \"图层叠加\", -1 /* HOISTED */)), _createVNode(_component_el_checkbox_group, {\n modelValue: $setup.overlayLayers,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.overlayLayers = $event),\n onChange: $setup.updateOverlayLayers\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n value: \"traffic\"\n }, {\n default: _withCtx(() => _cache[11] || (_cache[11] = [_createTextVNode(\"交通流量\")])),\n _: 1 /* STABLE */,\n __: [11]\n }), _createVNode(_component_el_checkbox, {\n value: \"buildings\"\n }, {\n default: _withCtx(() => _cache[12] || (_cache[12] = [_createTextVNode(\"3D建筑\")])),\n _: 1 /* STABLE */,\n __: [12]\n }), _createVNode(_component_el_checkbox, {\n value: \"terrain\"\n }, {\n default: _withCtx(() => _cache[13] || (_cache[13] = [_createTextVNode(\"地形等高线\")])),\n _: 1 /* STABLE */,\n __: [13]\n }), _createVNode(_component_el_checkbox, {\n value: \"weather\"\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\"天气信息\")])),\n _: 1 /* STABLE */,\n __: [14]\n }), _createVNode(_component_el_checkbox, {\n value: \"threats\"\n }, {\n default: _withCtx(() => _cache[15] || (_cache[15] = [_createTextVNode(\"威胁区域\")])),\n _: 1 /* STABLE */,\n __: [15]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])])]),\n _: 1 /* STABLE */\n })])]);\n}","map":{"version":3,"names":["class","id","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","$setup","mapLoaded","_hoisted_3","_createVNode","_component_el_text","_cache","_hoisted_4","_component_el_card","size","_hoisted_5","_component_el_radio_group","currentMapStyle","$event","onChange","changeMapStyle","_component_el_radio_button","value","_hoisted_6","viewMode","changeViewMode","_hoisted_7","_component_el_checkbox_group","overlayLayers","updateOverlayLayers","_component_el_checkbox"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\SharedMap.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n
\r\n 地图加载中...\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
地图图层
\r\n \r\n 标准地图\r\n 卫星地图\r\n 暗色地图\r\n \r\n \r\n \r\n \r\n
显示模式
\r\n \r\n 2D视图\r\n 3D视图\r\n \r\n \r\n \r\n \r\n
图层叠加
\r\n \r\n 交通流量\r\n 3D建筑\r\n 地形等高线\r\n 天气信息\r\n 威胁区域\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f5df8e9407a13a1e9f340091ac7a61d878779924bc6845e5dba961778f21b237.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f5df8e9407a13a1e9f340091ac7a61d878779924bc6845e5dba961778f21b237.json
new file mode 100644
index 00000000..3dfa9c6e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f5df8e9407a13a1e9f340091ac7a61d878779924bc6845e5dba961778f21b237.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // fallback:使用中心点显示\n const useFallbackCenter = validPoints => {\n if (!validPoints || validPoints.length === 0) {\n ElMessage.error('没有有效的坐标点可显示');\n return;\n }\n try {\n // 计算中心点\n const centerLng = validPoints.reduce((sum, point) => sum + point[0], 0) / validPoints.length;\n const centerLat = validPoints.reduce((sum, point) => sum + point[1], 0) / validPoints.length;\n console.log(`使用中心点显示: [${centerLng}, ${centerLat}]`);\n\n // 设置地图中心和缩放级别\n mapInstance.value.setCenter([centerLng, centerLat]);\n\n // 根据点的分布确定缩放级别\n if (validPoints.length === 1) {\n mapInstance.value.setZoom(15);\n } else {\n // 计算点的分布范围来确定合适的缩放级别\n const lngs = validPoints.map(p => p[0]);\n const lats = validPoints.map(p => p[1]);\n const lngSpan = Math.max(...lngs) - Math.min(...lngs);\n const latSpan = Math.max(...lats) - Math.min(...lats);\n const maxSpan = Math.max(lngSpan, latSpan);\n let zoom = 10;\n if (maxSpan < 0.01) zoom = 14;else if (maxSpan < 0.1) zoom = 12;else if (maxSpan < 1) zoom = 10;else zoom = 8;\n mapInstance.value.setZoom(zoom);\n }\n ElMessage.success(`已显示包含${validPoints.length}个点的路径中心`);\n } catch (centerError) {\n console.error('中心点计算失败:', centerError);\n ElMessage.error('路径显示失败');\n }\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n const validPoints = [];\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat) && isFinite(point.lng) && isFinite(point.lat) && point.lng >= -180 && point.lng <= 180 && point.lat >= -90 && point.lat <= 90) {\n // 再次验证坐标的有效性\n const lng = Number(point.lng);\n const lat = Number(point.lat);\n if (!isNaN(lng) && !isNaN(lat) && isFinite(lng) && isFinite(lat)) {\n validPoints.push([lng, lat]);\n validPointsCount++;\n console.log(`验证通过路径点${index + 1}: [${lng}, ${lat}]`);\n } else {\n console.warn(`坐标转换失败 ${index + 1}:`, point);\n }\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 安全地添加验证过的点到边界\n validPoints.forEach((coord, index) => {\n try {\n bounds.extend(coord);\n console.log(`成功添加到边界 ${index + 1}: [${coord[0]}, ${coord[1]}]`);\n } catch (extendError) {\n console.error(`添加坐标到边界失败 ${index + 1}:`, coord, extendError);\n }\n });\n\n // 检查边界是否有效\n let southwest, northeast;\n try {\n southwest = bounds.getSouthWest();\n northeast = bounds.getNorthEast();\n } catch (boundsGetError) {\n console.error('获取边界信息失败:', boundsGetError);\n ElMessage.error('边界信息获取失败');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n\n // 验证边界坐标的有效性\n if (!southwest || !northeast || isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat) || !isFinite(southwest.lng) || !isFinite(southwest.lat) || !isFinite(northeast.lng) || !isFinite(northeast.lat)) {\n console.error('计算的边界包含无效值');\n ElMessage.warning('边界计算异常,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 检查边界是否合理(不能太小或太大)\n const lngSpan = Math.abs(northeast.lng - southwest.lng);\n const latSpan = Math.abs(northeast.lat - southwest.lat);\n if (lngSpan < 0.0001 || latSpan < 0.0001) {\n console.warn('边界范围太小,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n if (lngSpan > 180 || latSpan > 90) {\n console.warn('边界范围太大,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n console.log('成功设置地图边界');\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n ElMessage.warning('地图适配失败,使用中心点显示');\n useFallbackCenter(validPoints);\n return;\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点(标记为历史路径,只显示起终点)\n displayPathPoints(true);\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n useFallbackCenter,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","useFallbackCenter","validPoints","centerLng","reduce","sum","centerLat","lngs","lats","lngSpan","max","min","latSpan","maxSpan","zoom","centerError","fitToPath","validPointsCount","isNaN","isFinite","Number","coord","extendError","southwest","northeast","boundsGetError","abs","boundsError","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f5e5a39e7f8baff9b6a37759797091c2bf94b5bdf3a2c34c9dadf25a38acad1e.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f5e5a39e7f8baff9b6a37759797091c2bf94b5bdf3a2c34c9dadf25a38acad1e.json
new file mode 100644
index 00000000..404f7b40
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f5e5a39e7f8baff9b6a37759797091c2bf94b5bdf3a2c34c9dadf25a38acad1e.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"unified-map-view\"\n};\nconst _hoisted_2 = {\n class: \"side-panel\"\n};\nconst _hoisted_3 = {\n class: \"tabs-container\"\n};\nconst _hoisted_4 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_5 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_6 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_7 = {\n class: \"panel-scroll-container\"\n};\nconst _hoisted_8 = {\n class: \"map-container\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"draw-tip\"\n};\nexport function render(_ctx, _cache) {\n const _component_basic_map_panel = _resolveComponent(\"basic-map-panel\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_threat_zone_panel = _resolveComponent(\"threat-zone-panel\");\n const _component_path_planning_panel = _resolveComponent(\"path-planning-panel\");\n const _component_path_history_panel = _resolveComponent(\"path-history-panel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_SharedMap = _resolveComponent(\"SharedMap\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 左侧功能面板 \"), _createElementVNode(\"div\", _hoisted_2, [_createCommentVNode(\" 选项卡切换功能面板 \"), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tabs, {\n modelValue: _ctx.activePanel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.activePanel = $event),\n onTabClick: _ctx.handleTabClick,\n \"tab-position\": \"top\"\n }, {\n default: _withCtx(() => [_createCommentVNode(\" 地图基础功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"地图视图\",\n name: \"basicMap\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_basic_map_panel, {\n onToggleAddMode: _ctx.toggleAddMode,\n onClearTargets: _ctx.clearTargets,\n \"add-mode\": _ctx.addMode,\n \"target-points\": _ctx.targetPoints\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 威胁区设置功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"威胁区设置\",\n name: \"threatZone\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_threat_zone_panel, {\n \"threat-zones\": _ctx.threatZones,\n \"selected-zone-id\": _ctx.selectedZoneId,\n \"current-threat-type\": _ctx.currentThreatType,\n \"draw-mode\": _ctx.drawMode,\n \"threat-level\": _ctx.threatLevel,\n \"circle-radius\": _ctx.circleRadius,\n \"threat-description\": _ctx.threatDescription,\n \"threat-time-range\": _ctx.threatTimeRange,\n \"visible-layers\": _ctx.visibleLayers,\n onOnThreatTypeChange: _ctx.handleThreatTypeChange,\n onOnThreatLevelChange: _ctx.handleThreatLevelChange,\n onSetDrawMode: _ctx.setDrawMode,\n onSelectZone: _ctx.selectZone,\n onDeleteZone: _ctx.deleteZone,\n onEditZone: _ctx.editZone,\n onClearAllZones: _ctx.clearAllZones,\n onUpdateLayerVisibility: _ctx.updateLayerVisibility,\n onUpdateCircleRadius: _ctx.updateCircleRadius,\n onUpdateThreatDescription: _ctx.updateThreatDescription,\n onUpdateThreatTimeRange: _ctx.updateThreatTimeRange,\n onSaveEditedZone: _ctx.saveEditedZone,\n onFitToZones: _ctx.fitToZones\n }, null, 8 /* PROPS */, [\"threat-zones\", \"selected-zone-id\", \"current-threat-type\", \"draw-mode\", \"threat-level\", \"circle-radius\", \"threat-description\", \"threat-time-range\", \"visible-layers\", \"onOnThreatTypeChange\", \"onOnThreatLevelChange\", \"onSetDrawMode\", \"onSelectZone\", \"onDeleteZone\", \"onEditZone\", \"onClearAllZones\", \"onUpdateLayerVisibility\", \"onUpdateCircleRadius\", \"onUpdateThreatDescription\", \"onUpdateThreatTimeRange\", \"onSaveEditedZone\", \"onFitToZones\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径规划功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径规划\",\n name: \"pathPlanning\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_path_planning_panel, {\n \"path-points\": _ctx.pathPoints,\n \"add-mode\": _ctx.addMode,\n \"planning-algorithm\": _ctx.planningAlgorithm,\n \"flight-altitude\": _ctx.flightAltitude,\n \"flight-speed\": _ctx.flightSpeed,\n \"path-info\": _ctx.pathInfo,\n onToggleAddMode: _ctx.toggleAddMode,\n onClearAll: _ctx.clearAll,\n onPlanPath: _ctx.planPath,\n onExecutePath: _ctx.executePath,\n onRemovePoint: _ctx.removePoint,\n onCenterToStart: _ctx.centerToStart,\n onCenterToEnd: _ctx.centerToEnd,\n onFitToPath: _ctx.fitToPath,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed,\n onLoadHistoryPath: _ctx.loadHistoryPathToPlanning\n }, null, 8 /* PROPS */, [\"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\", \"onLoadHistoryPath\"])])]),\n _: 1 /* STABLE */\n }), _createCommentVNode(\" 路径历史功能 \"), _createVNode(_component_el_tab_pane, {\n label: \"路径历史\",\n name: \"pathHistory\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_path_history_panel, {\n \"selected-paths\": _ctx.selectedHistoryPaths,\n onShowPath: _ctx.showHistoryPath,\n onHidePath: _ctx.hideHistoryPath,\n onShowAllPaths: _ctx.showAllHistoryPaths,\n onHideAllPaths: _ctx.hideAllHistoryPaths,\n onCenterToPath: _ctx.centerToHistoryPath,\n onDuplicatePath: _ctx.duplicateHistoryPath,\n onUpdateSelectedPaths: _ctx.updateSelectedHistoryPaths\n }, null, 8 /* PROPS */, [\"selected-paths\", \"onShowPath\", \"onHidePath\", \"onShowAllPaths\", \"onHideAllPaths\", \"onCenterToPath\", \"onDuplicatePath\", \"onUpdateSelectedPaths\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_SharedMap, {\n mode: _ctx.activePanel,\n onMapLoaded: _ctx.onMapLoaded,\n onMapClick: _ctx.onMapClick,\n ref: \"sharedMapRef\"\n }, null, 8 /* PROPS */, [\"mode\", \"onMapLoaded\", \"onMapClick\"]), _createCommentVNode(\" 添加模式提示 \"), _ctx.addMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_el_alert, {\n title: _ctx.getAddModeTip(),\n type: \"info\",\n \"show-icon\": \"\"\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true), _createCommentVNode(\" 绘制工具提示 \"), _ctx.drawMode ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_alert, {\n title: _ctx.getDrawTip(),\n type: \"info\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8 /* PROPS */, [\"title\"])])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 编辑威胁区对话框 \"), _createVNode(_component_el_dialog, {\n modelValue: _ctx.editDialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.editDialogVisible = $event),\n title: \"编辑威胁区\",\n width: \"400px\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[4] || (_cache[4] = $event => _ctx.editDialogVisible = false)\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"取消\")])),\n _: 1 /* STABLE */,\n __: [6]\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _ctx.saveEditedZone\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [_createTextVNode(\"保存\")])),\n _: 1 /* STABLE */,\n __: [7]\n }, 8 /* PROPS */, [\"onClick\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n model: _ctx.editForm,\n \"label-width\": \"80px\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: \"威胁类型\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.type,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.editForm.type = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"雷达威胁\",\n value: \"radar\"\n }), _createVNode(_component_el_option, {\n label: \"导弹威胁\",\n value: \"missile\"\n }), _createVNode(_component_el_option, {\n label: \"空中威胁\",\n value: \"aircraft\"\n }), _createVNode(_component_el_option, {\n label: \"地面威胁\",\n value: \"ground\"\n }), _createVNode(_component_el_option, {\n label: \"气象威胁\",\n value: \"weather\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁等级\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_select, {\n modelValue: _ctx.editForm.level,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.editForm.level = $event),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"低威胁\",\n value: \"low\"\n }), _createVNode(_component_el_option, {\n label: \"中威胁\",\n value: \"medium\"\n }), _createVNode(_component_el_option, {\n label: \"高威胁\",\n value: \"high\"\n }), _createVNode(_component_el_option, {\n label: \"极高威胁\",\n value: \"critical\"\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_form_item, {\n label: \"威胁描述\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: _ctx.editForm.description,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.editForm.description = $event),\n type: \"textarea\",\n rows: 3\n }, null, 8 /* PROPS */, [\"modelValue\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"model\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"])]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","_hoisted_3","_createVNode","_component_el_tabs","_ctx","activePanel","$event","onTabClick","handleTabClick","_component_el_tab_pane","label","name","_hoisted_4","_component_basic_map_panel","onToggleAddMode","toggleAddMode","onClearTargets","clearTargets","addMode","targetPoints","_hoisted_5","_component_threat_zone_panel","threatZones","selectedZoneId","currentThreatType","drawMode","threatLevel","circleRadius","threatDescription","threatTimeRange","visibleLayers","onOnThreatTypeChange","handleThreatTypeChange","onOnThreatLevelChange","handleThreatLevelChange","onSetDrawMode","setDrawMode","onSelectZone","selectZone","onDeleteZone","deleteZone","onEditZone","editZone","onClearAllZones","clearAllZones","onUpdateLayerVisibility","updateLayerVisibility","onUpdateCircleRadius","updateCircleRadius","onUpdateThreatDescription","updateThreatDescription","onUpdateThreatTimeRange","updateThreatTimeRange","onSaveEditedZone","saveEditedZone","onFitToZones","fitToZones","_hoisted_6","_component_path_planning_panel","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","onLoadHistoryPath","loadHistoryPathToPlanning","_hoisted_7","_component_path_history_panel","selectedHistoryPaths","onShowPath","showHistoryPath","onHidePath","hideHistoryPath","onShowAllPaths","showAllHistoryPaths","onHideAllPaths","hideAllHistoryPaths","onCenterToPath","centerToHistoryPath","onDuplicatePath","duplicateHistoryPath","onUpdateSelectedPaths","updateSelectedHistoryPaths","_hoisted_8","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_9","_component_el_alert","title","getAddModeTip","type","_hoisted_10","getDrawTip","closable","_component_el_dialog","editDialogVisible","width","footer","_withCtx","_component_el_button","onClick","_cache","_component_el_form","model","editForm","size","_component_el_form_item","_component_el_select","style","_component_el_option","value","level","_component_el_input","description","rows"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f6e2bb518b152500f7af81027fc6df685b12ba9f6e323b3545198b5b9627ebf9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f6e2bb518b152500f7af81027fc6df685b12ba9f6e323b3545198b5b9627ebf9.json
new file mode 100644
index 00000000..65d62f22
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f6e2bb518b152500f7af81027fc6df685b12ba9f6e323b3545198b5b9627ebf9.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number') {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 设置地图边界\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]); // 添加边距\n\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n\n // 创建路径点标记\n pathPoints.value.forEach((point, index) => {\n const isStart = index === 0;\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n\n // 添加标记到地图\n mapInstance.value.add(pathMarkers.value);\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n const pathLine = new window.AMap.Polyline({\n path: pathInfo.value.path.map(point => [point.lng, point.lat]),\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLine;\n mapInstance.value.add(pathLine);\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isStart","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/fa501e2695572f296f7d2fd2e265dd8c5b100d97ea01bdedf69cd79973236ec4.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/fa501e2695572f296f7d2fd2e265dd8c5b100d97ea01bdedf69cd79973236ec4.json
new file mode 100644
index 00000000..a5671ebd
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/fa501e2695572f296f7d2fd2e265dd8c5b100d97ea01bdedf69cd79973236ec4.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"shared-map-container\"\n};\nconst _hoisted_2 = {\n id: \"sharedMap\",\n class: \"map-area\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"map-loading\"\n};\nconst _hoisted_4 = {\n class: \"map-controls\"\n};\nconst _hoisted_5 = {\n class: \"control-item\"\n};\nconst _hoisted_6 = {\n class: \"control-item\"\n};\nconst _hoisted_7 = {\n class: \"control-item\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createCommentVNode(\" 地图容器 \"), _createElementVNode(\"div\", _hoisted_2, [!$setup.mapLoaded ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_text, null, {\n default: _withCtx(() => _cache[3] || (_cache[3] = [_createTextVNode(\"地图加载中...\")])),\n _: 1 /* STABLE */,\n __: [3]\n })])) : _createCommentVNode(\"v-if\", true)]), _createCommentVNode(\" 基本地图控制 \"), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: \"map-control-card\",\n size: \"small\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_5, [_cache[7] || (_cache[7] = _createElementVNode(\"h4\", null, \"地图图层\", -1 /* HOISTED */)), _createVNode(_component_el_radio_group, {\n modelValue: $setup.currentMapStyle,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $setup.currentMapStyle = $event),\n onChange: $setup.changeMapStyle,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n value: \"normal\"\n }, {\n default: _withCtx(() => _cache[4] || (_cache[4] = [_createTextVNode(\"标准地图\")])),\n _: 1 /* STABLE */,\n __: [4]\n }), _createVNode(_component_el_radio_button, {\n value: \"satellite\"\n }, {\n default: _withCtx(() => _cache[5] || (_cache[5] = [_createTextVNode(\"卫星地图\")])),\n _: 1 /* STABLE */,\n __: [5]\n }), _createVNode(_component_el_radio_button, {\n value: \"dark\"\n }, {\n default: _withCtx(() => _cache[6] || (_cache[6] = [_createTextVNode(\"暗色地图\")])),\n _: 1 /* STABLE */,\n __: [6]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_6, [_cache[10] || (_cache[10] = _createElementVNode(\"h4\", null, \"显示模式\", -1 /* HOISTED */)), _createVNode(_component_el_radio_group, {\n modelValue: $setup.viewMode,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.viewMode = $event),\n onChange: $setup.changeViewMode,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n value: \"2D\"\n }, {\n default: _withCtx(() => _cache[8] || (_cache[8] = [_createTextVNode(\"2D视图\")])),\n _: 1 /* STABLE */,\n __: [8]\n }), _createVNode(_component_el_radio_button, {\n value: \"3D\"\n }, {\n default: _withCtx(() => _cache[9] || (_cache[9] = [_createTextVNode(\"3D视图\")])),\n _: 1 /* STABLE */,\n __: [9]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_7, [_cache[16] || (_cache[16] = _createElementVNode(\"h4\", null, \"图层叠加\", -1 /* HOISTED */)), _createVNode(_component_el_checkbox_group, {\n modelValue: $setup.overlayLayers,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $setup.overlayLayers = $event),\n onChange: $setup.updateOverlayLayers\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n value: \"traffic\"\n }, {\n default: _withCtx(() => _cache[11] || (_cache[11] = [_createTextVNode(\"交通流量\")])),\n _: 1 /* STABLE */,\n __: [11]\n }), _createVNode(_component_el_checkbox, {\n value: \"buildings\"\n }, {\n default: _withCtx(() => _cache[12] || (_cache[12] = [_createTextVNode(\"3D建筑\")])),\n _: 1 /* STABLE */,\n __: [12]\n }), _createVNode(_component_el_checkbox, {\n value: \"terrain\"\n }, {\n default: _withCtx(() => _cache[13] || (_cache[13] = [_createTextVNode(\"地形等高线\")])),\n _: 1 /* STABLE */,\n __: [13]\n }), _createVNode(_component_el_checkbox, {\n value: \"weather\"\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\"天气信息\")])),\n _: 1 /* STABLE */,\n __: [14]\n }), _createVNode(_component_el_checkbox, {\n value: \"threats\"\n }, {\n default: _withCtx(() => _cache[15] || (_cache[15] = [_createTextVNode(\"威胁区域\")])),\n _: 1 /* STABLE */,\n __: [15]\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])])]),\n _: 1 /* STABLE */\n })])]);\n}","map":{"version":3,"names":["class","id","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","_hoisted_2","$setup","mapLoaded","_hoisted_3","_createVNode","_component_el_text","_cache","_hoisted_4","_component_el_card","size","_hoisted_5","_component_el_radio_group","currentMapStyle","$event","onChange","changeMapStyle","_component_el_radio_button","value","_hoisted_6","viewMode","changeViewMode","_hoisted_7","_component_el_checkbox_group","overlayLayers","updateOverlayLayers","_component_el_checkbox"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\SharedMap.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n
\r\n 地图加载中...\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
地图图层
\r\n \r\n 标准地图\r\n 卫星地图\r\n 暗色地图\r\n \r\n \r\n \r\n \r\n
显示模式
\r\n \r\n 2D视图\r\n 3D视图\r\n \r\n \r\n \r\n \r\n
图层叠加
\r\n \r\n 交通流量\r\n 3D建筑\r\n 地形等高线\r\n 天气信息\r\n 威胁区域\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/faa49b718a19548d1bf3c208eda084731b14b4253ddaa5c378f2710c814f7a53.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/faa49b718a19548d1bf3c208eda084731b14b4253ddaa5c378f2710c814f7a53.json
new file mode 100644
index 00000000..8aadb42b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/faa49b718a19548d1bf3c208eda084731b14b4253ddaa5c378f2710c814f7a53.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, onUnmounted, provide } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage } from 'element-plus';\nimport AMapLoader from '@amap/amap-jsapi-loader';\nexport default {\n name: 'SharedMap',\n props: {\n mode: {\n type: String,\n default: 'default',\n // 'default', 'threatZone', 'pathPlanning'\n validator: value => ['default', 'threatZone', 'pathPlanning'].includes(value)\n }\n },\n emits: ['map-loaded', 'map-click'],\n setup(props, {\n emit\n }) {\n const store = useStore();\n const mapInstance = ref(null);\n const mapLoaded = ref(false);\n const viewMode = ref('3D');\n const currentMapStyle = ref('normal');\n const overlayLayers = ref(['buildings']);\n const layerInstances = ref({});\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 从环境变量或后端获取地图API密钥\n const getApiKey = () => {\n // 在生产环境中,应该从后端获取API密钥,这里暂时使用硬编码的API密钥\n return '492dc9daf4eae7cab678c0f3efed8198';\n };\n const initMap = async () => {\n const container = document.getElementById('sharedMap');\n if (!container) {\n console.error('地图容器未找到');\n ElMessage.error('地图容器未找到');\n return;\n }\n try {\n console.log('开始加载高德地图...');\n\n // 使用AMapLoader加载高德地图API\n const AMap = await AMapLoader.load({\n key: getApiKey(),\n version: '2.0',\n plugins: ['AMap.Scale', 'AMap.ToolBar', 'AMap.ControlBar', 'AMap.InfoWindow', 'AMap.Marker', 'AMap.Polyline', 'AMap.Polygon', 'AMap.Circle', 'AMap.MouseTool', 'AMap.HawkEye', 'AMap.MapType', 'AMap.Geolocation', 'AMap.TileLayer', 'AMap.TileLayer.Satellite', 'AMap.TileLayer.Traffic', 'AMap.TileLayer.RoadNet', 'AMap.Buildings', 'AMap.DistrictLayer', 'AMap.Weather', 'AMap.Driving', 'AMap.PolyEditor']\n });\n console.log('高德地图 API 加载成功');\n\n // 创建地图实例\n mapInstance.value = new AMap.Map('sharedMap', {\n zoom: 20,\n center: [113.0434, 28.2592],\n // 精确定位到指定坐标\n viewMode: viewMode.value,\n pitch: viewMode.value === '3D' ? 45 : 0,\n rotation: 0,\n mapStyle: 'amap://styles/normal',\n features: ['bg', 'road', 'building', 'point'],\n resizeEnable: true,\n dragEnable: true,\n zoomEnable: true,\n doubleClickZoom: true,\n keyboardEnable: true,\n jogEnable: true,\n scrollWheel: true,\n touchZoom: true\n });\n console.log('地图实例创建成功');\n\n // 添加地图控件\n const toolbar = new AMap.ToolBar({\n position: {\n top: '10px',\n right: '10px'\n }\n });\n const scale = new AMap.Scale({\n position: {\n bottom: '10px',\n right: '10px'\n }\n });\n\n // 添加3D控制条,用于控制3D视图的旋转、倾斜等\n const controlBar = new AMap.ControlBar({\n position: {\n top: '80px',\n right: '10px'\n },\n showZoomBar: false,\n showControlButton: true\n });\n mapInstance.value.addControl(toolbar);\n mapInstance.value.addControl(scale);\n mapInstance.value.addControl(controlBar);\n\n // 添加地图事件监听\n mapInstance.value.on('click', e => {\n emit('map-click', e);\n });\n mapInstance.value.on('complete', () => {\n console.log('地图加载完成');\n mapLoaded.value = true;\n emit('map-loaded', mapInstance.value);\n try {\n // 初始化不同的图层实例,但不会立即添加到地图\n // 预初始化交通图层\n layerInstances.value.traffic = new window.AMap.TileLayer.Traffic({\n zIndex: 10,\n opacity: 0.8\n });\n\n // 预初始化卫星图层\n layerInstances.value.satellite = new window.AMap.TileLayer.Satellite({\n zIndex: 9\n });\n\n // 预初始化建筑图层\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 11,\n heightFactor: viewMode.value === '3D' ? 1 : 0.6\n });\n\n // 初始化图层显示\n updateOverlayLayers();\n\n // 初始化天气服务\n try {\n // 创建天气查询服务\n const weather = new window.AMap.Weather();\n layerInstances.value.weatherService = weather;\n\n // 查询默认城市天气作为示例\n weather.getLive('北京市', function (err, data) {\n if (!err) {\n console.log('天气服务初始化成功:', data);\n }\n });\n } catch (weatherError) {\n console.warn('天气服务初始化失败:', weatherError);\n }\n } catch (layerError) {\n console.error('图层初始化失败:', layerError);\n }\n console.log('地图初始化完成');\n });\n } catch (error) {\n console.error('地图加载失败:', error);\n ElMessage.error(`地图加载失败: ${error.message}`);\n }\n };\n\n // 添加主动获取无人机数据的方法\n\n // 修改地图样式切换功能\n const changeMapStyle = style => {\n if (!mapInstance.value) return;\n try {\n currentMapStyle.value = style;\n switch (style) {\n case 'satellite':\n // 使用卫星图层\n if (!layerInstances.value.satellite) {\n layerInstances.value.satellite = new window.AMap.TileLayer.Satellite({\n zIndex: 9\n });\n }\n\n // 添加卫星图层\n mapInstance.value.add(layerInstances.value.satellite);\n\n // 确保其他已启用的图层在卫星图层之上显示\n updateOverlayLayers();\n break;\n case 'dark':\n // 移除卫星图层\n if (layerInstances.value.satellite) {\n mapInstance.value.remove(layerInstances.value.satellite);\n }\n // 设置暗色地图\n mapInstance.value.setMapStyle('amap://styles/dark');\n\n // 确保其他已启用的图层在暗色地图上正确显示\n updateOverlayLayers();\n break;\n default:\n // 移除卫星图层\n if (layerInstances.value.satellite) {\n mapInstance.value.remove(layerInstances.value.satellite);\n }\n // 设置默认地图样式\n mapInstance.value.setMapStyle('amap://styles/normal');\n\n // 确保其他已启用的图层在标准地图上正确显示\n updateOverlayLayers();\n }\n console.log(`已切换到${style}地图样式`);\n } catch (error) {\n console.error('切换地图样式失败:', error);\n ElMessage.error(`切换地图样式失败: ${error.message}`);\n }\n };\n\n // 切换视图模式\n const changeViewMode = mode => {\n if (!mapInstance.value) return;\n try {\n // 设置视图模式 - 使用正确的API方法\n if (mode === '3D') {\n // 设置为3D视图\n mapInstance.value.setViewMode('3D');\n mapInstance.value.setPitch(45); // 设置俯仰角(3D效果)\n console.log('已切换到3D视图模式');\n } else {\n // 设置为2D视图\n mapInstance.value.setViewMode('2D');\n mapInstance.value.setPitch(0); // 平面视图\n console.log('已切换到2D视图模式');\n }\n\n // 重新加载建筑层以确保它在视图模式变化后正常显示\n if (overlayLayers.value.includes('buildings')) {\n if (layerInstances.value.buildings) {\n mapInstance.value.remove(layerInstances.value.buildings);\n }\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 10,\n // 在3D模式下加强建筑物外观\n heightFactor: mode === '3D' ? 1 : 0.6\n });\n mapInstance.value.add(layerInstances.value.buildings);\n }\n\n // 如果是卫星图,处理卫星图层\n if (currentMapStyle.value === 'satellite') {\n changeMapStyle('satellite');\n }\n } catch (error) {\n console.error('切换视图模式失败:', error);\n ElMessage.error(`切换到${mode}视图失败: ${error.message}`);\n }\n };\n\n // 更新图层\n const updateOverlayLayers = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n console.log('更新图层状态:', overlayLayers.value);\n\n // 交通流量图层\n if (overlayLayers.value.includes('traffic')) {\n if (!layerInstances.value.traffic) {\n layerInstances.value.traffic = new window.AMap.TileLayer.Traffic({\n zIndex: 10,\n opacity: 0.8\n });\n }\n mapInstance.value.add(layerInstances.value.traffic);\n console.log('已添加交通流量图层');\n } else if (layerInstances.value.traffic) {\n mapInstance.value.remove(layerInstances.value.traffic);\n console.log('已移除交通流量图层');\n }\n\n // 建筑物图层\n if (overlayLayers.value.includes('buildings')) {\n if (!layerInstances.value.buildings) {\n layerInstances.value.buildings = new window.AMap.Buildings({\n zIndex: 11,\n heightFactor: viewMode.value === '3D' ? 1 : 0.6\n });\n }\n mapInstance.value.add(layerInstances.value.buildings);\n console.log('已添加建筑物图层');\n } else if (layerInstances.value.buildings) {\n mapInstance.value.remove(layerInstances.value.buildings);\n console.log('已移除建筑物图层');\n }\n\n // 地形图层\n if (overlayLayers.value.includes('terrain')) {\n if (!layerInstances.value.terrain) {\n // 等高线图层\n layerInstances.value.terrain = new window.AMap.TileLayer({\n zIndex: 8,\n getTileUrl: function (x, y, z) {\n return 'https://webst04.is.autonavi.com/appmaptile?style=6&x=' + x + '&y=' + y + '&z=' + z;\n }\n });\n }\n mapInstance.value.add(layerInstances.value.terrain);\n console.log('已添加地形图层');\n } else if (layerInstances.value.terrain) {\n mapInstance.value.remove(layerInstances.value.terrain);\n console.log('已移除地形图层');\n }\n\n // 天气图层\n if (overlayLayers.value.includes('weather')) {\n // 显示天气信息\n showWeatherInfo();\n } else {\n // 隐藏天气信息\n hideWeatherInfo();\n }\n\n // 威胁区域图层\n if (overlayLayers.value.includes('threats')) {\n // 威胁区域图层处理逻辑\n console.log('威胁区域图层暂未实现');\n }\n } catch (error) {\n console.error('更新图层失败:', error);\n ElMessage.error(`更新图层失败: ${error.message}`);\n }\n };\n\n // 显示天气信息\n const showWeatherInfo = () => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 如果已有天气信息标记,先清除\n if (layerInstances.value.weatherMarkers && layerInstances.value.weatherMarkers.length > 0) {\n layerInstances.value.weatherMarkers.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n }\n\n // 初始化天气标记数组\n layerInstances.value.weatherMarkers = [];\n\n // 创建天气查询服务(如果不存在)\n if (!layerInstances.value.weatherService) {\n layerInstances.value.weatherService = new window.AMap.Weather();\n }\n\n // 主要城市天气信息\n const cities = [{\n name: '北京',\n position: [116.397428, 39.90923]\n }, {\n name: '上海',\n position: [121.473667, 31.230525]\n }, {\n name: '广州',\n position: [113.264385, 23.129112]\n }, {\n name: '深圳',\n position: [114.057868, 22.543099]\n }, {\n name: '成都',\n position: [104.065735, 30.659462]\n }];\n\n // 查询每个城市的天气\n cities.forEach(city => {\n layerInstances.value.weatherService.getLive(city.name, (err, data) => {\n if (!err && data) {\n // 创建天气信息内容\n const weatherInfo = `\n \n
${city.name}天气
\n
天气: ${data.weather}
\n
温度: ${data.temperature}°C
\n
风向: ${data.windDirection}
\n
风力: ${data.windPower}
\n
湿度: ${data.humidity}%
\n
\n `;\n\n // 创建天气图标\n const weatherIcon = getWeatherIcon(data.weather);\n\n // 创建标记\n const marker = new window.AMap.Marker({\n position: city.position,\n content: `${weatherIcon}
`,\n offset: new window.AMap.Pixel(-15, -15),\n zIndex: 120,\n title: `${city.name}天气: ${data.weather}, ${data.temperature}°C`\n });\n\n // 创建信息窗体\n const infoWindow = new window.AMap.InfoWindow({\n content: weatherInfo,\n offset: new window.AMap.Pixel(0, -30)\n });\n\n // 绑定点击事件\n marker.on('click', () => {\n infoWindow.open(mapInstance.value, city.position);\n });\n\n // 添加到地图\n mapInstance.value.add(marker);\n\n // 保存标记引用\n layerInstances.value.weatherMarkers.push(marker);\n }\n });\n });\n console.log('已添加天气信息图层');\n } catch (error) {\n console.error('天气图层添加失败:', error);\n }\n };\n\n // 隐藏天气信息\n const hideWeatherInfo = () => {\n if (!mapInstance.value) return;\n\n // 移除所有天气标记\n if (layerInstances.value.weatherMarkers && layerInstances.value.weatherMarkers.length > 0) {\n layerInstances.value.weatherMarkers.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n layerInstances.value.weatherMarkers = [];\n console.log('已移除天气信息图层');\n }\n };\n\n // 获取天气图标\n const getWeatherIcon = weather => {\n // 根据天气状况返回不同的图标\n const icons = {\n '晴': '',\n '多云': '',\n '阴': '',\n '雨': '',\n '雪': ''\n };\n\n // 匹配天气关键词\n for (const key in icons) {\n if (weather.includes(key)) {\n return icons[key];\n }\n }\n\n // 默认图标\n return '';\n };\n\n // 提供地图实例给子组件\n provide('mapInstance', mapInstance);\n\n // 处理窗口大小变化\n const resizeHandler = () => {\n if (mapInstance.value) {\n mapInstance.value.resize();\n }\n };\n onMounted(() => {\n initMap();\n window.addEventListener('resize', resizeHandler);\n });\n onUnmounted(() => {\n window.removeEventListener('resize', resizeHandler);\n if (mapInstance.value) {\n mapInstance.value.destroy();\n }\n });\n\n // 暴露给父组件的方法\n const getMap = () => mapInstance.value;\n return {\n mapInstance,\n mapLoaded,\n viewMode,\n currentMapStyle,\n overlayLayers,\n changeMapStyle,\n changeViewMode,\n updateOverlayLayers,\n getMap\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","onUnmounted","provide","useStore","ElMessage","AMapLoader","name","props","mode","type","String","default","validator","value","includes","emits","setup","emit","store","mapInstance","mapLoaded","viewMode","currentMapStyle","overlayLayers","layerInstances","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","getApiKey","initMap","container","document","getElementById","log","AMap","load","key","version","plugins","Map","zoom","center","pitch","rotation","mapStyle","features","resizeEnable","dragEnable","zoomEnable","doubleClickZoom","keyboardEnable","jogEnable","scrollWheel","touchZoom","toolbar","ToolBar","position","top","right","scale","Scale","bottom","controlBar","ControlBar","showZoomBar","showControlButton","addControl","on","e","traffic","window","TileLayer","Traffic","zIndex","opacity","satellite","Satellite","buildings","Buildings","heightFactor","updateOverlayLayers","weather","Weather","weatherService","getLive","err","data","weatherError","layerError","message","changeMapStyle","style","add","remove","setMapStyle","changeViewMode","setViewMode","setPitch","terrain","getTileUrl","x","y","z","showWeatherInfo","hideWeatherInfo","weatherMarkers","length","forEach","marker","cities","city","weatherInfo","temperature","windDirection","windPower","humidity","weatherIcon","getWeatherIcon","Marker","content","offset","Pixel","title","infoWindow","InfoWindow","open","push","icons","resizeHandler","resize","addEventListener","removeEventListener","destroy","getMap"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\components\\SharedMap.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n
\r\n 地图加载中...\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
地图图层
\r\n \r\n 标准地图\r\n 卫星地图\r\n 暗色地图\r\n \r\n \r\n \r\n \r\n
显示模式
\r\n \r\n 2D视图\r\n 3D视图\r\n \r\n \r\n \r\n \r\n
图层叠加
\r\n \r\n 交通流量\r\n 3D建筑\r\n 地形等高线\r\n 天气信息\r\n 威胁区域\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ff6005094a23cd02a98997edef492b84f122f9a27273370a542def94659e858c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ff6005094a23cd02a98997edef492b84f122f9a27273370a542def94659e858c.json
new file mode 100644
index 00000000..4214db55
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ff6005094a23cd02a98997edef492b84f122f9a27273370a542def94659e858c.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { ref, onMounted, inject, computed, toRaw } from 'vue';\nimport { useStore } from 'vuex';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport SharedMap from '../components/SharedMap.vue';\nimport BasicMapPanel from '../components/map-panels/BasicMapPanel.vue';\nimport ThreatZonePanel from '../components/map-panels/ThreatZonePanel.vue';\nimport PathPlanningPanel from '../components/map-panels/PathPlanningPanel.vue';\nimport PathHistoryPanel from '../components/map-panels/PathHistoryPanel.vue';\nexport default {\n name: 'UnifiedMapView',\n components: {\n SharedMap,\n BasicMapPanel,\n ThreatZonePanel,\n PathPlanningPanel,\n PathHistoryPanel\n },\n setup() {\n const store = useStore();\n const sharedMapRef = ref(null);\n\n // 活动面板\n const activePanel = ref('basicMap');\n\n // 地图实例\n const mapInstance = ref(null);\n\n // 通用状态\n const addMode = ref(false);\n\n // 地图视图相关状态\n const targetPoints = ref([]);\n const targetMarkers = ref([]);\n\n // 威胁区相关状态\n const threatZones = ref([]);\n // 使用普通对象存储地图覆盖物,避免响应式问题\n const zoneOverlays = {};\n const drawMode = ref(null);\n const currentThreatType = ref('radar');\n const threatLevel = ref('medium');\n const circleRadius = ref(1000);\n const threatDescription = ref('');\n const threatTimeRange = ref([new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)]);\n const selectedZoneId = ref(null);\n const visibleLayers = ref(['radar', 'missile', 'aircraft', 'ground', 'weather']);\n const editDialogVisible = ref(false);\n const editForm = ref({\n id: null,\n type: 'radar',\n level: 'medium',\n description: '',\n geometry: null\n });\n\n // 路径规划相关状态\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('astar');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 路径历史相关状态\n const selectedHistoryPaths = ref([]);\n const historyPathOverlays = {}; // 存储历史路径的覆盖物\n\n // 绘制工具相关\n const mouseTool = ref(null);\n\n // 安全的 base64 编码函数\n const safeBase64Encode = str => {\n try {\n return btoa(unescape(encodeURIComponent(str)));\n } catch (error) {\n console.warn('Base64编码失败:', error);\n return btoa(str);\n }\n };\n\n // 威胁类型配置\n const threatTypeConfig = {\n radar: {\n name: '雷达威胁',\n color: '#FF6B6B'\n },\n missile: {\n name: '导弹威胁',\n color: '#FF4757'\n },\n aircraft: {\n name: '空中威胁',\n color: '#5352ED'\n },\n ground: {\n name: '地面威胁',\n color: '#20BF6B'\n },\n weather: {\n name: '气象威胁',\n color: '#A55EEA'\n }\n };\n\n // 威胁等级配置\n const threatLevelConfig = {\n low: {\n name: '低威胁',\n opacity: 0.3\n },\n medium: {\n name: '中威胁',\n opacity: 0.5\n },\n high: {\n name: '高威胁',\n opacity: 0.7\n },\n critical: {\n name: '极高威胁',\n opacity: 0.9\n }\n };\n\n // 地图加载后回调\n const onMapLoaded = map => {\n mapInstance.value = map;\n console.log('地图加载完成,开始自动加载数据...');\n\n // 初始化鼠标工具\n const AMap = window.AMap;\n if (AMap) {\n try {\n mouseTool.value = new AMap.MouseTool(map);\n mouseTool.value.on('draw', onDrawComplete);\n console.log('MouseTool初始化成功');\n } catch (error) {\n console.error('MouseTool初始化失败:', error);\n }\n }\n\n // 自动加载所有数据\n loadAllData();\n };\n\n // 自动加载所有数据\n const loadAllData = async () => {\n try {\n console.log('开始自动加载所有数据...');\n\n // 加载威胁区数据\n await loadThreatZones();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 地图点击事件处理\n const onMapClick = e => {\n const {\n lng,\n lat\n } = e.lnglat;\n if (activePanel.value === 'basicMap' && addMode.value) {\n // 地图视图 - 添加目标点\n addTargetPoint(lng, lat);\n } else if (activePanel.value === 'pathPlanning' && addMode.value) {\n // 路径规划 - 添加路径点\n addPathPoint(lng, lat);\n }\n // 威胁区绘制通过mouseTool处理\n };\n\n // 初始化当前面板的功能\n const initActivePanelFeatures = () => {\n switch (activePanel.value) {\n case 'basicMap':\n // 初始化地图基础功能\n break;\n case 'threatZone':\n // 初始化威胁区功能\n loadThreatZones();\n break;\n case 'pathPlanning':\n // 初始化路径规划功能\n break;\n }\n };\n\n // 切换标签页\n const handleTabClick = () => {\n // 重置通用状态\n addMode.value = false;\n drawMode.value = null;\n\n // 停止鼠标工具\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 初始化当前面板的功能\n initActivePanelFeatures();\n };\n\n // --- 通用功能 ---\n\n // 切换添加模式\n const toggleAddMode = () => {\n addMode.value = !addMode.value;\n // 如果是威胁区模式,退出绘制模式\n if (activePanel.value === 'threatZone') {\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n }\n };\n\n // 无人机相关功能已删除\n\n // 获取添加模式提示\n const getAddModeTip = () => {\n if (activePanel.value === 'basicMap') {\n return '点击地图添加目标点';\n } else if (activePanel.value === 'pathPlanning') {\n return '点击地图添加路径点';\n }\n return '';\n };\n\n // --- 地图视图功能 ---\n\n // 添加目标点\n const addTargetPoint = (lng, lat) => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n\n // 创建目标点标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `Target (${lng.toFixed(6)}, ${lat.toFixed(6)})`\n });\n\n // 添加点击事件\n marker.on('click', () => {\n ElMessage({\n message: `目标点坐标: ${lng.toFixed(6)}, ${lat.toFixed(6)}`,\n type: 'info'\n });\n });\n mapInstance.value.add(marker);\n targetMarkers.value.push(marker);\n targetPoints.value.push({\n lng,\n lat\n });\n ElMessage.success(`已添加目标点: ${lng.toFixed(6)}, ${lat.toFixed(6)}`);\n };\n\n // 清除所有目标点\n const clearTargets = () => {\n targetMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n targetMarkers.value = [];\n targetPoints.value = [];\n ElMessage.success('已清除所有目标点');\n };\n\n // --- 威胁区功能 ---\n\n // 获取绘制提示\n const getDrawTip = () => {\n if (drawMode.value === 'circle') {\n return '点击地图确定威胁区圆心,拖动确定半径';\n } else if (drawMode.value === 'polygon') {\n return '点击添加多边形顶点,双击结束绘制';\n } else if (drawMode.value === 'rectangle') {\n return '点击并拖动绘制矩形区域';\n }\n return '';\n };\n\n // 处理威胁类型变化\n const handleThreatTypeChange = type => {\n currentThreatType.value = type;\n };\n\n // 处理威胁等级变化\n const handleThreatLevelChange = level => {\n threatLevel.value = level;\n };\n\n // 更新圆形半径\n const updateCircleRadius = radius => {\n circleRadius.value = radius;\n };\n\n // 更新威胁描述\n const updateThreatDescription = desc => {\n threatDescription.value = desc;\n };\n\n // 更新威胁时间范围\n const updateThreatTimeRange = range => {\n threatTimeRange.value = range;\n };\n\n // 设置绘制模式\n const setDrawMode = mode => {\n if (!mouseTool.value) {\n ElMessage.error('绘制工具未初始化');\n return;\n }\n if (drawMode.value === mode) {\n // 取消绘制模式\n drawMode.value = null;\n try {\n mouseTool.value.close(true);\n } catch (error) {\n console.warn('关闭绘制工具时出错:', error);\n }\n ElMessage.info('已取消绘制模式');\n return;\n }\n drawMode.value = mode;\n addMode.value = false;\n\n // 开始绘制\n const options = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n try {\n console.log('开始绘制模式:', mode, '选项:', options);\n switch (mode) {\n case 'circle':\n mouseTool.value.circle(options);\n break;\n case 'polygon':\n mouseTool.value.polygon(options);\n break;\n case 'rectangle':\n mouseTool.value.rectangle(options);\n break;\n }\n ElMessage.info(getDrawTip());\n } catch (error) {\n console.error('启动绘制工具失败:', error);\n ElMessage.error('启动绘制工具失败');\n drawMode.value = null;\n }\n };\n\n // 绘制完成事件\n const onDrawComplete = async event => {\n // 使用toRaw来获取原始对象,避免Vue响应式代理问题\n const overlay = toRaw(event.obj);\n console.log('原始威胁区绘制完成:', overlay);\n console.log('覆盖物类型:', overlay.className || overlay.CLASS_NAME);\n\n // 确保覆盖物已添加到地图并设置正确的样式\n try {\n // 检查覆盖物是否已经在地图上\n const overlays = mapInstance.value.getAllOverlays('polygon');\n console.log('地图上的多边形覆盖物:', overlays);\n\n // 重新设置样式以确保显示正确\n const styleOptions = {\n strokeColor: threatTypeConfig[currentThreatType.value].color,\n strokeWeight: 3,\n // 加粗边框\n strokeOpacity: 1,\n // 完全不透明的边框\n fillColor: threatTypeConfig[currentThreatType.value].color,\n fillOpacity: threatLevelConfig[threatLevel.value].opacity\n };\n console.log('应用样式选项:', styleOptions);\n overlay.setOptions(styleOptions);\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log('威胁区样式设置完成');\n } catch (error) {\n console.error('设置威胁区样式失败:', error);\n }\n\n // 创建威胁区数据 - 不要将overlay放入响应式数据中\n const geometry = getGeometryFromOverlay(overlay);\n\n // 验证必需字段\n if (!currentThreatType.value) {\n console.error('威胁类型为空:', currentThreatType.value);\n ElMessage.error('请选择威胁类型');\n return;\n }\n if (!threatLevel.value) {\n console.error('威胁等级为空:', threatLevel.value);\n ElMessage.error('请选择威胁等级');\n return;\n }\n if (!geometry) {\n console.error('几何信息解析失败');\n ElMessage.error('无法解析威胁区形状信息');\n return;\n }\n const zoneData = {\n type: currentThreatType.value,\n level: threatLevel.value,\n description: threatDescription.value || '',\n timeRange: [...threatTimeRange.value],\n // 创建副本避免响应式问题\n geometry: geometry\n };\n try {\n console.log('准备发送威胁区数据:', zoneData);\n console.log('当前威胁类型:', currentThreatType.value);\n console.log('当前威胁等级:', threatLevel.value);\n console.log('当前描述:', threatDescription.value);\n console.log('几何信息:', geometry);\n\n // 保存到后端\n const response = await fetch('/api/threat-zones', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(zoneData)\n });\n console.log('API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('API错误响应:', errorText);\n throw new Error(`保存威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('API成功响应:', result);\n if (result.success) {\n const zone = result.data;\n\n // 移除原始绘制的覆盖物\n mapInstance.value.remove(overlay);\n\n // 使用统一的渲染函数重新创建覆盖物,确保格式一致\n renderThreatZoneOnMap(zone);\n ElMessage.success(`已创建${threatTypeConfig[currentThreatType.value].name}区域`);\n console.log('威胁区已保存到数据库并重新渲染:', zone);\n } else {\n throw new Error(result.message || '保存威胁区失败');\n }\n } catch (error) {\n console.error('保存威胁区到后端失败:', error);\n ElMessage.error('保存威胁区失败: ' + error.message);\n\n // 保存失败时,从地图移除覆盖物\n mapInstance.value.remove(overlay);\n }\n\n // 重置绘制模式\n drawMode.value = null;\n if (mouseTool.value) {\n mouseTool.value.close(true);\n }\n\n // 输出调试信息\n console.log('当前所有威胁区:', threatZones.value.length);\n };\n const getGeometryFromOverlay = overlay => {\n console.log('解析覆盖物几何信息:', overlay.CLASS_NAME || overlay.className);\n try {\n if (overlay.CLASS_NAME === 'AMap.Circle' || overlay.className === 'Overlay.Circle') {\n const center = overlay.getCenter();\n const radius = overlay.getRadius();\n console.log('圆形几何信息:', {\n center,\n radius\n });\n return {\n type: 'circle',\n center: [center.lng, center.lat],\n radius: radius\n };\n } else if (overlay.CLASS_NAME === 'AMap.Polygon' || overlay.className === 'Overlay.Polygon') {\n const path = overlay.getPath();\n console.log('多边形几何信息:', path);\n return {\n type: 'polygon',\n path: path.map(point => [point.lng, point.lat])\n };\n } else if (overlay.CLASS_NAME === 'AMap.Rectangle' || overlay.className === 'Overlay.Rectangle') {\n const bounds = overlay.getBounds();\n console.log('矩形几何信息:', bounds);\n return {\n type: 'rectangle',\n bounds: [bounds.getSouthWest().lng, bounds.getSouthWest().lat, bounds.getNorthEast().lng, bounds.getNorthEast().lat]\n };\n }\n } catch (error) {\n console.error('解析几何信息失败:', error);\n }\n console.error('未识别的覆盖物类型:', overlay.CLASS_NAME || overlay.className);\n return null;\n };\n\n // 加载威胁区\n const loadThreatZones = async () => {\n try {\n console.log('开始加载威胁区数据...');\n console.log('请求URL: /api/threat-zones');\n const response = await fetch('/api/threat-zones');\n console.log('加载API响应状态:', response.status, response.statusText);\n if (!response.ok) {\n const errorText = await response.text();\n console.error('加载API错误响应:', errorText);\n throw new Error(`获取威胁区失败: ${response.status} ${response.statusText} - ${errorText}`);\n }\n const result = await response.json();\n console.log('加载API成功响应:', result);\n if (result.success) {\n console.log('从后端获取威胁区数据:', result.data);\n\n // 清除现有威胁区(仅清除地图,不调用后端API)\n clearAllZones(true);\n\n // 渲染威胁区到地图\n result.data.forEach(zone => {\n renderThreatZoneOnMap(zone);\n });\n console.log(`成功加载 ${result.data.length} 个威胁区`);\n } else {\n throw new Error(result.message || '获取威胁区失败');\n }\n } catch (error) {\n console.error('加载威胁区失败:', error);\n ElMessage.error('加载威胁区失败: ' + error.message);\n }\n };\n\n // 在地图上渲染威胁区\n const renderThreatZoneOnMap = zone => {\n if (!mapInstance.value) {\n console.error('地图实例不存在,无法渲染威胁区');\n return;\n }\n try {\n console.log('开始渲染威胁区到地图:', zone);\n const AMap = window.AMap;\n let overlay = null;\n\n // 威胁区样式配置\n const styleOptions = {\n strokeColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n strokeWeight: 3,\n strokeOpacity: 1,\n fillColor: threatTypeConfig[zone.type]?.color || '#FF0000',\n fillOpacity: threatLevelConfig[zone.level]?.opacity || 0.3\n };\n console.log('威胁区样式配置:', styleOptions);\n console.log('威胁区几何信息:', zone.geometry);\n\n // 根据几何类型创建覆盖物\n if (zone.geometry.type === 'circle') {\n console.log('创建圆形威胁区:', zone.geometry.center, zone.geometry.radius);\n overlay = new AMap.Circle({\n center: new AMap.LngLat(zone.geometry.center[0], zone.geometry.center[1]),\n radius: zone.geometry.radius,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'polygon') {\n console.log('创建多边形威胁区:', zone.geometry.path);\n const path = zone.geometry.path.map(point => new AMap.LngLat(point[0], point[1]));\n overlay = new AMap.Polygon({\n path: path,\n ...styleOptions\n });\n } else if (zone.geometry.type === 'rectangle') {\n console.log('创建矩形威胁区:', zone.geometry.bounds);\n const bounds = new AMap.Bounds(new AMap.LngLat(zone.geometry.bounds[0], zone.geometry.bounds[1]), new AMap.LngLat(zone.geometry.bounds[2], zone.geometry.bounds[3]));\n overlay = new AMap.Rectangle({\n bounds: bounds,\n ...styleOptions\n });\n }\n if (overlay) {\n console.log('威胁区覆盖物创建成功,添加到地图');\n\n // 添加到地图\n mapInstance.value.add(overlay);\n\n // 存储覆盖物\n zoneOverlays[zone.id] = overlay;\n\n // 检查威胁区是否已在列表中,避免重复添加\n const existingIndex = threatZones.value.findIndex(z => z.id === zone.id);\n if (existingIndex === -1) {\n threatZones.value.push(zone);\n console.log('威胁区已添加到列表');\n } else {\n console.log('威胁区已存在列表中,跳过添加');\n }\n\n // 添加点击事件\n overlay.on('click', () => {\n console.log('威胁区被点击:', zone.id);\n selectZone(zone.id);\n });\n\n // 强制刷新地图显示\n setTimeout(() => {\n mapInstance.value.setFitView();\n }, 100);\n console.log(`威胁区 ${zone.id} 已成功渲染到地图`);\n } else {\n console.error('威胁区覆盖物创建失败');\n }\n } catch (error) {\n console.error('渲染威胁区失败:', zone.id, error);\n }\n };\n\n // 选择威胁区\n const selectZone = id => {\n selectedZoneId.value = id;\n const overlay = zoneOverlays[id];\n if (overlay) {\n // 高亮选中的威胁区\n overlay.setOptions({\n strokeWeight: 4,\n strokeOpacity: 1\n });\n\n // 取消其他威胁区的高亮\n threatZones.value.forEach(z => {\n if (z.id !== id) {\n const otherOverlay = zoneOverlays[z.id];\n if (otherOverlay) {\n otherOverlay.setOptions({\n strokeWeight: 2,\n strokeOpacity: 0.8\n });\n }\n }\n });\n }\n };\n\n // 删除威胁区\n const deleteZone = async id => {\n try {\n console.log('开始删除威胁区:', id);\n const response = await fetch(`/api/threat-zones/${id}`, {\n method: 'DELETE'\n });\n if (!response.ok) {\n throw new Error('删除威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 从地图移除覆盖物\n const overlay = zoneOverlays[id];\n if (overlay) {\n mapInstance.value.remove(overlay);\n delete zoneOverlays[id];\n }\n\n // 从列表中移除\n threatZones.value = threatZones.value.filter(zone => zone.id !== id);\n if (selectedZoneId.value === id) {\n selectedZoneId.value = null;\n }\n ElMessage.success('威胁区已删除');\n console.log('威胁区删除成功:', id);\n } else {\n throw new Error(result.message || '删除威胁区失败');\n }\n } catch (error) {\n console.error('删除威胁区失败:', error);\n ElMessage.error('删除威胁区失败: ' + error.message);\n }\n };\n\n // 编辑威胁区\n const editZone = zone => {\n editForm.value = {\n ...zone\n };\n editDialogVisible.value = true;\n };\n\n // 保存编辑的威胁区\n const saveEditedZone = async () => {\n try {\n console.log('开始更新威胁区:', editForm.value.id);\n const response = await fetch(`/api/threat-zones/${editForm.value.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n type: editForm.value.type,\n level: editForm.value.level,\n description: editForm.value.description\n })\n });\n if (!response.ok) {\n throw new Error('更新威胁区失败');\n }\n const result = await response.json();\n if (result.success) {\n // 更新本地数据\n const zone = threatZones.value.find(z => z.id === editForm.value.id);\n if (zone) {\n zone.type = editForm.value.type;\n zone.level = editForm.value.level;\n zone.description = editForm.value.description;\n\n // 更新覆盖物样式\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n overlay.setOptions({\n strokeColor: threatTypeConfig[zone.type].color,\n fillColor: threatTypeConfig[zone.type].color,\n fillOpacity: threatLevelConfig[zone.level].opacity\n });\n }\n }\n ElMessage.success('威胁区已更新');\n console.log('威胁区更新成功:', result.data);\n } else {\n throw new Error(result.message || '更新威胁区失败');\n }\n } catch (error) {\n console.error('更新威胁区失败:', error);\n ElMessage.error('更新威胁区失败: ' + error.message);\n }\n editDialogVisible.value = false;\n };\n\n // 清除所有威胁区\n const clearAllZones = async (skipConfirm = false) => {\n try {\n if (!skipConfirm && threatZones.value.length > 0) {\n // 批量删除所有威胁区\n const zoneIds = threatZones.value.map(zone => zone.id);\n console.log('开始批量删除威胁区:', zoneIds);\n const response = await fetch('/api/threat-zones', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ids: zoneIds\n })\n });\n if (!response.ok) {\n throw new Error('批量删除威胁区失败');\n }\n const result = await response.json();\n if (!result.success) {\n throw new Error(result.message || '批量删除威胁区失败');\n }\n console.log('威胁区批量删除成功:', result.data);\n }\n\n // 从地图移除所有覆盖物\n Object.values(zoneOverlays).forEach(overlay => {\n if (mapInstance.value) {\n mapInstance.value.remove(overlay);\n }\n });\n\n // 清空数据\n threatZones.value = [];\n Object.keys(zoneOverlays).forEach(key => {\n delete zoneOverlays[key];\n });\n selectedZoneId.value = null;\n if (!skipConfirm) {\n ElMessage.success('已清除所有威胁区');\n }\n } catch (error) {\n console.error('清除威胁区失败:', error);\n if (!skipConfirm) {\n ElMessage.error('清除威胁区失败: ' + error.message);\n }\n }\n };\n\n // 更新图层可见性\n const updateLayerVisibility = layers => {\n visibleLayers.value = layers;\n\n // 更新威胁区显示\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay) {\n if (layers.includes(zone.type)) {\n mapInstance.value.add(overlay);\n } else {\n mapInstance.value.remove(overlay);\n }\n }\n });\n };\n\n // 适合威胁区\n const fitToZones = () => {\n if (threatZones.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n threatZones.value.forEach(zone => {\n const overlay = zoneOverlays[zone.id];\n if (overlay && overlay.getBounds) {\n bounds.extend(overlay.getBounds());\n } else if (zone.geometry?.center) {\n bounds.extend(zone.geometry.center);\n }\n });\n mapInstance.value.setBounds(bounds);\n };\n\n // --- 路径规划功能 ---\n\n // 添加路径点\n const addPathPoint = (lng, lat) => {\n if (!addMode.value || !mapInstance.value) return;\n const AMap = window.AMap;\n const pointIndex = pathPoints.value.length + 1;\n\n // 添加路径点\n pathPoints.value.push({\n lng,\n lat\n });\n\n // 创建标记\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${pointIndex}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n\n // 如果有多个点,绘制路径线\n if (pathPoints.value.length > 1) {\n updatePathLine();\n }\n ElMessage.success(`已添加路径点${pointIndex}`);\n };\n const updatePathLine = () => {\n if (!mapInstance.value) return;\n const AMap = window.AMap;\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n }\n const path = pathPoints.value.map(p => [p.lng, p.lat]);\n pathLine.value = new AMap.Polyline({\n path: path,\n strokeColor: '#1890FF',\n strokeWeight: 4,\n strokeStyle: 'solid'\n });\n mapInstance.value.add(pathLine.value);\n };\n\n // 移除路径点\n const removePoint = index => {\n pathPoints.value.splice(index, 1);\n\n // 重新绘制标记和路径\n clearPathMarkers();\n pathPoints.value.forEach((point, i) => {\n addPathPointMarker(point.lng, point.lat, i + 1);\n });\n if (pathPoints.value.length > 1) {\n updatePathLine();\n } else if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 重置路径信息\n pathInfo.value = null;\n };\n const addPathPointMarker = (lng, lat, index) => {\n const AMap = window.AMap;\n const marker = new AMap.Marker({\n position: [lng, lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: `路径点${index}`\n });\n mapInstance.value.add(marker);\n pathMarkers.value.push(marker);\n };\n const clearPathMarkers = () => {\n pathMarkers.value.forEach(marker => {\n mapInstance.value.remove(marker);\n });\n pathMarkers.value = [];\n };\n\n // 规划路径 - 支持多目标点\n const planPath = async () => {\n if (pathPoints.value.length < 2) {\n ElMessage.warning('至少需要2个路径点');\n return;\n }\n try {\n console.log('开始多目标路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点数量:', pathPoints.value.length);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const targetPoints = pathPoints.value.slice(1); // 第一个点是起点,其余的都是目标点\n\n // 构建请求数据 - 支持多目标点\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n targetPoints: targetPoints.map(point => ({\n lng: point.lng,\n lat: point.lat\n })),\n algorithm: planningAlgorithm.value || 'astar',\n // 默认使用A*算法\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value && threatZones.value.length > 0 ? threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry_type: zone.geometry?.type || zone.geometry_type,\n geometry_data: zone.geometry || zone.geometry_data,\n description: zone.description\n })) : []\n };\n console.log('发送多目标路径规划请求:', planningData);\n\n // 发送到后端进行路径规划\n const response = await fetch('/api/path-planning', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(planningData)\n });\n if (!response.ok) {\n const errorText = await response.text();\n console.error('后端错误响应:', {\n status: response.status,\n statusText: response.statusText,\n error: errorText\n });\n throw new Error(`路径规划失败: ${response.status} - ${errorText}`);\n }\n const result = await response.json();\n console.log('路径规划结果:', result);\n if (result.success) {\n const {\n data,\n details\n } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: Math.round(data.distance || details?.totalDistance || 0),\n duration: data.estimated_time || details?.estimatedTime || 0,\n pointCount: data.path_points?.length || details?.waypointCount || 0,\n algorithm: data.algorithm || result.algorithm,\n threatZonesAvoided: data.threat_zones_avoided || details?.threatZonesAvoided || [],\n targetOrder: details?.targetOrder || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n const pathData = data.path_points || data.path || [];\n renderPlannedPathWithTargets(pathData, targetPoints, details?.targetOrder);\n ElMessage.success(`${getAlgorithmName(result.algorithm)}多目标路径规划完成!`);\n const threatCount = data.threat_zones_avoided?.length || details?.threatZonesAvoided?.length || 0;\n if (threatCount > 0) {\n ElMessage.info(`成功避开 ${threatCount} 个威胁区`);\n }\n\n // 显示目标点访问顺序\n if (details?.targetOrder && details.targetOrder.length > 0) {\n const orderInfo = details.targetOrder.map((target, index) => `${index + 1}. ${target.coords.lng.toFixed(4)}, ${target.coords.lat.toFixed(4)}${target.inThreatZone ? ' (威胁区内)' : ''}`).join('\\n');\n setTimeout(() => {\n ElMessage({\n message: `目标点访问顺序:\\n${orderInfo}`,\n type: 'info',\n duration: 10000,\n showClose: true\n });\n }, 1000);\n }\n } else {\n throw new Error(result.message || '路径规划失败');\n }\n } catch (error) {\n console.error('路径规划失败:', error);\n ElMessage.error('路径规划失败: ' + error.message);\n }\n };\n\n // 获取算法显示名称\n const getAlgorithmName = algorithm => {\n const algorithmNames = {\n astar: 'A*算法',\n rrt: 'RRT算法',\n genetic: '遗传算法',\n straight: '直线规划'\n };\n return algorithmNames[algorithm] || algorithm;\n };\n\n // 渲染规划后的路径 - 支持多目标点显示\n const renderPlannedPathWithTargets = (plannedPath, originalTargets, targetOrder) => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染多目标路径:', {\n pathLength: plannedPath.length,\n targetCount: originalTargets.length,\n targetOrder: targetOrder\n });\n\n // 创建路径线\n const pathCoords = plannedPath.map(point => [point.lng, point.lat]);\n pathLine.value = new AMap.Polyline({\n path: pathCoords,\n strokeColor: '#52C41A',\n // 绿色表示规划路径\n strokeWeight: 4,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine.value);\n const markers = [];\n\n // 创建起点标记\n const startMarker = new AMap.Marker({\n position: [plannedPath[0].lng, plannedPath[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(35, 35),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(35, 35)\n }),\n title: '起点',\n zIndex: 200\n });\n mapInstance.value.add(startMarker);\n markers.push(startMarker);\n\n // 创建目标点标记(按访问顺序)\n if (targetOrder && targetOrder.length > 0) {\n targetOrder.forEach((target, index) => {\n const visitOrder = index + 1;\n const isInThreat = target.inThreatZone;\n const threatLevel = target.threatLevel;\n\n // 根据威胁等级设置颜色\n let color = '#52C41A'; // 默认绿色(安全)\n if (isInThreat) {\n switch (threatLevel) {\n case 'low':\n color = '#FAAD14'; // 黄色\n break;\n case 'medium':\n color = '#FA8C16'; // 橙色\n break;\n case 'high':\n color = '#F5222D'; // 红色\n break;\n case 'critical':\n color = '#722ED1'; // 紫色\n break;\n }\n }\n const targetMarker = new AMap.Marker({\n position: [target.coords.lng, target.coords.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(32, 32)\n }),\n title: `目标点${visitOrder}${isInThreat ? ` (${threatLevel}威胁区)` : ' (安全区域)'}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n } else {\n // 如果没有目标顺序信息,按原始顺序显示\n originalTargets.forEach((target, index) => {\n const targetNumber = index + 1;\n const isLastTarget = index === originalTargets.length - 1;\n const targetMarker = new AMap.Marker({\n position: [target.lng, target.lat],\n icon: new AMap.Icon({\n size: new AMap.Size(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: isLastTarget ? '终点' : `目标点${targetNumber}`,\n zIndex: 150\n });\n mapInstance.value.add(targetMarker);\n markers.push(targetMarker);\n });\n }\n pathMarkers.value = markers;\n\n // 适配地图视图以显示整个路径\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value], false, [50, 50, 50, 50]); // 添加边距\n }\n }, 100);\n };\n\n // 清除路径显示\n const clearPathDisplay = () => {\n // 清除路径线\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n\n // 清除标记\n clearPathMarkers();\n };\n const calculateDistance = () => {\n let totalDistance = 0;\n for (let i = 0; i < pathPoints.value.length - 1; i++) {\n const p1 = pathPoints.value[i];\n const p2 = pathPoints.value[i + 1];\n totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng);\n }\n return totalDistance;\n };\n const getDistance = (lat1, lng1, lat2, lng2) => {\n const R = 6371e3;\n const φ1 = lat1 * Math.PI / 180;\n const φ2 = lat2 * Math.PI / 180;\n const Δφ = (lat2 - lat1) * Math.PI / 180;\n const Δλ = (lng2 - lng1) * Math.PI / 180;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n\n // 执行路径\n const executePath = async () => {\n try {\n await ElMessageBox.confirm('确定要执行此路径吗?', '确认执行', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n });\n ElMessage.success('路径执行中...');\n // TODO: 发送路径执行指令到后端\n } catch {\n ElMessage.info('已取消执行');\n }\n };\n\n // 清除所有路径点\n const clearAll = () => {\n clearPathMarkers();\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n pathPoints.value = [];\n pathInfo.value = null;\n ElMessage.success('已清除所有路径点');\n };\n\n // 更新规划算法\n const updatePlanningAlgorithm = algorithm => {\n planningAlgorithm.value = algorithm;\n };\n\n // 更新飞行高度\n const updateFlightAltitude = altitude => {\n flightAltitude.value = altitude;\n };\n\n // 更新飞行速度\n const updateFlightSpeed = speed => {\n flightSpeed.value = speed;\n };\n\n // 中心到起点\n const centerToStart = () => {\n if (pathPoints.value.length === 0) return;\n const startPoint = pathPoints.value[0];\n mapInstance.value.setCenter([startPoint.lng, startPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 中心到终点\n const centerToEnd = () => {\n if (pathPoints.value.length < 2) return;\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n mapInstance.value.setCenter([endPoint.lng, endPoint.lat]);\n mapInstance.value.setZoom(15);\n };\n\n // 适合路径\n const fitToPath = () => {\n console.log('fitToPath called, pathPoints length:', pathPoints.value.length);\n if (!pathPoints.value || pathPoints.value.length === 0) {\n console.warn('没有路径点数据');\n ElMessage.warning('没有路径点可显示');\n return;\n }\n try {\n // 检查地图实例是否存在\n if (!mapInstance.value) {\n console.error('地图实例不存在');\n ElMessage.error('地图未初始化');\n return;\n }\n\n // 检查AMap是否可用\n if (!window.AMap || !window.AMap.Bounds) {\n console.error('AMap Bounds API不可用');\n ElMessage.error('地图API未加载完成');\n return;\n }\n console.log('路径点数据:', pathPoints.value);\n\n // 创建边界对象\n const bounds = new window.AMap.Bounds();\n\n // 添加所有路径点到边界\n let validPointsCount = 0;\n pathPoints.value.forEach((point, index) => {\n if (point && typeof point.lng === 'number' && typeof point.lat === 'number' && !isNaN(point.lng) && !isNaN(point.lat)) {\n bounds.extend([point.lng, point.lat]);\n validPointsCount++;\n console.log(`添加路径点${index + 1}: [${point.lng}, ${point.lat}]`);\n } else {\n console.warn(`无效的路径点${index + 1}:`, point);\n }\n });\n if (validPointsCount === 0) {\n console.error('没有有效的路径点');\n ElMessage.error('路径点数据无效');\n return;\n }\n\n // 检查边界是否有效\n const southwest = bounds.getSouthWest();\n const northeast = bounds.getNorthEast();\n console.log('边界信息:', {\n southwest: [southwest.lng, southwest.lat],\n northeast: [northeast.lng, northeast.lat]\n });\n if (isNaN(southwest.lng) || isNaN(southwest.lat) || isNaN(northeast.lng) || isNaN(northeast.lat)) {\n console.error('计算的边界包含NaN值');\n ElMessage.error('路径边界计算失败');\n return;\n }\n\n // 设置地图边界\n try {\n mapInstance.value.setBounds(bounds, false, [50, 50, 50, 50]); // 增加边距\n } catch (boundsError) {\n console.error('设置地图边界失败:', boundsError);\n // fallback: 使用第一个点居中显示\n if (pathPoints.value.length > 0) {\n const firstPoint = pathPoints.value[0];\n mapInstance.value.setCenter([firstPoint.lng, firstPoint.lat]);\n mapInstance.value.setZoom(12);\n }\n }\n console.log('成功适配路径边界,包含', validPointsCount, '个有效点');\n ElMessage.success(`已显示包含${validPointsCount}个点的完整路径`);\n } catch (error) {\n console.error('fitToPath执行错误:', error);\n ElMessage.error('显示完整路径失败: ' + error.message);\n }\n };\n\n // --- 路径历史功能 ---\n\n // 显示历史路径\n const showHistoryPath = path => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 创建路径线\n const pathLine = new window.AMap.Polyline({\n path: path.path_points.map(point => [point.lng, point.lat]),\n strokeColor: path.color || '#FF5722',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true,\n strokeDasharray: [10, 5] // 虚线样式,与当前规划路径区分\n });\n\n // 添加起点和终点标记\n const startPoint = path.path_points[0];\n const endPoint = path.path_points[path.path_points.length - 1];\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 起点`,\n zIndex: 110\n });\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(24, 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(24, 24)\n }),\n title: `${path.name} - 终点`,\n zIndex: 110\n });\n\n // 存储覆盖物\n historyPathOverlays[path.id] = {\n pathLine,\n startMarker,\n endMarker\n };\n\n // 添加到地图\n mapInstance.value.add([pathLine, startMarker, endMarker]);\n ElMessage.success(`已显示路径: ${path.name}`);\n } catch (error) {\n console.error('显示历史路径失败:', error);\n ElMessage.error('显示路径失败');\n }\n };\n\n // 隐藏历史路径\n const hideHistoryPath = path => {\n if (!mapInstance.value) return;\n const overlays = historyPathOverlays[path.id];\n if (overlays) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n delete historyPathOverlays[path.id];\n ElMessage.info(`已隐藏路径: ${path.name}`);\n }\n };\n\n // 显示所有历史路径\n const showAllHistoryPaths = paths => {\n paths.forEach(path => {\n if (!selectedHistoryPaths.value.includes(path.id)) {\n showHistoryPath(path);\n }\n });\n };\n\n // 隐藏所有历史路径\n const hideAllHistoryPaths = () => {\n Object.keys(historyPathOverlays).forEach(pathId => {\n const overlays = historyPathOverlays[pathId];\n if (overlays && mapInstance.value) {\n mapInstance.value.remove([overlays.pathLine, overlays.startMarker, overlays.endMarker]);\n }\n });\n // 清空覆盖物存储\n Object.keys(historyPathOverlays).forEach(key => delete historyPathOverlays[key]);\n ElMessage.info('已隐藏所有历史路径');\n };\n\n // 居中到历史路径\n const centerToHistoryPath = path => {\n if (!mapInstance.value || !path.path_points || path.path_points.length === 0) return;\n try {\n const bounds = new window.AMap.Bounds();\n path.path_points.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds, false, [20, 20, 20, 20]);\n ElMessage.success(`已居中显示路径: ${path.name}`);\n } catch (error) {\n console.error('居中显示路径失败:', error);\n ElMessage.error('居中显示失败');\n }\n };\n\n // 复制历史路径\n const duplicateHistoryPath = path => {\n // 清空当前路径点\n clearAll();\n\n // 复制路径点到当前规划\n pathPoints.value = [...path.path_points];\n planningAlgorithm.value = path.algorithm || 'astar';\n flightAltitude.value = path.flight_altitude || 100;\n flightSpeed.value = path.flight_speed || 10;\n\n // 切换到路径规划面板\n activePanel.value = 'pathPlanning';\n\n // 显示复制的路径点\n displayPathPoints();\n ElMessage.success(`已复制路径 \"${path.name}\" 到当前规划`);\n };\n\n // 更新选中的历史路径\n const updateSelectedHistoryPaths = pathIds => {\n selectedHistoryPaths.value = pathIds;\n };\n\n // 在地图上显示路径点\n const displayPathPoints = (isHistoryPath = false) => {\n if (!mapInstance.value || !window.AMap) return;\n try {\n // 清除现有的路径标记和线条\n if (pathMarkers.value.length > 0) {\n mapInstance.value.remove(pathMarkers.value);\n pathMarkers.value = [];\n }\n if (pathLine.value) {\n mapInstance.value.remove(pathLine.value);\n pathLine.value = null;\n }\n if (pathPoints.value.length === 0) return;\n if (isHistoryPath) {\n // 历史路径:只显示起点和终点标记\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 验证起点坐标\n if (startPoint && typeof startPoint.lng === 'number' && typeof startPoint.lat === 'number' && !isNaN(startPoint.lng) && !isNaN(startPoint.lat)) {\n const startMarker = new window.AMap.Marker({\n position: [startPoint.lng, startPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `起点: (${startPoint.lng.toFixed(6)}, ${startPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(startMarker);\n }\n\n // 验证终点坐标\n if (endPoint && typeof endPoint.lng === 'number' && typeof endPoint.lat === 'number' && !isNaN(endPoint.lng) && !isNaN(endPoint.lat) && (endPoint.lng !== startPoint.lng || endPoint.lat !== startPoint.lat)) {\n const endMarker = new window.AMap.Marker({\n position: [endPoint.lng, endPoint.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(32, 32),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(32, 32)\n }),\n title: `终点: (${endPoint.lng.toFixed(6)}, ${endPoint.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(endMarker);\n }\n } else {\n // 当前路径规划:显示所有路径点标记\n pathPoints.value.forEach((point, index) => {\n // 验证坐标数据\n if (!point || typeof point.lng !== 'number' || typeof point.lat !== 'number' || isNaN(point.lng) || isNaN(point.lat)) {\n console.warn(`跳过无效的路径点 ${index}:`, point);\n return;\n }\n const isStart = index === 0;\n const isEnd = index === pathPoints.value.length - 1;\n\n // 使用简单的圆形标记,避免SVG问题\n const marker = new window.AMap.Marker({\n position: [point.lng, point.lat],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24),\n image: `data:image/svg+xml,${encodeURIComponent(`\n \n `)}`,\n imageSize: new window.AMap.Size(isStart ? 32 : 24, isStart ? 32 : 24)\n }),\n title: `${isStart ? '起点' : isEnd ? '终点' : `目标点${index}`}: (${point.lng.toFixed(6)}, ${point.lat.toFixed(6)})`,\n zIndex: 100\n });\n pathMarkers.value.push(marker);\n });\n }\n\n // 添加标记到地图\n if (pathMarkers.value.length > 0) {\n mapInstance.value.add(pathMarkers.value);\n }\n\n // 如果有路径信息,显示规划后的路径线\n if (pathInfo.value && pathInfo.value.path) {\n let pathData = pathInfo.value.path;\n\n // 处理路径数据格式\n if (typeof pathData === 'string') {\n try {\n pathData = JSON.parse(pathData);\n } catch (e) {\n console.error('解析路径数据失败:', e);\n pathData = [];\n }\n }\n if (Array.isArray(pathData) && pathData.length > 0) {\n // 转换路径点格式\n const pathCoords = pathData.map(point => {\n if (typeof point === 'object' && point.lng !== undefined && point.lat !== undefined) {\n const lng = parseFloat(point.lng);\n const lat = parseFloat(point.lat);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n } else if (Array.isArray(point) && point.length >= 2) {\n const lng = parseFloat(point[0]);\n const lat = parseFloat(point[1]);\n if (!isNaN(lng) && !isNaN(lat)) {\n return [lng, lat];\n }\n }\n console.warn('跳过无效的路径点:', point);\n return null;\n }).filter(coord => coord !== null);\n console.log('处理后的路径坐标:', pathCoords.length);\n if (pathCoords.length > 1) {\n const pathLineObj = new window.AMap.Polyline({\n path: pathCoords,\n strokeColor: '#FF4444',\n strokeWeight: 4,\n strokeOpacity: 0.8,\n strokeStyle: 'solid',\n showDir: true\n });\n pathLine.value = pathLineObj;\n mapInstance.value.add(pathLineObj);\n }\n }\n }\n } catch (error) {\n console.error('显示路径点失败:', error);\n }\n };\n\n // 从路径规划面板加载历史路径\n const loadHistoryPathToPlanning = historyData => {\n try {\n // 清空当前路径\n clearAll();\n\n // 加载路径点\n pathPoints.value = [...historyData.pathPoints];\n\n // 更新规划参数\n planningAlgorithm.value = historyData.algorithm;\n flightAltitude.value = historyData.flightAltitude;\n flightSpeed.value = historyData.flightSpeed;\n\n // 更新路径信息\n pathInfo.value = historyData.pathInfo;\n\n // 在地图上显示路径点\n displayPathPoints();\n\n // 自动适配地图视野\n setTimeout(() => {\n fitToPath();\n }, 500);\n console.log('历史路径加载完成:', historyData);\n } catch (error) {\n console.error('加载历史路径失败:', error);\n ElMessage.error('加载历史路径失败');\n }\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n selectedHistoryPaths,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n getAddModeTip,\n getDrawTip,\n handleThreatTypeChange,\n handleThreatLevelChange,\n updateCircleRadius,\n updateThreatDescription,\n updateThreatTimeRange,\n setDrawMode,\n selectZone,\n deleteZone,\n editZone,\n saveEditedZone,\n clearAllZones,\n updateLayerVisibility,\n fitToZones,\n removePoint,\n planPath,\n executePath,\n clearAll,\n updatePlanningAlgorithm,\n updateFlightAltitude,\n updateFlightSpeed,\n centerToStart,\n centerToEnd,\n fitToPath,\n // 路径历史相关方法\n showHistoryPath,\n hideHistoryPath,\n showAllHistoryPaths,\n hideAllHistoryPaths,\n centerToHistoryPath,\n duplicateHistoryPath,\n updateSelectedHistoryPaths,\n loadHistoryPathToPlanning,\n displayPathPoints,\n // 威胁区名称获取函数(供面板组件使用)\n getThreatTypeName: type => threatTypeConfig[type]?.name || '未知威胁',\n getThreatLevelName: level => threatLevelConfig[level]?.name || '未知等级'\n };\n }\n};","map":{"version":3,"names":["ref","onMounted","inject","computed","toRaw","useStore","ElMessage","ElMessageBox","SharedMap","BasicMapPanel","ThreatZonePanel","PathPlanningPanel","PathHistoryPanel","name","components","setup","store","sharedMapRef","activePanel","mapInstance","addMode","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","selectedHistoryPaths","historyPathOverlays","mouseTool","safeBase64Encode","str","btoa","unescape","encodeURIComponent","error","console","warn","threatTypeConfig","radar","color","missile","aircraft","ground","weather","threatLevelConfig","low","opacity","medium","high","critical","onMapLoaded","map","value","log","AMap","window","MouseTool","on","onDrawComplete","loadAllData","loadThreatZones","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","getAddModeTip","marker","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","add","push","success","clearTargets","forEach","remove","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","radius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","circle","polygon","rectangle","event","overlay","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","response","fetch","method","headers","body","JSON","stringify","status","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","length","center","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","Circle","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","Object","values","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","slice","planningData","algorithm","geometry_type","geometry_data","details","distance","Math","round","totalDistance","duration","estimated_time","estimatedTime","pointCount","path_points","waypointCount","threatZonesAvoided","threat_zones_avoided","targetOrder","clearPathDisplay","pathData","renderPlannedPathWithTargets","getAlgorithmName","threatCount","orderInfo","target","coords","inThreatZone","join","showClose","algorithmNames","astar","rrt","genetic","straight","plannedPath","originalTargets","pathLength","targetCount","pathCoords","markers","startMarker","zIndex","visitOrder","isInThreat","targetMarker","targetNumber","isLastTarget","calculateDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","validPointsCount","isNaN","southwest","northeast","boundsError","firstPoint","showHistoryPath","showDir","strokeDasharray","endMarker","hideHistoryPath","showAllHistoryPaths","paths","hideAllHistoryPaths","pathId","centerToHistoryPath","duplicateHistoryPath","flight_altitude","flight_speed","displayPathPoints","updateSelectedHistoryPaths","pathIds","isHistoryPath","isStart","isEnd","parse","Array","isArray","undefined","parseFloat","coord","pathLineObj","loadHistoryPathToPlanning","historyData","getThreatTypeName","getThreatLevelName"],"sources":["E:\\大三下\\软件工程\\command_center(1)\\command_center\\web-command-center\\frontend\\src\\views\\UnifiedMapView.vue"],"sourcesContent":["\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 取消\r\n 保存\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/src/components/SharedMap.vue b/Src/command_center/web-command-center/frontend/src/components/SharedMap.vue
index 4ee79288..5363cf15 100644
--- a/Src/command_center/web-command-center/frontend/src/components/SharedMap.vue
+++ b/Src/command_center/web-command-center/frontend/src/components/SharedMap.vue
@@ -127,8 +127,8 @@ export default {
// 创建地图实例
mapInstance.value = new AMap.Map('sharedMap', {
- zoom: 11,
- center: [112.982279, 28.19409], // 长沙坐标
+ zoom: 20,
+ center: [113.0434, 28.2592], // 精确定位到指定坐标
viewMode: viewMode.value,
pitch: viewMode.value === '3D' ? 45 : 0,
rotation: 0,
diff --git a/Src/command_center/web-command-center/frontend/src/components/map-panels/PathHistoryPanel.vue b/Src/command_center/web-command-center/frontend/src/components/map-panels/PathHistoryPanel.vue
new file mode 100644
index 00000000..e9a48386
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/src/components/map-panels/PathHistoryPanel.vue
@@ -0,0 +1,573 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ path.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ selectedPathDetail.name }}
+ {{ selectedPathDetail.algorithm.toUpperCase() }}
+
+
+ {{ getStatusText(selectedPathDetail.status) }}
+
+
+ {{ formatDistance(selectedPathDetail.distance) }}
+ {{ selectedPathDetail.waypoint_count }}
+ {{ selectedPathDetail.flight_altitude }}m
+ {{ selectedPathDetail.flight_speed }}m/s
+ {{ selectedPathDetail.estimated_time }}分钟
+ {{ formatTime(selectedPathDetail.created_at) }}
+
+
+
+
路径描述
+
{{ selectedPathDetail.description }}
+
+
+
+
避开的威胁区域
+
+ 威胁区 #{{ zoneId }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/src/components/map-panels/PathPlanningPanel.vue b/Src/command_center/web-command-center/frontend/src/components/map-panels/PathPlanningPanel.vue
index e7102e08..54f977e8 100644
--- a/Src/command_center/web-command-center/frontend/src/components/map-panels/PathPlanningPanel.vue
+++ b/Src/command_center/web-command-center/frontend/src/components/map-panels/PathPlanningPanel.vue
@@ -71,6 +71,26 @@
+
+
+ 历史路径
+
+
+ 清空当前
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 刷新
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ path.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+