From 41973131270a32f014f26263ff0c7e8326d918ee Mon Sep 17 00:00:00 2001
From: dmz <2033017499@qq.com>
Date: Thu, 3 Jul 2025 16:29:55 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0A*=E8=B7=AF=E5=BE=84=E8=A7=84?=
=?UTF-8?q?=E5=88=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../PATHPLANNING_IMPLEMENTATION.md | 1 +
.../backend/create-test-threats.js | 83 +
.../backend/src/routes/drones.js | 16 +-
.../backend/src/routes/operationLogs.js | 5 +-
.../backend/src/routes/pathPlanning.js | 1353 ++++++++++++-----
.../backend/src/routes/tasks.js | 24 +-
.../backend/src/routes/threatZones.js | 46 +-
.../web-command-center/database/init.sql | 208 ++-
...13b559e56bd5efa25f0fd00e4988d7cf251ff.json | 1 +
...083050be5c2b9b0896f2e17539b2de6544d43.json | 1 +
...b8f21f9a27faf85985ef8b11cfcacf522dcc3.json | 1 +
...0a1a9e6bba180ac5a5c318f866b914b59ac0b.json | 1 +
...0ce993b0a8b3b5548399d144bf1230b13c789.json | 1 +
...e0763c6be48443f34c6c01926044b716401b6.json | 1 +
...a7ee218ebbd3e4ac86b2f5ca2f71df00f3272.json | 1 +
...480ee250666bf6f4f79fe59413ff7c0b18474.json | 1 +
...41fae23e46f0001512f662cc5349534106f15.json | 1 +
...ed68cf69ba5e3b53112ce986c26e75ce025be.json | 1 +
...c033a7fd9b82f82da6047d222e7b2872588ef.json | 1 +
...683b7129cae88fd6d964b36220816167921b1.json | 1 +
...cced6349c8ae04454931f7fe26c4af6493658.json | 1 +
...3970417195b569345451b50dbded6289f80f6.json | 1 +
...e8f72582c4d4703cd00757f5c3197f6d44664.json | 1 +
...87ce04e99a36fcc9425844c3407a3cfe0bc98.json | 1 +
...ab83bf970bec5e2793bfdd39d153318a34403.json | 1 +
...be66a39b9a16b45a040f3c10ce22199369cb5.json | 1 +
...fc57e2dc2e87226d05d4dc08022af67ee1665.json | 1 +
...e5d78e5f668ddb76a936c1e2a2ca2e6aa7abe.json | 1 +
...7a2b364cef48e19ce522d4c9a11b2a0f6931c.json | 1 +
...39e0625000e92b50bd29ab8f902317837b291.json | 1 +
...eabbad77bcb4a42c968cf8d402983cc8725c3.json | 1 +
...c345b85d7d8990efa730b9be4e22d81250779.json | 1 +
...e17bfc2952f6639334c7cb7e75c7168be28fa.json | 1 +
...b4672224e3d7ceddab40651943b9f1c5ddf20.json | 1 +
...56ea656241fb8070b7592b33582c8e682adc3.json | 1 +
...b3e43c9b96cd953704cf7a3ed5ccb8a3c821c.json | 1 +
...9b8144f03d90e84704bb8954c42ffd16afe90.json | 1 +
...cf05b5f8bafe69b5488751efd34be6d982e90.json | 1 +
...d86a618875855628e19a0a5529d32c6d34d94.json | 1 +
...892112fa873ed1b81dbf2ce70b31988878441.json | 1 +
...d36d0f37f8efd619c57df3c1b433b813d8061.json | 1 +
...b944aaa749444d8af85982c0a3f47aac66e30.json | 1 +
...52103b8750f33d88674b942e79c3888deafc3.json | 1 +
...993bb63d3d0ff3de24fc635583773d81c1a15.json | 1 +
...5e335628a3f8f2f524ad5a11c27a9b0dde0e9.json | 1 +
...5b6ae9632d23d92af7f5467d4e4a76d775567.json | 1 +
...ee9050bc5b8a9daec010fa5cac5bbf0c5b971.json | 1 +
...0c3a9c4b64d1c5e3aa932cb0801ffeefc0686.json | 1 +
...47f1ff66ccb4c66914881fd64313e5dc964f1.json | 1 +
...53e6903de9ebe765570ea8c3153747f5d17d8.json | 1 +
...053bb1e629c87205dc281c338800cefbf7f3d.json | 1 +
...28343c019297a0807c4fd6de9d065425126cc.json | 1 +
...ee2fb1f9b6944c4675f01cf087f207c8d7726.json | 1 +
...33be2b9895f993cf97096f7c75d97e1f47d95.json | 1 +
...3b38bb78057363f7cec51ddfeac72b583cb73.json | 1 +
...8ab2f8cee02944da447d973962b84c20dd3a3.json | 1 +
...fe66ec070e78476add87a0ba6a8aa828b4915.json | 1 +
...db0220ee5cba3b95f25b6c3b7e404d441ef06.json | 1 +
...d2c9a161028e5d692a3bebea9be081ee27322.json | 1 +
...02a528860fc9009e5f3f51777d6c00091a4ca.json | 1 +
...87b8bb5c8fccf57c6725903d2ad2338dc39a8.json | 1 +
...7a7be34f12eb8d0ce2f56db67e6d94027c681.json | 1 +
...2c21c5de480f079bae24ad309e780f6bc21a8.json | 1 +
...3b97eb5c4cb0990bb7e3b60fce656187a2e6d.json | 1 +
...3ba407b3e5ef99656c45865cafd33c2c082bf.json | 1 +
...82e33fcff4b777cbd58fdf484b784923edd51.json | 1 +
...13964ed30aa84ecdad3bb75e83b30754dcfc1.json | 1 +
...4f65ed42ec777426d1b3c6354e7665d2db088.json | 1 +
...729c57b32710855b904de782a76a58a36e55f.json | 1 +
...bd0367933c3abfb0b173b41c777136fb03ba2.json | 1 +
...4b21d4980b79641d8fa37b65eb08698277ccc.json | 1 +
...b82966c16f2ef51cb00ad2e2834522768b1b3.json | 1 +
...8a76ca5cdd5a8ce9eb5c3e048cd1b0a05d466.json | 1 +
...86b54dd0c0e7994d7b5e92238b7daed1fab0f.json | 1 +
...51f394c3d3fc393310c0fd72d88997055d230.json | 1 +
...2459ea0a9c9527a30b6bdfa30e8c3fc7d1c68.json | 1 +
...88d62f6eaa46d9716569ad34f5026ffa85291.json | 1 +
...457622fabe1e8ccb7e039c347dbe760f79319.json | 1 +
...262f4984131939d3993d3783c2a279a2dfec4.json | 1 +
...95435d7de44a531c1a2823bc6674d4781024b.json | 1 +
...7923b18e6dbce06992e41947eb891dc35d690.json | 1 +
...8eca0e605b38eb245303d97410ab84d422de9.json | 1 +
...91587e49c49949403e3a8ab92eb9aad94d690.json | 1 +
...2b162ffcbbae7a7417cb69def7681522ed8d2.json | 1 +
...e1add5b2809963808bb742b1947ce36d5a7ab.json | 1 +
...e51a80e78911b72f83a6387bdc5575db73d46.json | 1 +
...9fc5819f6f65d0742285d28c789e227a9c644.json | 1 +
...248abed3586fc41e9d783feadeb73db53d8f9.json | 1 +
...2797547abe4f434e3b8e3852871f6f157772e.json | 1 +
...7346f38bf15d4751ab654df0c15527fe2e1e0.json | 1 +
...6b51b1e815d26504fd1d4d3774edca8fba4c9.json | 1 +
...1e46b1349060e39011058902babce8b06fc8c.json | 1 +
...8d5c322f01d32298293a0be0d37e56670901b.json | 1 +
...f94b72a8ccc99c0b17f5c2878a83b0cc48a3d.json | 1 +
...b3a9850c50e27a7ea7bdb91b7f3c251ad3ec2.json | 1 +
...015751e0d48ed58aadb715771e3a226abfda6.json | 1 +
.../frontend/src/components/SharedMap.vue | 98 +-
.../map-panels/PathPlanningPanel.vue | 227 ++-
.../frontend/src/store/index.js | 104 +-
.../frontend/src/views/UnifiedMapView.vue | 592 +++++---
.../web-command-center/test-astar-debug.js | 115 ++
.../web-command-center/test-path-planning.js | 72 +
.../web-command-center/test-threat-zones.js | 95 ++
103 files changed, 2214 insertions(+), 913 deletions(-)
create mode 100644 Src/command_center/web-command-center/PATHPLANNING_IMPLEMENTATION.md
create mode 100644 Src/command_center/web-command-center/backend/create-test-threats.js
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/035fff33dd87aad7c87a2b4c68f13b559e56bd5efa25f0fd00e4988d7cf251ff.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/06bfdd6a16814132467676ccf54083050be5c2b9b0896f2e17539b2de6544d43.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/098872c7f6a51a2462e534e6593b8f21f9a27faf85985ef8b11cfcacf522dcc3.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/09fd954844f0f6af691db5ab4760a1a9e6bba180ac5a5c318f866b914b59ac0b.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11701a59dfa87d80307997efe990ce993b0a8b3b5548399d144bf1230b13c789.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/14304853ba433097c289e2c0dbfe0763c6be48443f34c6c01926044b716401b6.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15b51978d7e519edd624b5d1bb8a7ee218ebbd3e4ac86b2f5ca2f71df00f3272.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1895548f85b0a5ce219099c6cef480ee250666bf6f4f79fe59413ff7c0b18474.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/18f42341494e9718628e5568f5141fae23e46f0001512f662cc5349534106f15.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1f6bf1ef15d9f1b3ded8b72ac5ced68cf69ba5e3b53112ce986c26e75ce025be.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/21d000d88265bd8d278b2ab1c18c033a7fd9b82f82da6047d222e7b2872588ef.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/27d35948c1520ac9402b02e9100683b7129cae88fd6d964b36220816167921b1.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/28bf9a68c7cc290acc7ba2b7ff5cced6349c8ae04454931f7fe26c4af6493658.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3077d38db02d078f16423bccfb63970417195b569345451b50dbded6289f80f6.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/31e600af61fd8b1391563103404e8f72582c4d4703cd00757f5c3197f6d44664.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3381f5439f3226c965dab24899c87ce04e99a36fcc9425844c3407a3cfe0bc98.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/35eda026348c09fbfacb90744b6ab83bf970bec5e2793bfdd39d153318a34403.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/363b4e75c87e2ecd82361533567be66a39b9a16b45a040f3c10ce22199369cb5.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3936c5d0ea46247e585f97acc44fc57e2dc2e87226d05d4dc08022af67ee1665.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/46b69f59215dfb1d2c9b05e9866e5d78e5f668ddb76a936c1e2a2ca2e6aa7abe.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4ab6baf9f54023ab487ef320d187a2b364cef48e19ce522d4c9a11b2a0f6931c.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5797ba56b80a790eb59dba88db739e0625000e92b50bd29ab8f902317837b291.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5b376c6bc07dbac9c0fe44aa638eabbad77bcb4a42c968cf8d402983cc8725c3.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5c862baa3fbcb9cc405d711dcd7c345b85d7d8990efa730b9be4e22d81250779.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5daa5339f7b0b0b3ad0cdff54d0e17bfc2952f6639334c7cb7e75c7168be28fa.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5e981be457d6ce684d206b3298cb4672224e3d7ceddab40651943b9f1c5ddf20.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/63062db9784207495b337264fde56ea656241fb8070b7592b33582c8e682adc3.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/649cb0d6b37633456d7884c68f3b3e43c9b96cd953704cf7a3ed5ccb8a3c821c.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/64eaea4d016edeaf510831bd95d9b8144f03d90e84704bb8954c42ffd16afe90.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/650992216310c50605d389e6a49cf05b5f8bafe69b5488751efd34be6d982e90.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/652f38923d16a9f6392b6d5c82fd86a618875855628e19a0a5529d32c6d34d94.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6721ed1266a58e3d548ea35e231892112fa873ed1b81dbf2ce70b31988878441.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/68fd93e8996e13949db3123eea4d36d0f37f8efd619c57df3c1b433b813d8061.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/69878f19d93c475bf356e9f9716b944aaa749444d8af85982c0a3f47aac66e30.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70d925040fa0171937ef671da0052103b8750f33d88674b942e79c3888deafc3.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7612397d0b7bfee9f7c2caa5176993bb63d3d0ff3de24fc635583773d81c1a15.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/777d4357581ecbb759051851d175e335628a3f8f2f524ad5a11c27a9b0dde0e9.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/78ac9cde6f89d94e74a329a52015b6ae9632d23d92af7f5467d4e4a76d775567.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7b1bf5b9ece377c626c68009e68ee9050bc5b8a9daec010fa5cac5bbf0c5b971.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e3e1c794ddc5a70b96e3fcc7f20c3a9c4b64d1c5e3aa932cb0801ffeefc0686.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e8ac721f91b77498864f0e608c47f1ff66ccb4c66914881fd64313e5dc964f1.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8050359f7c08eac10ac35b1f5e453e6903de9ebe765570ea8c3153747f5d17d8.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/81316706e87ac5d405cb2497756053bb1e629c87205dc281c338800cefbf7f3d.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/816f39de00a6910e227c15149fb28343c019297a0807c4fd6de9d065425126cc.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/82d1bf7d1c6d5d12715a0c81bf8ee2fb1f9b6944c4675f01cf087f207c8d7726.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/84d99403fecc220a9cb447d1e3233be2b9895f993cf97096f7c75d97e1f47d95.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/85710907e38bd787e9cdfc5ba4a3b38bb78057363f7cec51ddfeac72b583cb73.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/87ec613c2d94678fe4d0e9e97cf8ab2f8cee02944da447d973962b84c20dd3a3.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/886c22ac8bee45a05292bbf5ca4fe66ec070e78476add87a0ba6a8aa828b4915.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8aeb64b7b83d2359153c7653fecdb0220ee5cba3b95f25b6c3b7e404d441ef06.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8ed975a53424a11bb11ded44b40d2c9a161028e5d692a3bebea9be081ee27322.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8f153c29937891cca972a146e1f02a528860fc9009e5f3f51777d6c00091a4ca.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/936b23f41a2aec1bd86eb783b1087b8bb5c8fccf57c6725903d2ad2338dc39a8.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/99643af2008059a0bc328cd81a47a7be34f12eb8d0ce2f56db67e6d94027c681.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9ae333c0760a64999f743b559872c21c5de480f079bae24ad309e780f6bc21a8.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9c68fbdaf32af3defd362582ee13b97eb5c4cb0990bb7e3b60fce656187a2e6d.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a03e9dd44811fb3532b98a4f38d3ba407b3e5ef99656c45865cafd33c2c082bf.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a0fd4c6f3c9ae7b903e58672f0982e33fcff4b777cbd58fdf484b784923edd51.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a12b387061ccfe88ce1fda8430d13964ed30aa84ecdad3bb75e83b30754dcfc1.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1f93a6365c9a121b8a122a35474f65ed42ec777426d1b3c6354e7665d2db088.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1fc3eba0ef558efb38d9c6b81b729c57b32710855b904de782a76a58a36e55f.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/abd6a335b6e7d438f3d7632deecbd0367933c3abfb0b173b41c777136fb03ba2.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/afbb472cff136b03ebf03dd67be4b21d4980b79641d8fa37b65eb08698277ccc.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b1edff76f9738cdf690a1cf8584b82966c16f2ef51cb00ad2e2834522768b1b3.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b1f633be66a9486504ffe8a0c0c8a76ca5cdd5a8ce9eb5c3e048cd1b0a05d466.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b292da742298a196d912f863b6d86b54dd0c0e7994d7b5e92238b7daed1fab0f.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b32e7ea3b3274bd551fb88a606851f394c3d3fc393310c0fd72d88997055d230.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b603246abae54ad027065c497eb2459ea0a9c9527a30b6bdfa30e8c3fc7d1c68.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b8f8724ceb7d40a9ffedaab7ed988d62f6eaa46d9716569ad34f5026ffa85291.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bc639b36d468081a6e660bea04c457622fabe1e8ccb7e039c347dbe760f79319.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c30d04ce906bf2677381982e2b7262f4984131939d3993d3783c2a279a2dfec4.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c522b2c1e6a9a348c426cdae2d895435d7de44a531c1a2823bc6674d4781024b.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c7e16b90f147aed69e98a04ae5a7923b18e6dbce06992e41947eb891dc35d690.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1b112731face480b4a7dd07fb28eca0e605b38eb245303d97410ab84d422de9.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3067893a5a7babdd90294d716391587e49c49949403e3a8ab92eb9aad94d690.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d39743a5bbcf66088a52d0c9e002b162ffcbbae7a7417cb69def7681522ed8d2.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3fa237616d0c98fdeacb405753e1add5b2809963808bb742b1947ce36d5a7ab.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d6c6e5161064b323c49f0e14acbe51a80e78911b72f83a6387bdc5575db73d46.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/db290690a209d3f21d60167b1399fc5819f6f65d0742285d28c789e227a9c644.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/deb0d2cdd2fa3b08990fa0a63e7248abed3586fc41e9d783feadeb73db53d8f9.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/dfaeded8f908a0faef7329220972797547abe4f434e3b8e3852871f6f157772e.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e01c56e7fe0f19dc718be502c067346f38bf15d4751ab654df0c15527fe2e1e0.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e3d7ed0ee95f8fc0441c0236c2e6b51b1e815d26504fd1d4d3774edca8fba4c9.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ecc81229ca2f056e958308044ba1e46b1349060e39011058902babce8b06fc8c.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f135b0aa4e8ac423510e06886048d5c322f01d32298293a0be0d37e56670901b.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f298c7707899372fe1050636e35f94b72a8ccc99c0b17f5c2878a83b0cc48a3d.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f3ad4e7365a0d8bf1c105878117b3a9850c50e27a7ea7bdb91b7f3c251ad3ec2.json
create mode 100644 Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ffd20f0e30f60fd876c29b1962c015751e0d48ed58aadb715771e3a226abfda6.json
create mode 100644 Src/command_center/web-command-center/test-astar-debug.js
create mode 100644 Src/command_center/web-command-center/test-path-planning.js
create mode 100644 Src/command_center/web-command-center/test-threat-zones.js
diff --git a/Src/command_center/web-command-center/PATHPLANNING_IMPLEMENTATION.md b/Src/command_center/web-command-center/PATHPLANNING_IMPLEMENTATION.md
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/Src/command_center/web-command-center/PATHPLANNING_IMPLEMENTATION.md
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/backend/create-test-threats.js b/Src/command_center/web-command-center/backend/create-test-threats.js
new file mode 100644
index 00000000..508a285e
--- /dev/null
+++ b/Src/command_center/web-command-center/backend/create-test-threats.js
@@ -0,0 +1,83 @@
+const db = require('./src/config/database');
+
+const testThreatZones = [
+ {
+ type: 'aircraft',
+ level: 'high',
+ description: '长沙高危空域 - 测试区域',
+ geometry_type: 'circle',
+ geometry_data: {
+ center: { lng: 112.940, lat: 28.180 },
+ radius: 1500
+ },
+ status: 'active'
+ },
+ {
+ type: 'radar',
+ level: 'medium',
+ description: '长沙雷达监控区 - 测试区域',
+ geometry_type: 'circle',
+ geometry_data: {
+ center: { lng: 112.970, lat: 28.200 },
+ radius: 1000
+ },
+ status: 'active'
+ },
+ {
+ type: 'missile',
+ level: 'critical',
+ description: '长沙禁飞区 - 测试区域',
+ geometry_type: 'circle',
+ geometry_data: {
+ center: { lng: 112.920, lat: 28.220 },
+ radius: 800
+ },
+ status: 'active'
+ }
+];
+
+(async () => {
+ try {
+ console.log('开始插入测试威胁区数据...');
+
+ // 清除现有威胁区数据
+ await db.execute('DELETE FROM threat_zones WHERE description LIKE "%测试区域%"');
+ console.log('已清除现有测试数据');
+
+ // 插入新的测试威胁区
+ for (const zone of testThreatZones) {
+ const sql = `
+ INSERT INTO threat_zones
+ (type, level, description, geometry_type, geometry_data, status, created_at, updated_at)
+ VALUES (?, ?, ?, ?, ?, ?, NOW(), NOW())
+ `;
+
+ const params = [
+ zone.type,
+ zone.level,
+ zone.description,
+ zone.geometry_type,
+ JSON.stringify(zone.geometry_data),
+ zone.status
+ ];
+
+ const [result] = await db.execute(sql, params);
+ console.log(`插入威胁区: ${zone.description}, ID: ${result.insertId}`);
+ }
+
+ // 验证插入的数据
+ const [rows] = await db.execute('SELECT * FROM threat_zones WHERE description LIKE "%测试区域%"');
+ console.log('\n插入的威胁区数据:');
+ rows.forEach(row => {
+ console.log(`- ID: ${row.id}, 类型: ${row.type}, 等级: ${row.level}, 几何数据: ${row.geometry_data}`);
+ });
+
+ console.log('\n测试威胁区数据插入完成!');
+ await db.end();
+ process.exit(0);
+
+ } catch (error) {
+ console.error('插入测试数据失败:', error);
+ process.exit(1);
+ }
+})();
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/backend/src/routes/drones.js b/Src/command_center/web-command-center/backend/src/routes/drones.js
index 2d6b70ca..df027c23 100644
--- a/Src/command_center/web-command-center/backend/src/routes/drones.js
+++ b/Src/command_center/web-command-center/backend/src/routes/drones.js
@@ -9,8 +9,8 @@ let dronesData = [
name: '侦察无人机-001',
type: '侦察型',
status: 'active',
- latitude: 39.9042,
- longitude: 116.4074,
+ latitude: 28.1941,
+ longitude: 112.9823,
battery: 85,
created_at: new Date().toISOString(),
updated_at: new Date().toISOString()
@@ -20,8 +20,8 @@ let dronesData = [
name: '运输无人机-002',
type: '运输型',
status: 'idle',
- latitude: 39.9122,
- longitude: 116.4134,
+ latitude: 28.2022,
+ longitude: 112.9903,
battery: 92,
created_at: new Date().toISOString(),
updated_at: new Date().toISOString()
@@ -31,8 +31,8 @@ let dronesData = [
name: '巡逻无人机-003',
type: '巡逻型',
status: 'active',
- latitude: 39.8965,
- longitude: 116.3972,
+ latitude: 28.1865,
+ longitude: 112.9722,
battery: 67,
created_at: new Date().toISOString(),
updated_at: new Date().toISOString()
@@ -124,8 +124,8 @@ router.post('/', authenticateToken, async (req, res) => {
name: name || `无人机-${nextId - 1}`,
type: type || '通用型',
status: status || 'idle',
- latitude: latitude ? parseFloat(latitude) : 39.9042,
- longitude: longitude ? parseFloat(longitude) : 116.4074,
+ latitude: latitude ? parseFloat(latitude) : 28.1941,
+ longitude: longitude ? parseFloat(longitude) : 112.9823,
battery: 100,
created_at: new Date().toISOString(),
updated_at: new Date().toISOString()
diff --git a/Src/command_center/web-command-center/backend/src/routes/operationLogs.js b/Src/command_center/web-command-center/backend/src/routes/operationLogs.js
index e86cc7fd..5344c42c 100644
--- a/Src/command_center/web-command-center/backend/src/routes/operationLogs.js
+++ b/Src/command_center/web-command-center/backend/src/routes/operationLogs.js
@@ -106,12 +106,13 @@ let operationLogs = [
id: 3,
name: '自动规划路径-003'
},
- description: '创建新的路径规划',
+ description: '执行路径规划算法',
details: {
algorithm: 'astar',
waypoints: 5,
distance: 2500,
- estimatedTime: 15
+ estimatedTime: 15,
+ location: { lng: 112.982279, lat: 28.19409 }
},
success: true,
duration: 2800,
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 44f999cb..244056cc 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
@@ -1,465 +1,1070 @@
const express = require('express');
const router = express.Router();
-const { authenticateToken } = require('../middleware/auth');
-
-// 存储路径规划数据(实际项目中应使用数据库)
-let pathPlans = [
- {
- id: 1,
- droneId: 1,
- waypoints: [
- { lng: 116.397428, lat: 39.90923, altitude: 100 },
- { lng: 116.405428, lat: 39.91123, altitude: 120 },
- { lng: 116.415428, lat: 39.91323, altitude: 100 }
- ],
- algorithm: 'astar',
- status: 'planned',
- distance: 2500,
- estimatedTime: 15,
- createdAt: new Date('2024-01-01T10:00:00'),
- executedAt: null
- },
- {
- id: 2,
- droneId: 2,
- waypoints: [
- { lng: 116.387428, lat: 39.89923, altitude: 80 },
- { lng: 116.395428, lat: 39.90723, altitude: 90 },
- { lng: 116.405428, lat: 39.91523, altitude: 85 }
- ],
- algorithm: 'rrt',
- status: 'executing',
- distance: 1800,
- estimatedTime: 12,
- createdAt: new Date('2024-01-01T11:00:00'),
- executedAt: new Date('2024-01-01T11:30:00')
+const db = require('../config/database');
+
+// ===================== 核心数据结构 =====================
+
+/**
+ * A*算法节点类 - 完全参考Python astar.py中的Node类
+ */
+class PathNode {
+ constructor(lng, lat, altitude = 100) {
+ this.lng = lng;
+ this.lat = lat;
+ this.altitude = altitude;
+ this.g_cost = 0; // 从起点到当前节点的实际代价
+ this.h_cost = 0; // 从当前节点到终点的估计代价
+ this.parent = null;
}
-]
-
-// 路径规划算法配置
-const algorithms = {
- astar: {
- name: 'A*算法',
- description: '基于启发式搜索的最优路径算法',
- timeComplexity: 'O(b^d)',
- advantages: ['路径最优', '搜索效率高'],
- disadvantages: ['需要启发函数', '内存消耗较大']
- },
- rrt: {
- name: 'RRT算法',
- description: '快速随机树算法,适用于复杂环境',
- timeComplexity: 'O(n log n)',
- advantages: ['适用于高维空间', '障碍物处理好'],
- disadvantages: ['路径不一定最优', '随机性强']
- },
- straight: {
- name: '直线规划',
- description: '简单的直线路径规划',
- timeComplexity: 'O(1)',
- advantages: ['计算简单', '速度快'],
- disadvantages: ['不考虑障碍物', '路径可能不可行']
- },
- dijkstra: {
- name: 'Dijkstra算法',
- description: '图论中的最短路径算法',
- timeComplexity: 'O(V^2)',
- advantages: ['保证最优解', '算法稳定'],
- disadvantages: ['计算复杂度高', '不适用于大规模问题']
+
+ get f_cost() {
+ return this.g_cost + this.h_cost;
+ }
+
+ equals(other) {
+ const GRID_SIZE = 0.0005; // 更精细的网格,约50米
+ return Math.abs(this.lng - other.lng) < GRID_SIZE * 0.5 &&
+ Math.abs(this.lat - other.lat) < GRID_SIZE * 0.5;
}
}
-// 获取所有路径规划
-router.get('/', (req, res) => {
+// ===================== 工具函数 =====================
+
+/**
+ * 计算两点间距离(米)- 精确的Haversine公式
+ */
+function getDistance(lat1, lng1, lat2, lng2) {
+ const R = 6371000; // 地球半径(米)
+ const dLat = (lat2 - lat1) * Math.PI / 180;
+ const dLng = (lng2 - lng1) * Math.PI / 180;
+ 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);
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+ return R * c;
+}
+
+/**
+ * 启发式函数 - 改用实际地理距离,更准确
+ */
+function heuristic(p1, p2) {
+ return getDistance(p1.lat, p1.lng, p2.lat, p2.lng) / 111000; // 转换为度数单位
+}
+
+/**
+ * 检查点是否在威胁区域中 - 完全参考Python实现
+ */
+function isPointInThreatZone(lng, lat, zone) {
+ const geometry = zone.geometry_data || zone.geometry;
+ if (!geometry) return false;
+
+ const geometryType = zone.geometry_type || zone.type;
+
try {
- const { droneId, status, algorithm } = req.query
-
- let filteredPlans = [...pathPlans]
-
- // 按无人机ID筛选
- if (droneId) {
- filteredPlans = filteredPlans.filter(plan => plan.droneId == droneId)
+ switch (geometryType) {
+ case 'circle':
+ const center = geometry.center;
+ const radius = geometry.radius;
+ if (center && radius) {
+ // 处理两种格式:数组 [lng, lat] 或对象 {lng, lat}
+ let centerLng, centerLat;
+ if (Array.isArray(center)) {
+ centerLng = center[0];
+ centerLat = center[1];
+ } else {
+ centerLng = center.lng || center.x;
+ centerLat = center.lat || center.y;
+ }
+
+ if (centerLng !== undefined && centerLat !== undefined) {
+ const distance = getDistance(lat, lng, centerLat, centerLng);
+ const isInside = distance <= radius;
+
+ // 调试输出
+ if (isInside) {
+ console.log(`点(${lng}, ${lat})在圆形威胁区${zone.id}内,距离${Math.round(distance)}m,半径${radius}m`);
+ }
+
+ return isInside;
+ }
+ }
+ break;
+
+ case 'rectangle':
+ 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;
+ } else if (geometry.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);
+ }
+ break;
+
+ case 'polygon':
+ // 处理多种格式的多边形数据
+ let points = null;
+
+ if (geometry.path && Array.isArray(geometry.path)) {
+ // 格式:geometry_data: { path: [[lng, lat], ...] }
+ points = geometry.path;
+ } else if (geometry.coordinates && Array.isArray(geometry.coordinates)) {
+ // 格式:geometry_data: { coordinates: [[lng, lat], ...] }
+ points = geometry.coordinates;
+ } else if (geometry.points && Array.isArray(geometry.points)) {
+ // 格式:geometry_data: { points: [[lng, lat], ...] }
+ points = geometry.points;
+ } else if (Array.isArray(geometry)) {
+ // 格式:geometry_data: [[lng, lat], ...]
+ points = geometry;
+ }
+
+ if (points && points.length >= 3) {
+ const isInside = pointInPolygon(lng, lat, points);
+
+ // 调试输出
+ if (isInside) {
+ console.log(`点(${lng}, ${lat})在多边形威胁区${zone.id}内,顶点数${points.length}`);
+ }
+
+ return isInside;
+ }
+ break;
}
+ } catch (error) {
+ console.error(`威胁区域检测出错 (Zone ${zone.id}):`, error);
+ }
+
+ return false;
+}
+
+/**
+ * 检查点是否在任意威胁区域中 - 增强版本
+ */
+function isPointInAnyThreatZone(lng, lat, threatZones, enableDebug = false) {
+ for (const zone of threatZones) {
+ if (zone.status === 'inactive') continue; // 跳过非激活威胁区
- // 按状态筛选
- if (status) {
- filteredPlans = filteredPlans.filter(plan => plan.status === status)
+ if (enableDebug) {
+ console.log(`检查点(${lng}, ${lat})是否在威胁区${zone.id}(${zone.geometry_type})内...`);
}
- // 按算法筛选
- if (algorithm) {
- filteredPlans = filteredPlans.filter(plan => plan.algorithm === algorithm)
+ if (isPointInThreatZone(lng, lat, zone)) {
+ if (enableDebug) {
+ console.log(`✓ 点在威胁区${zone.id}内!等级:${zone.level}`);
+ }
+ return {
+ inThreat: true,
+ level: zone.level || 'medium',
+ zoneId: zone.id || 'unknown',
+ type: zone.type || 'unknown',
+ zone: zone
+ };
}
-
- res.json({
- success: true,
- data: filteredPlans,
- total: filteredPlans.length,
- message: '获取路径规划列表成功'
- })
- } catch (error) {
- res.status(500).json({
- success: false,
- message: '获取路径规划列表失败',
- error: error.message
- })
}
-})
+ return { inThreat: false };
+}
-// 获取单个路径规划详情
-router.get('/:id', (req, res) => {
- try {
- const id = parseInt(req.params.id)
- const plan = pathPlans.find(p => p.id === id)
+/**
+ * 点在多边形内检测 - 射线法,完全参考Python实现
+ */
+function pointInPolygon(lng, lat, polygon) {
+ if (polygon.length < 3) return false;
+
+ let inside = false;
+ let j = polygon.length - 1;
+
+ 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];
- if (!plan) {
- return res.status(404).json({
- success: false,
- message: '路径规划不存在'
- })
+ // 检查点是否在多边形边上
+ if ((yi === lat && xi === lng) || (yj === lat && xj === lng)) {
+ return true;
}
- res.json({
- success: true,
- data: plan,
- message: '获取路径规划详情成功'
- })
- } catch (error) {
- res.status(500).json({
- success: false,
- message: '获取路径规划详情失败',
- error: error.message
- })
+ // 射线法判断点是否在多边形内部
+ if (((yi > lat) !== (yj > lat)) &&
+ (lng < (xj - xi) * (lat - yi) / (yj - yi) + xi)) {
+ inside = !inside;
+ }
+ j = i;
}
-})
+
+ return inside;
+}
-// 创建新的路径规划
-router.post('/', (req, res) => {
- try {
- const { droneId, waypoints, algorithm, flightAltitude, flightSpeed } = req.body
-
- // 验证必填字段
- if (!droneId || !waypoints || !Array.isArray(waypoints) || waypoints.length < 2) {
- return res.status(400).json({
- success: false,
- message: '请提供有效的无人机ID和至少2个路径点'
- })
+// ===================== 改进的A*算法实现 =====================
+
+/**
+ * A*路径规划算法 - 完全参考Python astar.py实现,修复关键问题
+ */
+async function aStarPlanningImproved(start, end, threatZones, options = {}) {
+ console.log('=== 开始改进的A*路径规划算法 ===');
+ console.log('起点:', start);
+ console.log('终点:', end);
+ console.log('威胁区数量:', threatZones.length);
+
+ // 调试威胁区域信息
+ threatZones.forEach((zone, index) => {
+ const geometry = zone.geometry_data || zone.geometry;
+ console.log(`威胁区${index + 1}: ID=${zone.id}, 类型=${zone.geometry_type}, 等级=${zone.level}`);
+ if (zone.geometry_type === 'circle') {
+ const center = geometry.center;
+ console.log(` 圆心: ${Array.isArray(center) ? center : [center?.lng || center?.x, center?.lat || center?.y]}, 半径: ${geometry.radius}m`);
+ } else if (zone.geometry_type === 'polygon') {
+ const points = geometry.path || geometry.coordinates || geometry.points || geometry;
+ console.log(` 多边形顶点数: ${points ? points.length : 0}`);
+ if (points && points.length > 0) {
+ console.log(` 首个顶点: [${points[0][0]}, ${points[0][1]}]`);
+ }
}
+ });
+
+ const {
+ gridSize = 0.001, // 调整网格大小,约100米,平衡精度和性能
+ maxIterations = 8000, // 增加最大迭代次数
+ allowThreatZones = false // 是否允许穿过威胁区
+ } = options;
+
+ // 8方向移动 - 完全参考Python实现
+ const directions = [
+ [1, 0], [0, 1], [-1, 0], [0, -1], // 直线移动
+ [1, 1], [-1, 1], [-1, -1], [1, -1] // 对角线移动
+ ];
+
+ const openList = [];
+ const closedSet = new Set();
+ const nodeMap = new Map(); // 用于存储访问过的节点,避免重复
+ const threatZonesAvoided = new Set();
+ const threatZonesPassed = new Set();
+
+ // 创建起始节点
+ const startNode = new PathNode(start.lng, start.lat, start.altitude || 100);
+ startNode.g_cost = 0;
+ startNode.h_cost = heuristic(startNode, end);
+ openList.push(startNode);
+
+ // 节点键值生成 - 更精确的格子坐标
+ const getNodeKey = (lng, lat) => {
+ const gridX = Math.round(lng / gridSize);
+ const gridY = Math.round(lat / gridSize);
+ return `${gridX}_${gridY}`;
+ };
+
+ let iterations = 0;
+ let bestNode = startNode;
+ let bestDistance = heuristic(startNode, end);
+
+ // 主循环 - 参考Python实现
+ while (openList.length > 0 && iterations < maxIterations) {
+ iterations++;
+
+ // 选择f值最小的节点 - 实现优先队列
+ openList.sort((a, b) => {
+ if (Math.abs(a.f_cost - b.f_cost) < 1e-10) {
+ return a.h_cost - b.h_cost; // f值相同时选择h值小的
+ }
+ return a.f_cost - b.f_cost;
+ });
- // 验证算法
- if (algorithm && !algorithms[algorithm]) {
- return res.status(400).json({
- success: false,
- message: '不支持的路径规划算法'
- })
- }
+ const current = openList.shift();
+ const gridPos = getNodeKey(current.lng, current.lat);
- // 计算路径距离和预估时间
- const distance = calculatePathDistance(waypoints)
- const estimatedTime = Math.ceil(distance / (flightSpeed || 10) / 1000 * 60) // 分钟
-
- const newPlan = {
- id: Math.max(...pathPlans.map(p => p.id), 0) + 1,
- droneId: parseInt(droneId),
- waypoints: waypoints.map(wp => ({
- lng: parseFloat(wp.lng),
- lat: parseFloat(wp.lat),
- altitude: parseInt(wp.altitude || flightAltitude || 100)
- })),
- algorithm: algorithm || 'straight',
- status: 'planned',
- distance: Math.round(distance),
- estimatedTime,
- flightSpeed: flightSpeed || 10,
- createdAt: new Date(),
- executedAt: null
+ if (closedSet.has(gridPos)) continue;
+ closedSet.add(gridPos);
+
+ // 更新最佳节点
+ const currentDistance = heuristic(current, end);
+ if (currentDistance < bestDistance) {
+ bestDistance = currentDistance;
+ bestNode = current;
}
+
+ // 检查是否到达目标 - 更宽松的到达条件
+ const actualDistance = getDistance(current.lat, current.lng, end.lat, end.lng);
+ if (actualDistance < 300) { // 300米内认为到达
+ console.log(`A*算法成功,迭代${iterations}次,距离目标${Math.round(actualDistance)}米`);
+ const path = reconstructPath(current);
+
+ // 分析路径通过的威胁区
+ analyzeThreatZonesInPath(path, threatZones, threatZonesAvoided, threatZonesPassed);
+
+ return {
+ success: true,
+ path: path,
+ distance: calculatePathLength(path),
+ iterations: iterations,
+ threatZonesAvoided: Array.from(threatZonesAvoided),
+ threatZonesPassed: Array.from(threatZonesPassed)
+ };
+ }
+
+ // 扩展邻居节点 - 完全参考Python实现
+ for (const [dx, dy] of directions) {
+ const nextLng = current.lng + dx * gridSize;
+ const nextLat = current.lat + dy * gridSize;
+
+ // 更宽松的边界检查
+ if (!isWithinBoundsRelaxed(nextLng, nextLat, start, end)) continue;
+
+ 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}内` : '安全'}`);
+ }
+
+ if (threatInfo.inThreat && !allowThreatZones) {
+ threatZonesAvoided.add(threatInfo.zoneId);
+ if (iterations <= 50 || iterations % 500 === 0) { // 增加调试频率
+ console.log(`❌ 避开威胁区${threatInfo.zoneId},点(${nextLng.toFixed(6)}, ${nextLat.toFixed(6)})`);
+ }
+ continue;
+ }
+
+ if (threatInfo.inThreat && allowThreatZones) {
+ console.log(`⚠️ 允许进入威胁区${threatInfo.zoneId},点(${nextLng.toFixed(6)}, ${nextLat.toFixed(6)})`);
+ }
+
+ // 计算移动代价 - 参考Python实现
+ const isDiagonal = dx !== 0 && dy !== 0;
+ const moveCost = isDiagonal ? gridSize * Math.sqrt(2) : gridSize; // 使用数学精确值
+
+ // 威胁区域惩罚 - 参考Python实现
+ let threatPenalty = 0;
+ if (threatInfo.inThreat) {
+ threatPenalty = getThreatPenaltyImproved(threatInfo.level);
+ threatZonesPassed.add(threatInfo.zoneId);
+ }
+
+ const newGCost = current.g_cost + moveCost + threatPenalty;
+
+ // 检查是否已经有更好的路径到达这个节点
+ const existingNodeKey = nextGridPos;
+ if (nodeMap.has(existingNodeKey)) {
+ const existingNode = nodeMap.get(existingNodeKey);
+ if (existingNode.g_cost <= newGCost) {
+ continue; // 已有更好的路径
+ }
+ }
+
+ // 创建新节点
+ const nextNode = new PathNode(nextLng, nextLat, current.altitude);
+ nextNode.g_cost = newGCost;
+ nextNode.h_cost = heuristic(nextNode, end);
+ nextNode.parent = current;
+
+ nodeMap.set(existingNodeKey, nextNode);
+ openList.push(nextNode);
+ }
+ }
+
+ // 如果没找到精确路径,返回最接近的路径
+ const finalDistance = getDistance(bestNode.lat, bestNode.lng, end.lat, end.lng);
+ if (finalDistance < 2000) { // 2km内认为可接受
+ console.log(`A*返回近似路径,距离目标${Math.round(finalDistance)}米`);
+ const path = reconstructPath(bestNode);
+ analyzeThreatZonesInPath(path, threatZones, threatZonesAvoided, threatZonesPassed);
- pathPlans.push(newPlan)
-
- res.status(201).json({
+ return {
success: true,
- data: newPlan,
- message: '路径规划创建成功'
- })
- } catch (error) {
- res.status(500).json({
- success: false,
- message: '创建路径规划失败',
- error: error.message
- })
+ path: path,
+ distance: calculatePathLength(path),
+ iterations: iterations,
+ threatZonesAvoided: Array.from(threatZonesAvoided),
+ threatZonesPassed: Array.from(threatZonesPassed),
+ warning: `路径终点距目标${Math.round(finalDistance)}米`
+ };
}
-})
-// 更新路径规划
-router.put('/:id', (req, res) => {
- try {
- const id = parseInt(req.params.id)
- const planIndex = pathPlans.findIndex(p => p.id === id)
+ // 完全失败,尝试放宽约束
+ if (!allowThreatZones) {
+ console.log('标准A*失败,尝试允许穿过威胁区');
+ return await aStarPlanningImproved(start, end, threatZones, {
+ ...options,
+ allowThreatZones: true,
+ gridSize: Math.min(gridSize * 1.5, 0.002), // 适当放大网格
+ maxIterations: maxIterations * 1.5
+ });
+ }
+
+ console.log(`A*算法完全失败,迭代${iterations}次,最佳距离${Math.round(finalDistance)}米`);
+
+ // 最后尝试:简单直线路径
+ console.log('尝试简单直线路径作为备用方案');
+ const directPath = generateDirectPath(start, end, 10); // 生成10个中间点
+ return {
+ success: true,
+ path: directPath,
+ distance: calculatePathLength(directPath),
+ iterations: iterations,
+ threatZonesAvoided: [],
+ threatZonesPassed: [],
+ warning: '使用直线路径,请注意避开威胁区域'
+ };
+}
+
+/**
+ * 更宽松的边界检查 - 动态调整搜索范围
+ */
+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%的距离
+
+ 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;
+}
+
+/**
+ * 改进的边界检查 - 更合理的搜索范围
+ */
+function isWithinBoundsImproved(lng, lat, start, end) {
+ return isWithinBoundsRelaxed(lng, lat, start, end);
+}
+
+/**
+ * 改进的威胁等级惩罚 - 参考Python实现
+ */
+function getThreatPenaltyImproved(level) {
+ const penalties = {
+ 'low': 0.01, // 轻微惩罚
+ 'medium': 0.05, // 中等惩罚
+ 'high': 0.2, // 高惩罚
+ 'critical': 1.0 // 极高惩罚
+ };
+ return penalties[level] || 0.05;
+}
+
+/**
+ * 计算路径总长度
+ */
+function calculatePathLength(path) {
+ if (path.length < 2) return 0;
+
+ let totalDistance = 0;
+ for (let i = 0; i < path.length - 1; i++) {
+ totalDistance += getDistance(
+ path[i].lat, path[i].lng,
+ path[i + 1].lat, path[i + 1].lng
+ );
+ }
+ return totalDistance;
+}
+
+/**
+ * 生成直线路径作为备用方案
+ */
+function generateDirectPath(start, end, segments = 10) {
+ const path = [];
+
+ for (let i = 0; i <= segments; i++) {
+ const t = i / segments;
+ const lng = start.lng + t * (end.lng - start.lng);
+ const lat = start.lat + t * (end.lat - start.lat);
+ const altitude = start.altitude + t * ((end.altitude || start.altitude) - start.altitude);
- if (planIndex === -1) {
- return res.status(404).json({
- success: false,
- message: '路径规划不存在'
- })
+ path.push({
+ lng: lng,
+ lat: lat,
+ altitude: altitude
+ });
+ }
+
+ return path;
+}
+
+/**
+ * 重建路径 - 参考Python实现
+ */
+function reconstructPath(node) {
+ const path = [];
+ let current = node;
+
+ while (current) {
+ path.unshift({
+ lng: current.lng,
+ lat: current.lat,
+ altitude: current.altitude
+ });
+ current = current.parent;
+ }
+
+ return path;
+}
+
+/**
+ * 边界检查(保留兼容性)
+ */
+function isWithinBounds(lng, lat, start, end) {
+ return isWithinBoundsImproved(lng, lat, start, end);
+}
+
+/**
+ * 威胁等级惩罚(保留兼容性)
+ */
+function getThreatPenalty(level) {
+ return getThreatPenaltyImproved(level);
+}
+
+/**
+ * 分析路径中的威胁区
+ */
+function analyzeThreatZonesInPath(path, threatZones, avoided, passed) {
+ for (const point of path) {
+ const threatInfo = isPointInAnyThreatZone(point.lng, point.lat, threatZones);
+ if (threatInfo.inThreat) {
+ passed.add(threatInfo.zoneId);
}
+ }
+}
+
+// ===================== 改进的路径优化 =====================
+
+/**
+ * 路径平滑 - 完全参考Python smooth_path实现
+ */
+function smoothPathAdvanced(path, threatZones, options = {}) {
+ if (path.length <= 2) return path;
+
+ console.log('开始路径平滑,原始点数:', path.length);
+
+ const {
+ weightData = 0.5,
+ weightSmooth = 0.3,
+ tolerance = 0.000001,
+ maxIterations = 100
+ } = options;
+
+ // 转换为数组格式 - 完全参考Python实现
+ const pathArray = path.map(p => [p.lng, p.lat, p.altitude]);
+ const smoothPath = pathArray.map(p => [...p]); // 深拷贝
+
+ let change = tolerance;
+ let iterations = 0;
+
+ // 迭代平滑 - 完全参考Python算法
+ while (change >= tolerance && iterations < maxIterations) {
+ change = 0.0;
+ iterations++;
- const { waypoints, algorithm, status } = req.body
- const plan = pathPlans[planIndex]
-
- // 更新路径点
- if (waypoints && Array.isArray(waypoints)) {
- plan.waypoints = waypoints.map(wp => ({
- lng: parseFloat(wp.lng),
- lat: parseFloat(wp.lat),
- altitude: parseInt(wp.altitude || 100)
- }))
- plan.distance = Math.round(calculatePathDistance(waypoints))
+ // 对中间点进行平滑处理(保持起点和终点不变)
+ for (let i = 1; i < pathArray.length - 1; i++) {
+ for (let j = 0; j < 2; j++) { // lng, lat
+ const aux = smoothPath[i][j];
+
+ // Python的平滑公式
+ smoothPath[i][j] += weightData * (pathArray[i][j] - smoothPath[i][j]);
+ smoothPath[i][j] += weightSmooth * (smoothPath[i-1][j] + smoothPath[i+1][j] - 2.0 * smoothPath[i][j]);
+
+ change += Math.abs(aux - smoothPath[i][j]);
+ }
}
-
- // 更新算法
- if (algorithm && algorithms[algorithm]) {
- plan.algorithm = algorithm
+ }
+
+ console.log(`路径平滑完成,迭代${iterations}次,变化量${change.toFixed(8)}`);
+
+ // 转换回对象格式
+ const result = smoothPath.map(p => ({
+ lng: p[0],
+ lat: p[1],
+ altitude: p[2]
+ }));
+
+ // 验证平滑后的路径是否穿过威胁区
+ const sampleRate = Math.max(1, Math.floor(result.length / 10)); // 提高采样率
+ for (let i = 0; i < result.length; i += sampleRate) {
+ const point = result[i];
+ const threatInfo = isPointInAnyThreatZone(point.lng, point.lat, threatZones);
+ if (threatInfo.inThreat && threatInfo.level !== 'low') {
+ console.log('平滑后路径穿过中高威胁区,返回原路径');
+ return path;
}
+ }
+
+ console.log('路径平滑成功,平滑后点数:', result.length);
+ return result;
+}
+
+/**
+ * 优化后的路径清理 - 移除冗余点
+ */
+function removeRedundantPoints(path, threshold = 0.0001) {
+ if (path.length <= 2) return path;
+
+ const optimized = [path[0]]; // 保留起点
+
+ for (let i = 1; i < path.length - 1; i++) {
+ const prev = optimized[optimized.length - 1];
+ const curr = path[i];
+ const next = path[i + 1];
- // 更新状态
- if (status && ['planned', 'executing', 'completed', 'failed'].includes(status)) {
- plan.status = status
- if (status === 'executing' && !plan.executedAt) {
- plan.executedAt = new Date()
- }
- }
+ // 检查三点是否接近共线
+ const v1 = [curr.lng - prev.lng, curr.lat - prev.lat];
+ const v2 = [next.lng - curr.lng, next.lat - curr.lat];
- plan.updatedAt = new Date()
+ const len1 = Math.sqrt(v1[0] * v1[0] + v1[1] * v1[1]);
+ const len2 = Math.sqrt(v2[0] * v2[0] + v2[1] * v2[1]);
- res.json({
- success: true,
- data: plan,
- message: '路径规划更新成功'
- })
- } catch (error) {
- res.status(500).json({
- success: false,
- message: '更新路径规划失败',
- error: error.message
- })
+ if (len1 > threshold && len2 > threshold) {
+ const dot = (v1[0] * v2[0] + v1[1] * v2[1]) / (len1 * len2);
+
+ // 如果角度变化较大,保留点
+ if (Math.abs(dot) < 0.999) { // 约2.5度
+ optimized.push(curr);
+ }
+ } else if (len1 > threshold || len2 > threshold) {
+ optimized.push(curr);
+ }
}
-})
+
+ optimized.push(path[path.length - 1]); // 保留终点
+
+ console.log(`路径优化:${path.length} -> ${optimized.length} 点`);
+ return optimized;
+}
-// 执行路径规划
-router.post('/:id/execute', (req, res) => {
- try {
- const id = parseInt(req.params.id)
- const plan = pathPlans.find(p => p.id === id)
-
- if (!plan) {
- return res.status(404).json({
- success: false,
- message: '路径规划不存在'
- })
+// ===================== 多目标路径规划 =====================
+
+/**
+ * 多目标路径规划 - 使用改进的A*算法
+ */
+async function executeMultiTargetPlanning(startPoint, targetPoints, threatZones, options = {}) {
+ console.log(`=== 开始多目标路径规划: ${targetPoints.length}个目标点 ===`);
+
+ if (targetPoints.length === 1) {
+ // 单目标,直接使用改进的A*
+ const result = await aStarPlanningImproved(startPoint, targetPoints[0], threatZones, options);
+ if (result.success) {
+ result.path = smoothPathAdvanced(result.path, threatZones);
+ result.path = removeRedundantPoints(result.path);
}
+ return result;
+ }
+
+ // 目标点排序 - 优先访问安全区域的点
+ const sortedTargets = sortTargetsByPriorityAndDistance(startPoint, targetPoints, threatZones);
+
+ const completePath = [];
+ const allThreatZonesAvoided = new Set();
+ const allThreatZonesPassed = new Set();
+ let totalDistance = 0;
+ let currentStart = startPoint;
+
+ // 逐段规划路径
+ for (let i = 0; i < sortedTargets.length; i++) {
+ const target = sortedTargets[i];
+ console.log(`规划第${i + 1}段路径到目标点${target.originalIndex + 1}`);
- if (plan.status !== 'planned') {
- return res.status(400).json({
+ const segmentResult = await aStarPlanningImproved(currentStart, target, threatZones, options);
+
+ if (!segmentResult.success) {
+ return {
success: false,
- message: `路径规划状态为${plan.status},无法执行`
- })
+ error: `无法规划到目标点${target.originalIndex + 1}的路径`
+ };
}
- // 模拟执行路径规划
- plan.status = 'executing'
- plan.executedAt = new Date()
+ // 平滑段路径
+ let segmentPath = smoothPathAdvanced(segmentResult.path, threatZones);
+ segmentPath = removeRedundantPoints(segmentPath);
- res.json({
- success: true,
- data: plan,
- message: '路径规划开始执行'
- })
+ // 合并路径(避免重复点)
+ const pathToAdd = i === 0 ? segmentPath : segmentPath.slice(1);
+ completePath.push(...pathToAdd);
- // 模拟执行完成(实际项目中这里会调用无人机控制接口)
- setTimeout(() => {
- plan.status = 'completed'
- plan.completedAt = new Date()
- }, plan.estimatedTime * 1000) // 模拟执行时间
+ // 累计数据
+ totalDistance += calculatePathLength(segmentPath);
+ segmentResult.threatZonesAvoided?.forEach(id => allThreatZonesAvoided.add(id));
+ segmentResult.threatZonesPassed?.forEach(id => allThreatZonesPassed.add(id));
- } catch (error) {
- res.status(500).json({
- success: false,
- message: '执行路径规划失败',
- error: error.message
- })
+ currentStart = target;
}
-})
+
+ console.log(`=== 多目标路径规划完成,总距离: ${Math.round(totalDistance)}米 ===`);
+
+ return {
+ success: true,
+ path: completePath,
+ distance: totalDistance,
+ threatZonesAvoided: Array.from(allThreatZonesAvoided),
+ threatZonesPassed: Array.from(allThreatZonesPassed),
+ targetOrder: sortedTargets.map((t, i) => ({
+ originalIndex: t.originalIndex,
+ visitOrder: i + 1,
+ coords: { lng: t.lng, lat: t.lat },
+ inThreatZone: t.inThreat,
+ threatLevel: t.threatLevel
+ }))
+ };
+}
-// 停止路径规划执行
-router.post('/:id/stop', (req, res) => {
- try {
- const id = parseInt(req.params.id)
- const plan = pathPlans.find(p => p.id === id)
+/**
+ * 改进的目标点排序算法 - 威胁等级优先 + 距离优化
+ */
+function sortTargetsByPriorityAndDistance(startPoint, targetPoints, threatZones) {
+ // 分析每个目标点的威胁情况
+ const analyzed = targetPoints.map((target, index) => {
+ const threatInfo = isPointInAnyThreatZone(target.lng, target.lat, threatZones);
+ const distance = getDistance(startPoint.lat, startPoint.lng, target.lat, target.lng);
- if (!plan) {
- return res.status(404).json({
- success: false,
- message: '路径规划不存在'
- })
- }
+ return {
+ ...target,
+ originalIndex: index,
+ inThreat: threatInfo.inThreat,
+ threatLevel: threatInfo.level || 'none',
+ distance: distance,
+ threatPriority: getThreatPriority(threatInfo.level || 'none')
+ };
+ });
+
+ // 按威胁等级分组
+ const safeTargets = analyzed.filter(t => !t.inThreat);
+ const lowThreatTargets = analyzed.filter(t => t.inThreat && t.threatLevel === 'low');
+ const mediumThreatTargets = analyzed.filter(t => t.inThreat && t.threatLevel === 'medium');
+ const highThreatTargets = analyzed.filter(t => t.inThreat && t.threatLevel === 'high');
+ const criticalThreatTargets = analyzed.filter(t => t.inThreat && t.threatLevel === 'critical');
+
+ // 在每个威胁等级内使用贪心算法排序(最近邻居优先)
+ const sortByGreedy = (targets, currentPos) => {
+ if (targets.length <= 1) return targets;
- if (plan.status !== 'executing') {
- return res.status(400).json({
- success: false,
- message: `路径规划状态为${plan.status},无法停止`
- })
+ const sorted = [];
+ const remaining = [...targets];
+ let current = currentPos;
+
+ while (remaining.length > 0) {
+ // 找到距离当前位置最近的目标点
+ let nearestIndex = 0;
+ let nearestDistance = getDistance(current.lat, current.lng, remaining[0].lat, remaining[0].lng);
+
+ for (let i = 1; i < remaining.length; i++) {
+ const distance = getDistance(current.lat, current.lng, remaining[i].lat, remaining[i].lng);
+ if (distance < nearestDistance) {
+ nearestDistance = distance;
+ nearestIndex = i;
+ }
+ }
+
+ const nearest = remaining.splice(nearestIndex, 1)[0];
+ sorted.push(nearest);
+ current = nearest; // 更新当前位置
}
- plan.status = 'stopped'
- plan.stoppedAt = new Date()
+ return sorted;
+ };
+
+ // 对每个威胁级别的目标点进行贪心排序
+ let result = [];
+ let currentPos = startPoint;
+
+ // 1. 安全区域优先,使用贪心算法
+ if (safeTargets.length > 0) {
+ const sortedSafe = sortByGreedy(safeTargets, currentPos);
+ result.push(...sortedSafe);
+ currentPos = sortedSafe[sortedSafe.length - 1];
+ }
+
+ // 2. 低威胁区域
+ if (lowThreatTargets.length > 0) {
+ const sortedLow = sortByGreedy(lowThreatTargets, currentPos);
+ result.push(...sortedLow);
+ currentPos = sortedLow[sortedLow.length - 1];
+ }
+
+ // 3. 中等威胁区域
+ if (mediumThreatTargets.length > 0) {
+ const sortedMedium = sortByGreedy(mediumThreatTargets, currentPos);
+ result.push(...sortedMedium);
+ currentPos = sortedMedium[sortedMedium.length - 1];
+ }
+
+ // 4. 高威胁区域
+ if (highThreatTargets.length > 0) {
+ const sortedHigh = sortByGreedy(highThreatTargets, currentPos);
+ result.push(...sortedHigh);
+ currentPos = sortedHigh[sortedHigh.length - 1];
+ }
+
+ // 5. 临界威胁区域
+ if (criticalThreatTargets.length > 0) {
+ const sortedCritical = sortByGreedy(criticalThreatTargets, currentPos);
+ result.push(...sortedCritical);
+ }
+
+ console.log('目标点排序结果:', result.map(t => `目标${t.originalIndex + 1}(${t.threatLevel})`).join(' -> '));
+
+ return result;
+}
+
+/**
+ * 获取威胁等级优先级数值
+ */
+function getThreatPriority(level) {
+ const priorities = {
+ 'none': 0,
+ 'low': 1,
+ 'medium': 2,
+ 'high': 3,
+ 'critical': 4
+ };
+ return priorities[level] || 0;
+}
+
+// ===================== 兼容性函数 =====================
+
+/**
+ * 保持向后兼容的函数
+ */
+async function aStarPlanning(start, end, threatZones, options = {}) {
+ return await aStarPlanningImproved(start, end, threatZones, options);
+}
+
+function smoothPath(path, threatZones, options = {}) {
+ return smoothPathAdvanced(path, threatZones, options);
+}
+
+async function multiTargetPlanning(startPoint, targetPoints, threatZones, options = {}) {
+ return await executeMultiTargetPlanning(startPoint, targetPoints, threatZones, options);
+}
+
+function sortTargetsByThreat(startPoint, targetPoints, threatZones) {
+ return sortTargetsByPriorityAndDistance(startPoint, targetPoints, threatZones);
+}
+
+// ===================== API路由 =====================
+
+// 获取路径规划列表
+router.get('/', async (req, res) => {
+ try {
+ const [rows] = await db.execute(`
+ SELECT * FROM path_plans
+ ORDER BY created_at DESC
+ LIMIT 50
+ `);
res.json({
success: true,
- data: plan,
- message: '路径规划已停止'
- })
+ data: rows
+ });
} catch (error) {
+ console.error('获取路径规划列表失败:', error);
res.status(500).json({
success: false,
- message: '停止路径规划失败',
- error: error.message
- })
+ message: '获取路径规划列表失败'
+ });
}
-})
+});
-// 删除路径规划
-router.delete('/:id', (req, res) => {
+// 创建新的路径规划
+router.post('/', async (req, res) => {
+ console.log('=== 改进版路径规划请求 ===');
+ console.log('请求数据:', JSON.stringify(req.body, null, 2));
+
try {
- const id = parseInt(req.params.id)
- const planIndex = pathPlans.findIndex(p => p.id === id)
+ const {
+ startPoint,
+ targetPoints,
+ endPoint, // 兼容单目标
+ algorithm = 'astar',
+ flightAltitude = 100,
+ flightSpeed = 10,
+ threatZones = []
+ } = req.body;
- if (planIndex === -1) {
- return res.status(404).json({
+ // 验证起点
+ if (!startPoint || typeof startPoint.lng !== 'number' || typeof startPoint.lat !== 'number') {
+ return res.status(400).json({
success: false,
- message: '路径规划不存在'
- })
+ message: '起点坐标无效'
+ });
+ }
+
+ // 处理目标点(支持单目标和多目标)
+ let targets = [];
+ if (targetPoints && Array.isArray(targetPoints)) {
+ targets = targetPoints;
+ } else if (endPoint) {
+ targets = [endPoint];
+ } else {
+ return res.status(400).json({
+ success: false,
+ message: '必须提供至少一个目标点'
+ });
}
- const plan = pathPlans[planIndex]
+ // 验证目标点
+ for (let i = 0; i < targets.length; i++) {
+ const target = targets[i];
+ if (!target || typeof target.lng !== 'number' || typeof target.lat !== 'number') {
+ return res.status(400).json({
+ success: false,
+ message: `目标点${i + 1}坐标无效`
+ });
+ }
+ }
+
+ console.log(`处理威胁区域数据: ${threatZones.length}个威胁区`);
+ threatZones.forEach((zone, index) => {
+ console.log(`威胁区${index + 1}:`, {
+ id: zone.id,
+ type: zone.type,
+ level: zone.level,
+ geometry_type: zone.geometry_type,
+ hasGeometry: !!zone.geometry_data
+ });
+ });
+
+ // 添加高度信息
+ const startWithAltitude = { ...startPoint, altitude: flightAltitude };
+ const targetsWithAltitude = targets.map(t => ({ ...t, altitude: flightAltitude }));
- if (plan.status === 'executing') {
+ // 执行改进的路径规划
+ const result = await executeMultiTargetPlanning(
+ startWithAltitude,
+ targetsWithAltitude,
+ threatZones,
+ {
+ algorithm,
+ gridSize: 0.001, // 平衡精度和性能的网格
+ maxIterations: 8000 // 增加迭代次数
+ }
+ );
+
+ if (!result.success) {
return res.status(400).json({
success: false,
- message: '正在执行的路径规划无法删除,请先停止执行'
- })
+ message: result.error
+ });
}
- pathPlans.splice(planIndex, 1)
+ console.log('路径规划结果:', {
+ pathLength: result.path.length,
+ distance: Math.round(result.distance),
+ threatZonesAvoided: result.threatZonesAvoided?.length || 0,
+ threatZonesPassed: result.threatZonesPassed?.length || 0
+ });
+
+ // 计算飞行时间
+ const estimatedTime = Math.ceil(result.distance / (flightSpeed * 1000 / 60)); // 分钟
+
+ // 保存到数据库
+ const pathData = {
+ name: `改进A*路径-${Date.now()}`,
+ 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),
+ algorithm: algorithm,
+ distance: Math.round(result.distance),
+ estimated_time: estimatedTime,
+ flight_altitude: flightAltitude,
+ flight_speed: flightSpeed,
+ threat_zones_avoided: JSON.stringify(result.threatZonesAvoided || []),
+ threat_zones_passed: JSON.stringify(result.threatZonesPassed || []),
+ target_order: JSON.stringify(result.targetOrder || []),
+ status: 'planned'
+ };
+
+ 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())
+ `, [
+ 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
+ ]);
+
+ console.log('改进版路径规划成功完成');
res.json({
success: true,
- message: '路径规划删除成功'
- })
- } catch (error) {
- res.status(500).json({
- success: false,
- message: '删除路径规划失败',
- error: error.message
- })
- }
-})
-
-// 获取可用的路径规划算法
-router.get('/algorithms/list', (req, res) => {
- try {
- res.json({
- success: true,
- data: algorithms,
- message: '获取算法列表成功'
- })
+ data: {
+ id: insertResult.insertId,
+ path_points: result.path,
+ algorithm: algorithm,
+ distance: result.distance,
+ estimated_time: estimatedTime,
+ threat_zones_avoided: result.threatZonesAvoided || [],
+ threat_zones_passed: result.threatZonesPassed || []
+ },
+ details: {
+ totalDistance: result.distance,
+ estimatedTime: estimatedTime,
+ waypointCount: result.path.length,
+ algorithm: algorithm,
+ threatZonesAvoided: result.threatZonesAvoided || [],
+ threatZonesPassed: result.threatZonesPassed || [],
+ targetOrder: result.targetOrder || []
+ },
+ message: targets.length > 1 ?
+ `改进A*多目标路径规划完成!访问${targets.length}个目标点,总距离${(result.distance/1000).toFixed(2)}km,避开${result.threatZonesAvoided?.length || 0}个威胁区` :
+ `改进A*路径规划完成!距离${(result.distance/1000).toFixed(2)}km,避开${result.threatZonesAvoided?.length || 0}个威胁区`
+ });
+
} catch (error) {
+ console.error('改进版路径规划失败:', error);
res.status(500).json({
success: false,
- message: '获取算法列表失败',
- error: error.message
- })
- }
-})
-
-// 计算路径点之间的距离
-function calculatePathDistance(waypoints) {
- if (!waypoints || waypoints.length < 2) return 0
-
- let totalDistance = 0
- for (let i = 0; i < waypoints.length - 1; i++) {
- const p1 = waypoints[i]
- const p2 = waypoints[i + 1]
- totalDistance += getDistance(p1.lat, p1.lng, p2.lat, p2.lng)
+ message: '路径规划失败: ' + error.message
+ });
}
- return totalDistance
-}
-
-// 计算两点间距离(Haversine公式)
-function getDistance(lat1, lng1, lat2, lng2) {
- const R = 6371e3 // 地球半径(米)
- const φ1 = lat1 * Math.PI/180
- const φ2 = lat2 * Math.PI/180
- const Δφ = (lat2-lat1) * Math.PI/180
- const Δλ = (lng2-lng1) * Math.PI/180
-
- const a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
- Math.cos(φ1) * Math.cos(φ2) *
- Math.sin(Δλ/2) * Math.sin(Δλ/2)
- const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
-
- return R * c // 距离(米)
-}
+});
-// 路径优化接口
-router.post('/:id/optimize', (req, res) => {
+// 删除路径规划
+router.delete('/:id', async (req, res) => {
try {
- const id = parseInt(req.params.id)
- const plan = pathPlans.find(p => p.id === id)
+ const id = parseInt(req.params.id);
+
+ const [result] = await db.execute(
+ 'DELETE FROM path_plans WHERE id = ?',
+ [id]
+ );
- if (!plan) {
+ if (result.affectedRows === 0) {
return res.status(404).json({
success: false,
message: '路径规划不存在'
- })
+ });
}
- const { algorithm, obstacles } = req.body
-
- // 模拟路径优化
- const optimizedWaypoints = [...plan.waypoints]
-
- // 根据不同算法进行优化(这里是模拟)
- if (algorithm === 'astar') {
- // A*算法优化
- optimizedWaypoints.forEach(wp => {
- wp.altitude = Math.max(wp.altitude, 120) // 提高飞行高度避障
- })
- } else if (algorithm === 'rrt') {
- // RRT算法优化
- // 添加中间路径点避开障碍物
- }
-
- const optimizedDistance = calculatePathDistance(optimizedWaypoints)
- const optimizationGain = plan.distance - optimizedDistance
-
res.json({
success: true,
- data: {
- originalDistance: plan.distance,
- optimizedDistance: Math.round(optimizedDistance),
- optimizationGain: Math.round(optimizationGain),
- optimizedWaypoints,
- algorithm: algorithm || plan.algorithm
- },
- message: '路径优化完成'
- })
+ message: '路径规划删除成功'
+ });
} catch (error) {
+ console.error('删除路径规划失败:', error);
res.status(500).json({
success: false,
- message: '路径优化失败',
- error: error.message
- })
+ message: '删除路径规划失败'
+ });
}
-})
+});
-module.exports = router;
\ No newline at end of file
+// 导出用于测试的函数
+module.exports = router;
+module.exports.isPointInThreatZone = isPointInThreatZone;
+module.exports.isPointInAnyThreatZone = isPointInAnyThreatZone;
+module.exports.pointInPolygon = pointInPolygon;
+module.exports.getDistance = getDistance;
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/backend/src/routes/tasks.js b/Src/command_center/web-command-center/backend/src/routes/tasks.js
index 98116e60..e958a2fb 100644
--- a/Src/command_center/web-command-center/backend/src/routes/tasks.js
+++ b/Src/command_center/web-command-center/backend/src/routes/tasks.js
@@ -5,19 +5,19 @@ const router = express.Router()
let tasks = [
{
id: 1,
- title: '北京CBD区域侦察任务',
- description: '对北京CBD核心区域进行空中侦察,收集地面目标信息',
+ title: '长沙市中心区域侦察任务',
+ description: '对长沙市中心核心区域进行空中侦察,收集地面目标信息',
type: 'reconnaissance',
priority: 'high',
status: 'executing',
assignedDrones: [1, 2],
area: {
- name: '北京CBD',
+ name: '长沙市中心',
boundary: [
- [116.42, 39.93],
- [116.47, 39.93],
- [116.47, 39.89],
- [116.42, 39.89]
+ [112.97, 28.22],
+ [113.02, 28.22],
+ [113.02, 28.18],
+ [112.97, 28.18]
]
},
objectives: [
@@ -43,7 +43,7 @@ let tasks = [
assignedDrones: [3],
targetLocation: {
name: '救援点A',
- coordinates: [116.35, 39.88],
+ coordinates: [112.90, 28.13],
description: '临时救援营地'
},
payload: {
@@ -68,10 +68,10 @@ let tasks = [
status: 'completed',
assignedDrones: [2],
patrolRoute: [
- { name: '检查点1', coordinates: [116.38, 39.90] },
- { name: '检查点2', coordinates: [116.40, 39.91] },
- { name: '检查点3', coordinates: [116.39, 39.92] },
- { name: '检查点4', coordinates: [116.37, 39.91] }
+ { name: '检查点1', coordinates: [112.93, 28.15] },
+ { name: '检查点2', coordinates: [112.95, 28.16] },
+ { name: '检查点3', coordinates: [112.94, 28.17] },
+ { name: '检查点4', coordinates: [112.92, 28.16] }
],
startTime: new Date('2024-01-01T06:00:00'),
endTime: new Date('2024-01-01T08:00:00'),
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 d8fa3451..562a8ee0 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
@@ -106,22 +106,36 @@ router.get('/', async (req, res) => {
const [rows] = await db.execute(sql, params)
// 转换数据格式,兼容前端
- const threatZones = rows.map(row => ({
- id: row.id,
- type: row.type,
- level: row.level,
- description: row.description,
- geometry: {
- type: row.geometry_type,
- ...row.geometry_data
- },
- timeRange: [row.time_start, row.time_end],
- status: row.status,
- createdAt: row.created_at,
- updatedAt: row.updated_at,
- typeConfig: threatTypes[row.type],
- levelConfig: threatLevels[row.level]
- }))
+ const threatZones = rows.map(row => {
+ let geometryData = null
+ try {
+ if (row.geometry_data) {
+ geometryData = typeof row.geometry_data === 'string' ? JSON.parse(row.geometry_data) : row.geometry_data
+ }
+ } catch (error) {
+ console.error('解析威胁区几何数据失败:', error, row.geometry_data)
+ geometryData = null
+ }
+
+ return {
+ id: row.id,
+ type: row.type,
+ level: row.level,
+ description: row.description,
+ geometry_type: row.geometry_type,
+ geometry_data: geometryData,
+ geometry: geometryData ? {
+ type: row.geometry_type,
+ ...geometryData
+ } : null,
+ timeRange: [row.time_start, row.time_end],
+ status: row.status,
+ createdAt: row.created_at,
+ updatedAt: row.updated_at,
+ typeConfig: threatTypes[row.type],
+ levelConfig: threatLevels[row.level]
+ }
+ })
res.json({
success: true,
diff --git a/Src/command_center/web-command-center/database/init.sql b/Src/command_center/web-command-center/database/init.sql
index 60f831db..4e092e8d 100644
--- a/Src/command_center/web-command-center/database/init.sql
+++ b/Src/command_center/web-command-center/database/init.sql
@@ -1,7 +1,21 @@
+-- ============================================
+-- 无人机指挥中心数据库初始化脚本
+-- 包含用户认证、威胁区域管理、路径规划等核心功能
+-- ============================================
+
-- 创建数据库
CREATE DATABASE IF NOT EXISTS command_center CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE command_center;
+-- 设置字符集
+SET NAMES utf8mb4;
+SET CHARACTER SET utf8mb4;
+SET character_set_connection=utf8mb4;
+
+-- ============================================
+-- 1. 用户认证系统
+-- ============================================
+
-- 创建用户表
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
@@ -12,33 +26,9 @@ CREATE TABLE IF NOT EXISTS users (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
--- 创建无人机表
-CREATE TABLE IF NOT EXISTS drones (
- id INT PRIMARY KEY AUTO_INCREMENT,
- name VARCHAR(50) NOT NULL,
- type VARCHAR(50) NOT NULL,
- status ENUM('active', 'idle', 'error') NOT NULL DEFAULT 'idle',
- latitude DECIMAL(10, 8),
- longitude DECIMAL(11, 8),
- battery INT DEFAULT 100,
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
-) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
--- 创建路径规划记录表
-CREATE TABLE IF NOT EXISTS path_plans (
- id INT PRIMARY KEY AUTO_INCREMENT,
- drone_id INT NOT NULL,
- start_latitude DECIMAL(10, 8) NOT NULL,
- start_longitude DECIMAL(11, 8) NOT NULL,
- end_latitude DECIMAL(10, 8) NOT NULL,
- end_longitude DECIMAL(11, 8) NOT NULL,
- path_points JSON,
- status ENUM('pending', 'executing', 'completed', 'failed') NOT NULL DEFAULT 'pending',
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- FOREIGN KEY (drone_id) REFERENCES drones(id)
-) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
+-- ============================================
+-- 2. 威胁区域管理系统
+-- ============================================
-- 删除现有威胁区表(如果存在)以确保结构正确
DROP TABLE IF EXISTS threat_zones;
@@ -57,12 +47,50 @@ CREATE TABLE threat_zones (
created_by INT DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- FOREIGN KEY (created_by) REFERENCES users(id),
INDEX idx_type (type),
INDEX idx_level (level),
- INDEX idx_status (status)
+ INDEX idx_status (status),
+ FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
+-- ============================================
+-- 3. 路径规划系统
+-- ============================================
+
+-- 删除现有路径规划表(如果存在)以确保结构正确
+DROP TABLE IF EXISTS path_plans;
+
+-- 创建路径规划表(基于最新API结构)
+CREATE TABLE path_plans (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ name VARCHAR(255) 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',
+ 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 '飞行速度(米/秒)',
+ threat_zones_avoided JSON DEFAULT NULL COMMENT '避开的威胁区ID列表',
+ threat_zones_passed JSON DEFAULT NULL COMMENT '穿过的威胁区ID列表',
+ target_order JSON DEFAULT NULL COMMENT '目标点访问顺序',
+ status ENUM('planned', 'executing', 'completed', 'failed', 'cancelled') NOT NULL DEFAULT 'planned',
+ 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='路径规划表';
+
+-- ============================================
+-- 4. 操作日志系统
+-- ============================================
+
-- 创建操作日志表
CREATE TABLE IF NOT EXISTS operation_logs (
id INT PRIMARY KEY AUTO_INCREMENT,
@@ -72,28 +100,120 @@ CREATE TABLE IF NOT EXISTS operation_logs (
target_id INT NOT NULL,
details JSON,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- FOREIGN KEY (user_id) REFERENCES users(id)
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
+ INDEX idx_user_id (user_id),
+ INDEX idx_action (action),
+ INDEX idx_target_type (target_type),
+ INDEX idx_created_at (created_at)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
+-- ============================================
+-- 5. 插入初始数据
+-- ============================================
+
-- 插入默认管理员用户
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)
+INSERT INTO threat_zones (type, level, description, geometry_type, geometry_data, time_start, time_end, status, created_by)
VALUES
-('radar', 'high', 'Enemy radar station', 'circle',
- JSON_OBJECT('center', JSON_ARRAY(116.397428, 39.91), 'radius', 2000),
- '2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active'),
-('missile', 'critical', 'Missile launch site', 'circle',
- JSON_OBJECT('center', JSON_ARRAY(116.42, 39.89), 'radius', 3000),
- '2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active'),
-('aircraft', 'medium', 'Air patrol zone', 'polygon',
- JSON_OBJECT('path', JSON_ARRAY(
- JSON_ARRAY(116.38, 39.92),
- JSON_ARRAY(116.40, 39.92),
- JSON_ARRAY(116.40, 39.90),
- JSON_ARRAY(116.38, 39.90)
+('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');
\ No newline at end of file
+ '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
+) VALUES
+(
+ '长沙市区巡逻路径', 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)
+ ),
+ 'astar', 1200.50, 8, 100, 10.0,
+ JSON_ARRAY(1, 2), 'completed'
+),
+(
+ '湘江沿岸监控路径', 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'
+),
+(
+ '橘子洲头勘察路径', 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)
+ ),
+ 'straight', 800.25, 5, 50, 8.0,
+ JSON_ARRAY(), 'planned'
+);
+
+-- ============================================
+-- 6. 数据验证和显示
+-- ============================================
+
+-- 验证数据插入
+SELECT '=== 数据库初始化完成 ===' as status;
+SELECT 'Users count:' as info, COUNT(*) as count FROM users;
+SELECT 'Threat zones count:' as info, COUNT(*) as count FROM threat_zones;
+SELECT 'Path plans count:' as info, COUNT(*) as count FROM path_plans;
+SELECT 'Operation logs count:' as info, COUNT(*) as count FROM operation_logs;
+
+-- 显示威胁区域统计
+SELECT
+ level as '威胁级别',
+ COUNT(*) as '数量',
+ GROUP_CONCAT(type SEPARATOR ', ') as '类型'
+FROM threat_zones
+WHERE status = 'active'
+GROUP BY level
+ORDER BY FIELD(level, 'low', 'medium', 'high', 'critical');
+
+-- 显示路径规划统计
+SELECT
+ algorithm as '算法',
+ status as '状态',
+ COUNT(*) as '数量',
+ ROUND(AVG(distance), 2) as '平均距离(米)'
+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/035fff33dd87aad7c87a2b4c68f13b559e56bd5efa25f0fd00e4988d7cf251ff.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/035fff33dd87aad7c87a2b4c68f13b559e56bd5efa25f0fd00e4988d7cf251ff.json
new file mode 100644
index 00000000..7db276b3
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/035fff33dd87aad7c87a2b4c68f13b559e56bd5efa25f0fd00e4988d7cf251ff.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n
\n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","length","handleTabClick","close","toggleAddMode","initDroneMarkers","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"mappings":"AAmJA,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;AAE7E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVL,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIV,QAAQ,CAAC;IACvB,MAAMW,YAAW,GAAIhB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMiB,WAAU,GAAIjB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMmB,OAAM,GAAInB,GAAG,CAAC,KAAK;IACzB,MAAMoB,UAAS,GAAIpB,GAAG,CAAC,IAAI;IAC3B,MAAMqB,aAAY,GAAIrB,GAAG,CAAC,KAAK;;IAE/B;IACA,MAAMsB,YAAW,GAAItB,GAAG,CAAC,EAAE;IAC3B,MAAMuB,aAAY,GAAIvB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMwB,WAAU,GAAIxB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMyB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAI1B,GAAG,CAAC,IAAI;IACzB,MAAM2B,iBAAgB,GAAI3B,GAAG,CAAC,OAAO;IACrC,MAAM4B,WAAU,GAAI5B,GAAG,CAAC,QAAQ;IAChC,MAAM6B,YAAW,GAAI7B,GAAG,CAAC,IAAI;IAC7B,MAAM8B,iBAAgB,GAAI9B,GAAG,CAAC,EAAE;IAChC,MAAM+B,eAAc,GAAI/B,GAAG,CAAC,CAAC,IAAIgC,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIlC,GAAG,CAAC,IAAI;IAC/B,MAAMmC,aAAY,GAAInC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMoC,iBAAgB,GAAIpC,GAAG,CAAC,KAAK;IACnC,MAAMqC,QAAO,GAAIrC,GAAG,CAAC;MACnBsC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,MAAK,GAAIxC,QAAQ,CAAC,MAAMY,KAAK,CAAC6B,KAAK,CAACD,MAAK,IAAK,EAAE;IACtD,MAAME,eAAc,GAAI7C,GAAG,CAAC,IAAI;IAChC,MAAM8C,UAAS,GAAI9C,GAAG,CAAC,EAAE;IACzB,MAAM+C,WAAU,GAAI/C,GAAG,CAAC,EAAE;IAC1B,MAAMgD,QAAO,GAAIhD,GAAG,CAAC,IAAI;IACzB,MAAMiD,iBAAgB,GAAIjD,GAAG,CAAC,UAAU;IACxC,MAAMkD,cAAa,GAAIlD,GAAG,CAAC,GAAG;IAC9B,MAAMmD,WAAU,GAAInD,GAAG,CAAC,EAAE;IAC1B,MAAMoD,QAAO,GAAIpD,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMqD,SAAQ,GAAIrD,GAAG,CAAC,IAAI;IAC1B,MAAMsD,YAAW,GAAItD,GAAG,CAAC,CAAC,CAAC;;IAE3B;IACA,MAAMuD,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;QAAEpD,IAAI,EAAE,MAAM;QAAEqD,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAEtD,IAAI,EAAE,MAAM;QAAEqD,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEvD,IAAI,EAAE,MAAM;QAAEqD,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAExD,IAAI,EAAE,MAAM;QAAEqD,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAEzD,IAAI,EAAE,MAAM;QAAEqD,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAE3D,IAAI,EAAE,KAAK;QAAE4D,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAE7D,IAAI,EAAE,KAAK;QAAE4D,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAE9D,IAAI,EAAE,KAAK;QAAE4D,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAE/D,IAAI,EAAE,MAAM;QAAE4D,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3B3D,WAAW,CAAC4D,KAAI,GAAID,GAAE;MACtBhB,OAAO,CAACkB,GAAG,CAAC,oBAAoB;;MAEhC;MACA,MAAMC,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,IAAIA,IAAI,EAAE;QACR,IAAI;UACF3B,SAAS,CAACyB,KAAI,GAAI,IAAIE,IAAI,CAACE,SAAS,CAACL,GAAG;UACxCxB,SAAS,CAACyB,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,IAAI1E,WAAW,CAAC6D,KAAI,KAAM,UAAS,IAAK3D,OAAO,CAAC2D,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAIzE,WAAW,CAAC6D,KAAI,KAAM,cAAa,IAAK3D,OAAO,CAAC2D,KAAK,EAAE;QAChE;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQ7E,WAAW,CAAC6D,KAAK;QACvB,KAAK,UAAU;UACb;UACA;QACF,KAAK,YAAY;UACf;UACAQ,eAAe,CAAC;UAChB;QACF,KAAK,cAAc;UACjB;UACA,IAAI3C,MAAM,CAACmC,KAAK,CAACiB,MAAK,GAAI,KAAK,CAAClD,eAAe,CAACiC,KAAK,EAAE;YACrDjC,eAAe,CAACiC,KAAI,GAAInC,MAAM,CAACmC,KAAK,CAAC,CAAC,CAAC,CAACxC,EAAC;UAC3C;UACA;MACJ;IACF;;IAEA;IACA,MAAM0D,cAAa,GAAIA,CAAA,KAAM;MAC3B;MACA7E,OAAO,CAAC2D,KAAI,GAAI,KAAI;MACpBpD,QAAQ,CAACoD,KAAI,GAAI,IAAG;;MAEpB;MACA,IAAIzB,SAAS,CAACyB,KAAK,EAAE;QACnBzB,SAAS,CAACyB,KAAK,CAACmB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACAH,uBAAuB,CAAC;IAC1B;;IAEA;;IAEA;IACA,MAAMI,aAAY,GAAIA,CAAA,KAAM;MAC1B/E,OAAO,CAAC2D,KAAI,GAAI,CAAC3D,OAAO,CAAC2D,KAAI;MAC7B;MACA,IAAI7D,WAAW,CAAC6D,KAAI,KAAM,YAAY,EAAE;QACtCpD,QAAQ,CAACoD,KAAI,GAAI,IAAG;QACpB,IAAIzB,SAAS,CAACyB,KAAK,EAAE;UACnBzB,SAAS,CAACyB,KAAK,CAACmB,KAAK,CAAC,IAAI;QAC5B;MACF;IACF;;IAEA;IACA,MAAME,gBAAe,GAAI,MAAAA,CAAA,KAAY;MACnC,IAAI,CAACjF,WAAW,CAAC4D,KAAK,EAAE;MAExB,IAAI;QACF;QACA,MAAM/D,KAAK,CAACqF,QAAQ,CAAC,aAAa;QAElC,MAAMpB,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAI,CAACA,IAAG,IAAK,CAACrC,MAAM,CAACmC,KAAI,IAAKnC,MAAM,CAACmC,KAAK,CAACiB,MAAK,KAAM,CAAC,EAAE;UACvDlC,OAAO,CAACkB,GAAG,CAAC,kBAAkB;UAC9B;QACF;;QAEA;QACAsB,MAAM,CAACC,MAAM,CAAChD,YAAY,CAACwB,KAAK,CAAC,CAACyB,OAAO,CAACC,MAAK,IAAK;UAClDtF,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACD,MAAM;QACjC,CAAC;QACDlD,YAAY,CAACwB,KAAI,GAAI,CAAC;QAEtBnC,MAAM,CAACmC,KAAK,CAACyB,OAAO,CAACG,KAAI,IAAK;UAC5B,IAAI,CAACA,KAAI,IAAK,OAAOA,KAAK,CAACC,SAAQ,KAAM,QAAO,IAAK,OAAOD,KAAK,CAACE,QAAO,KAAM,QAAQ,EAAE;YACvF/C,OAAO,CAACC,IAAI,CAAC,WAAW,EAAE4C,KAAK;YAC/B;UACF;UAEA,IAAI;YACF,MAAMF,MAAK,GAAI,IAAIxB,IAAI,CAAC6B,MAAM,CAAC;cAC7BC,QAAQ,EAAE,CAACJ,KAAK,CAACC,SAAS,EAAED,KAAK,CAACE,QAAQ,CAAC;cAC3CG,KAAK,EAAEL,KAAK,CAAC9F,IAAG,IAAK,OAAO8F,KAAK,CAACpE,EAAE,EAAE;cACtC0E,IAAI,EAAE,IAAIhC,IAAI,CAACiC,IAAI,CAAC;gBAClBC,IAAI,EAAE,IAAIlC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;gBAC3BC,KAAK,EAAEC,eAAe,CAACX,KAAK,CAACY,MAAM,CAAC;gBACpCC,SAAS,EAAE,IAAIvC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;cACjC,CAAC;YACH,CAAC;;YAED;YACA,MAAMK,UAAS,GAAI,IAAIxC,IAAI,CAACyC,UAAU,CAAC;cACrCC,QAAQ,EAAE,IAAI;cACdC,OAAO,EAAE;;gEAEyCjB,KAAK,CAAC9F,IAAG,IAAK,OAAO8F,KAAK,CAACpE,EAAE,EAAE;+DAChCsF,aAAa,CAAClB,KAAK,CAACY,MAAM,CAAC;+DAC3BZ,KAAK,CAACmB,OAAM,IAAK,CAAC;+DAClBnB,KAAK,CAACC,SAAS,CAACmB,OAAO,CAAC,CAAC,CAAC,KAAKpB,KAAK,CAACE,QAAQ,CAACkB,OAAO,CAAC,CAAC,CAAC;;eAExG;cACDC,MAAM,EAAE,IAAI/C,IAAI,CAACgD,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE;YAChC,CAAC;YAEDxB,MAAM,CAACrB,EAAE,CAAC,OAAO,EAAE,MAAM;cACvB,IAAI;gBACFqC,UAAU,CAACS,IAAI,CAAC/G,WAAW,CAAC4D,KAAK,EAAE0B,MAAM,CAAC0B,WAAW,CAAC,CAAC;cACzD,EAAE,OAAOC,SAAS,EAAE;gBAClBtE,OAAO,CAACC,IAAI,CAAC,WAAW,EAAEqE,SAAS;cACrC;YACF,CAAC;YAED7E,YAAY,CAACwB,KAAK,CAAC4B,KAAK,CAACpE,EAAE,IAAIkE,MAAK;YACpC,IAAIpF,UAAU,CAAC0D,KAAK,EAAE;cACpB5D,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAAC5B,MAAM;YAC9B;UACF,EAAE,OAAO6B,WAAW,EAAE;YACpBxE,OAAO,CAACC,IAAI,CAAC,OAAO4C,KAAK,CAACpE,EAAE,UAAU,EAAE+F,WAAW;UACrD;QACF,CAAC;MACH,EAAE,OAAOzE,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,aAAa,EAAEF,KAAK;;QAEjC;QACA,MAAM0E,YAAW,GAAI,CACnB;UACEhG,EAAE,EAAE,CAAC;UACL1B,IAAI,EAAE,UAAU;UAChBgG,QAAQ,EAAE,OAAO;UACjBD,SAAS,EAAE,QAAQ;UACnBW,MAAM,EAAE,QAAQ;UAChBO,OAAO,EAAE;QACX,CAAC,EACD;UACEvF,EAAE,EAAE,CAAC;UACL1B,IAAI,EAAE,UAAU;UAChBgG,QAAQ,EAAE,OAAO;UACjBD,SAAS,EAAE,QAAQ;UACnBW,MAAM,EAAE,MAAM;UACdO,OAAO,EAAE;QACX,EACF;QAEA9G,KAAK,CAACwH,MAAM,CAAC,WAAW,EAAED,YAAY;MACxC;IACF;IAEA,MAAMjB,eAAc,GAAKC,MAAM,IAAK;MAClC,MAAMkB,MAAK,GAAI;QACbC,MAAM,EAAE,SAAS;QACjBC,IAAI,EAAE,SAAS;QACf9E,KAAK,EAAE;MACT;MACA,MAAMK,KAAI,GAAIuE,MAAM,CAAClB,MAAM,KAAKkB,MAAM,CAACE,IAAG;MAE1C,MAAMC,SAAQ,GAAI;;iDAEyB1E,KAAK;;;OAGhD;MAEA,OAAO,4BAA2B,GAAIV,gBAAgB,CAACoF,SAAS;IAClE;IAEA,MAAMf,aAAY,GAAKN,MAAM,IAAK;MAChC,MAAMsB,SAAQ,GAAI;QAChBH,MAAM,EAAE,KAAK;QACbC,IAAI,EAAE,IAAI;QACV9E,KAAK,EAAE;MACT;MACA,OAAOgF,SAAS,CAACtB,MAAM,KAAKA,MAAK;IACnC;;IAEA;IACA,MAAMuB,qBAAoB,GAAK/D,KAAK,IAAK;MACvC1D,UAAU,CAAC0D,KAAI,GAAIA,KAAI;MACvBuB,MAAM,CAACC,MAAM,CAAChD,YAAY,CAACwB,KAAK,CAAC,CAACyB,OAAO,CAACC,MAAK,IAAK;QAClD,IAAI1B,KAAK,EAAE;UACT5D,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAAC5B,MAAM;QAC9B,OAAO;UACLtF,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACD,MAAM;QACjC;MACF,CAAC;IACH;;IAEA;IACA,MAAMsC,eAAc,GAAKhE,KAAK,IAAK;MACjCzD,aAAa,CAACyD,KAAI,GAAIA,KAAI;MAC1B;IACF;;IAEA;IACA,MAAMiE,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI9H,WAAW,CAAC6D,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAI7D,WAAW,CAAC6D,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,CAACxE,WAAW,CAAC4D,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;;MAEvB;MACA,MAAMwB,MAAK,GAAI,IAAIxB,IAAI,CAAC6B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACrB,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;UACFgE,SAAS,EAAE,IAAIvC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFJ,KAAK,EAAE,WAAWtB,GAAG,CAACqC,OAAO,CAAC,CAAC,CAAC,KAAKpC,GAAG,CAACoC,OAAO,CAAC,CAAC,CAAC;MACrD,CAAC;;MAED;MACAtB,MAAM,CAACrB,EAAE,CAAC,OAAO,EAAE,MAAM;QACvB7E,SAAS,CAAC;UACR0I,OAAO,EAAE,UAAUvD,GAAG,CAACqC,OAAO,CAAC,CAAC,CAAC,KAAKpC,GAAG,CAACoC,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDvF,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDrB,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAAC5B,MAAM;MAC5BjF,aAAa,CAACuD,KAAK,CAACmE,IAAI,CAACzC,MAAM;MAC/BlF,YAAY,CAACwD,KAAK,CAACmE,IAAI,CAAC;QAAExD,GAAG;QAAEC;MAAI,CAAC;MAEpCpF,SAAS,CAAC4I,OAAO,CAAC,WAAWzD,GAAG,CAACqC,OAAO,CAAC,CAAC,CAAC,KAAKpC,GAAG,CAACoC,OAAO,CAAC,CAAC,CAAC,EAAE;IAClE;;IAEA;IACA,MAAMqB,YAAW,GAAIA,CAAA,KAAM;MACzB5H,aAAa,CAACuD,KAAK,CAACyB,OAAO,CAACC,MAAK,IAAK;QACpCtF,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACD,MAAM;MACjC,CAAC;MACDjF,aAAa,CAACuD,KAAI,GAAI,EAAC;MACvBxD,YAAY,CAACwD,KAAI,GAAI,EAAC;MACtBxE,SAAS,CAAC4I,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAME,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAI1H,QAAQ,CAACoD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIpD,QAAQ,CAACoD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIpD,QAAQ,CAACoD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMuE,sBAAqB,GAAK9G,IAAI,IAAK;MACvCZ,iBAAiB,CAACmD,KAAI,GAAIvC,IAAG;IAC/B;;IAEA;IACA,MAAM+G,uBAAsB,GAAK9G,KAAK,IAAK;MACzCZ,WAAW,CAACkD,KAAI,GAAItC,KAAI;IAC1B;;IAEA;IACA,MAAM+G,kBAAiB,GAAKC,MAAM,IAAK;MACrC3H,YAAY,CAACiD,KAAI,GAAI0E,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxC5H,iBAAiB,CAACgD,KAAI,GAAI4E,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvC7H,eAAe,CAAC+C,KAAI,GAAI8E,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACzG,SAAS,CAACyB,KAAK,EAAE;QACpBxE,SAAS,CAACsD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAIlC,QAAQ,CAACoD,KAAI,KAAMgF,IAAI,EAAE;QAC3B;QACApI,QAAQ,CAACoD,KAAI,GAAI,IAAG;QACpB,IAAI;UACFzB,SAAS,CAACyB,KAAK,CAACmB,KAAK,CAAC,IAAI;QAC5B,EAAE,OAAOrC,KAAK,EAAE;UACdC,OAAO,CAACC,IAAI,CAAC,YAAY,EAAEF,KAAK;QAClC;QACAtD,SAAS,CAACyJ,IAAI,CAAC,SAAS;QACxB;MACF;MAEArI,QAAQ,CAACoD,KAAI,GAAIgF,IAAG;MACpB3I,OAAO,CAAC2D,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAMkF,OAAM,GAAI;QACdC,WAAW,EAAElG,gBAAgB,CAACpC,iBAAiB,CAACmD,KAAK,CAAC,CAACb,KAAK;QAC5DiG,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAErG,gBAAgB,CAACpC,iBAAiB,CAACmD,KAAK,CAAC,CAACb,KAAK;QAC1DoG,WAAW,EAAE/F,iBAAiB,CAAC1C,WAAW,CAACkD,KAAK,CAAC,CAACN;MACpD;MAEA,IAAI;QACFX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE+E,IAAI,EAAE,KAAK,EAAEE,OAAO;QAE3C,QAAQF,IAAI;UACV,KAAK,QAAQ;YACXzG,SAAS,CAACyB,KAAK,CAACwF,MAAM,CAACN,OAAO;YAC9B;UACF,KAAK,SAAS;YACZ3G,SAAS,CAACyB,KAAK,CAACyF,OAAO,CAACP,OAAO;YAC/B;UACF,KAAK,WAAW;YACd3G,SAAS,CAACyB,KAAK,CAAC0F,SAAS,CAACR,OAAO;YACjC;QACJ;QAEA1J,SAAS,CAACyJ,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOxF,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChCtD,SAAS,CAACsD,KAAK,CAAC,UAAU;QAC1BlC,QAAQ,CAACoD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOqF,KAAK,IAAK;MACtC;MACA,MAAMC,OAAM,GAAItK,KAAK,CAACqK,KAAK,CAACE,GAAG;MAE/B9G,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE2F,OAAO;MACjC7G,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAE2F,OAAO,CAACE,SAAQ,IAAKF,OAAO,CAACG,UAAU;;MAE7D;MACA,IAAI;QACF;QACA,MAAMC,QAAO,GAAI5J,WAAW,CAAC4D,KAAK,CAACiG,cAAc,CAAC,SAAS;QAC3DlH,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAE+F,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBf,WAAW,EAAElG,gBAAgB,CAACpC,iBAAiB,CAACmD,KAAK,CAAC,CAACb,KAAK;UAC5DiG,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAErG,gBAAgB,CAACpC,iBAAiB,CAACmD,KAAK,CAAC,CAACb,KAAK;UAC1DoG,WAAW,EAAE/F,iBAAiB,CAAC1C,WAAW,CAACkD,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEiG,YAAY;QACnCN,OAAO,CAACO,UAAU,CAACD,YAAY;;QAE/B;QACAE,UAAU,CAAC,MAAM;UACfhK,WAAW,CAAC4D,KAAK,CAACqG,UAAU,CAAC;QAC/B,CAAC,EAAE,GAAG;QAENtH,OAAO,CAACkB,GAAG,CAAC,WAAW;MAEzB,EAAE,OAAOnB,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;;MAEA;MACA,MAAMlB,QAAO,GAAI0I,sBAAsB,CAACV,OAAO;;MAE/C;MACA,IAAI,CAAC/I,iBAAiB,CAACmD,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEjC,iBAAiB,CAACmD,KAAK;QAChDxE,SAAS,CAACsD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAChC,WAAW,CAACkD,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEhC,WAAW,CAACkD,KAAK;QAC1CxE,SAAS,CAACsD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAClB,QAAQ,EAAE;QACbmB,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBtD,SAAS,CAACsD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAMyH,QAAO,GAAI;QACf9I,IAAI,EAAEZ,iBAAiB,CAACmD,KAAK;QAC7BtC,KAAK,EAAEZ,WAAW,CAACkD,KAAK;QACxBrC,WAAW,EAAEX,iBAAiB,CAACgD,KAAI,IAAK,EAAE;QAC1CwG,SAAS,EAAE,CAAC,GAAGvJ,eAAe,CAAC+C,KAAK,CAAC;QAAE;QACvCpC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFmB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEsG,QAAQ;QAClCxH,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEpD,iBAAiB,CAACmD,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEnD,WAAW,CAACkD,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEjD,iBAAiB,CAACgD,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAErC,QAAQ;;QAE7B;QACA,MAAM6I,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;QAEDxH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwG,QAAQ,CAACjE,MAAM,EAAEiE,QAAQ,CAACO,UAAU;QAE5D,IAAI,CAACP,QAAQ,CAACQ,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMT,QAAQ,CAACU,IAAI,CAAC;UACtCpI,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEoI,SAAS;UACnC,MAAM,IAAIE,KAAK,CAAC,YAAYX,QAAQ,CAACjE,MAAM,IAAIiE,QAAQ,CAACO,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMZ,QAAQ,CAACa,IAAI,CAAC;QACnCvI,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEoH,MAAM;QAE9B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAMmD,IAAG,GAAIF,MAAM,CAACG,IAAG;;UAEvB;UACApL,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACiE,OAAO;;UAEhC;UACA6B,qBAAqB,CAACF,IAAI;UAE1B/L,SAAS,CAAC4I,OAAO,CAAC,MAAMnF,gBAAgB,CAACpC,iBAAiB,CAACmD,KAAK,CAAC,CAAClE,IAAI,IAAI;UAC1EiD,OAAO,CAACkB,GAAG,CAAC,kBAAkB,EAAEsH,IAAI;QAEtC,OAAO;UACL,MAAM,IAAIH,KAAK,CAACC,MAAM,CAACnD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOpF,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,aAAa,EAAEA,KAAK;QAClCtD,SAAS,CAACsD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACoF,OAAO;;QAE3C;QACA9H,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACiE,OAAO;MAClC;;MAEA;MACAhJ,QAAQ,CAACoD,KAAI,GAAI,IAAG;MACpB,IAAIzB,SAAS,CAACyB,KAAK,EAAE;QACnBzB,SAAS,CAACyB,KAAK,CAACmB,KAAK,CAAC,IAAI;MAC5B;;MAEA;MACApC,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEvD,WAAW,CAACsD,KAAK,CAACiB,MAAM;IAClD;IAEA,MAAMqF,sBAAqB,GAAKV,OAAO,IAAK;MAC1C7G,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAE2F,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MAEjE,IAAI;QACF,IAAIF,OAAO,CAACG,UAAS,KAAM,aAAY,IAAKH,OAAO,CAACE,SAAQ,KAAM,gBAAgB,EAAE;UAClF,MAAM4B,MAAK,GAAI9B,OAAO,CAAC+B,SAAS,CAAC;UACjC,MAAMjD,MAAK,GAAIkB,OAAO,CAACgC,SAAS,CAAC;UACjC7I,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE;YAAEyH,MAAM;YAAEhD;UAAO,CAAC;UACzC,OAAO;YACLjH,IAAI,EAAE,QAAQ;YACdiK,MAAM,EAAE,CAACA,MAAM,CAAC/G,GAAG,EAAE+G,MAAM,CAAC9G,GAAG,CAAC;YAChC8D,MAAM,EAAEA;UACV;QACF,OAAO,IAAIkB,OAAO,CAACG,UAAS,KAAM,cAAa,IAAKH,OAAO,CAACE,SAAQ,KAAM,iBAAiB,EAAE;UAC3F,MAAM+B,IAAG,GAAIjC,OAAO,CAACkC,OAAO,CAAC;UAC7B/I,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE4H,IAAI;UAC5B,OAAO;YACLpK,IAAI,EAAE,SAAS;YACfoK,IAAI,EAAEA,IAAI,CAAC9H,GAAG,CAACgI,KAAI,IAAK,CAACA,KAAK,CAACpH,GAAG,EAAEoH,KAAK,CAACnH,GAAG,CAAC;UAChD;QACF,OAAO,IAAIgF,OAAO,CAACG,UAAS,KAAM,gBAAe,IAAKH,OAAO,CAACE,SAAQ,KAAM,mBAAmB,EAAE;UAC/F,MAAMkC,MAAK,GAAIpC,OAAO,CAACqC,SAAS,CAAC;UACjClJ,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE+H,MAAM;UAC7B,OAAO;YACLvK,IAAI,EAAE,WAAW;YACjBuK,MAAM,EAAE,CAACA,MAAM,CAACE,YAAY,CAAC,CAAC,CAACvH,GAAG,EAAEqH,MAAM,CAACE,YAAY,CAAC,CAAC,CAACtH,GAAG,EACrDoH,MAAM,CAACG,YAAY,CAAC,CAAC,CAACxH,GAAG,EAAEqH,MAAM,CAACG,YAAY,CAAC,CAAC,CAACvH,GAAG;UAC9D;QACF;MACF,EAAE,OAAO9B,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;MAEAC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAE8G,OAAO,CAACG,UAAS,IAAKH,OAAO,CAACE,SAAS;MACnE,OAAO,IAAG;IACZ;;IAEA;IACA,MAAMtF,eAAc,GAAI,MAAAA,CAAA,KAAY;MAClC,IAAI;QACFzB,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,0BAA0B;QAEtC,MAAMwG,QAAO,GAAI,MAAMC,KAAK,CAAC,mBAAmB;QAChD3H,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEwG,QAAQ,CAACjE,MAAM,EAAEiE,QAAQ,CAACO,UAAU;QAE9D,IAAI,CAACP,QAAQ,CAACQ,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMT,QAAQ,CAACU,IAAI,CAAC;UACtCpI,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEoI,SAAS;UACrC,MAAM,IAAIE,KAAK,CAAC,YAAYX,QAAQ,CAACjE,MAAM,IAAIiE,QAAQ,CAACO,UAAU,MAAME,SAAS,EAAE;QACrF;QAEA,MAAMG,MAAK,GAAI,MAAMZ,QAAQ,CAACa,IAAI,CAAC;QACnCvI,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEoH,MAAM;QAEhC,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClBrF,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEoH,MAAM,CAACG,IAAI;;UAEtC;UACAY,aAAa,CAAC,IAAI;;UAElB;UACAf,MAAM,CAACG,IAAI,CAAC/F,OAAO,CAAC8F,IAAG,IAAK;YAC1BE,qBAAqB,CAACF,IAAI;UAC5B,CAAC;UAEDxI,OAAO,CAACkB,GAAG,CAAC,QAAQoH,MAAM,CAACG,IAAI,CAACvG,MAAM,OAAO;QAE/C,OAAO;UACL,MAAM,IAAImG,KAAK,CAACC,MAAM,CAACnD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOpF,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BtD,SAAS,CAACsD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACoF,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMuD,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAACnL,WAAW,CAAC4D,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,iBAAiB;QAC/B;MACF;MAEA,IAAI;QACFC,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEsH,IAAI;QAE/B,MAAMrH,IAAG,GAAIC,MAAM,CAACD,IAAG;QACvB,IAAI0F,OAAM,GAAI,IAAG;;QAEjB;QACA,MAAMM,YAAW,GAAI;UACnBf,WAAW,EAAElG,gBAAgB,CAACsI,IAAI,CAAC9J,IAAI,CAAC,EAAE0B,KAAI,IAAK,SAAS;UAC5DiG,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAErG,gBAAgB,CAACsI,IAAI,CAAC9J,IAAI,CAAC,EAAE0B,KAAI,IAAK,SAAS;UAC1DoG,WAAW,EAAE/F,iBAAiB,CAAC+H,IAAI,CAAC7J,KAAK,CAAC,EAAEgC,OAAM,IAAK;QACzD;QAEAX,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEiG,YAAY;QACpCnH,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsH,IAAI,CAAC3J,QAAQ;;QAErC;QACA,IAAI2J,IAAI,CAAC3J,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnCsB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsH,IAAI,CAAC3J,QAAQ,CAAC8J,MAAM,EAAEH,IAAI,CAAC3J,QAAQ,CAAC8G,MAAM;UAClEkB,OAAM,GAAI,IAAI1F,IAAI,CAACmI,MAAM,CAAC;YACxBX,MAAM,EAAE,IAAIxH,IAAI,CAACoI,MAAM,CAACf,IAAI,CAAC3J,QAAQ,CAAC8J,MAAM,CAAC,CAAC,CAAC,EAAEH,IAAI,CAAC3J,QAAQ,CAAC8J,MAAM,CAAC,CAAC,CAAC,CAAC;YACzEhD,MAAM,EAAE6C,IAAI,CAAC3J,QAAQ,CAAC8G,MAAM;YAC5B,GAAGwB;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAAC3J,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3CsB,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEsH,IAAI,CAAC3J,QAAQ,CAACiK,IAAI;UAC3C,MAAMA,IAAG,GAAIN,IAAI,CAAC3J,QAAQ,CAACiK,IAAI,CAAC9H,GAAG,CAACgI,KAAI,IAAK,IAAI7H,IAAI,CAACoI,MAAM,CAACP,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;UAChFnC,OAAM,GAAI,IAAI1F,IAAI,CAACqI,OAAO,CAAC;YACzBV,IAAI,EAAEA,IAAI;YACV,GAAG3B;UACL,CAAC;QACH,OAAO,IAAIqB,IAAI,CAAC3J,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7CsB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEsH,IAAI,CAAC3J,QAAQ,CAACoK,MAAM;UAC5C,MAAMA,MAAK,GAAI,IAAI9H,IAAI,CAACsI,MAAM,CAC5B,IAAItI,IAAI,CAACoI,MAAM,CAACf,IAAI,CAAC3J,QAAQ,CAACoK,MAAM,CAAC,CAAC,CAAC,EAAET,IAAI,CAAC3J,QAAQ,CAACoK,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,IAAI9H,IAAI,CAACoI,MAAM,CAACf,IAAI,CAAC3J,QAAQ,CAACoK,MAAM,CAAC,CAAC,CAAC,EAAET,IAAI,CAAC3J,QAAQ,CAACoK,MAAM,CAAC,CAAC,CAAC,CAClE;UACApC,OAAM,GAAI,IAAI1F,IAAI,CAACuI,SAAS,CAAC;YAC3BT,MAAM,EAAEA,MAAM;YACd,GAAG9B;UACL,CAAC;QACH;QAEA,IAAIN,OAAO,EAAE;UACX7G,OAAO,CAACkB,GAAG,CAAC,kBAAkB;;UAE9B;UACA7D,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAACsC,OAAO;;UAE7B;UACAjJ,YAAY,CAAC4K,IAAI,CAAC/J,EAAE,IAAIoI,OAAM;;UAE9B;UACA,MAAM8C,aAAY,GAAIhM,WAAW,CAACsD,KAAK,CAAC2I,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACpL,EAAC,KAAM+J,IAAI,CAAC/J,EAAE;UACvE,IAAIkL,aAAY,KAAM,CAAC,CAAC,EAAE;YACxBhM,WAAW,CAACsD,KAAK,CAACmE,IAAI,CAACoD,IAAI;YAC3BxI,OAAO,CAACkB,GAAG,CAAC,WAAW;UACzB,OAAO;YACLlB,OAAO,CAACkB,GAAG,CAAC,gBAAgB;UAC9B;;UAEA;UACA2F,OAAO,CAACvF,EAAE,CAAC,OAAO,EAAE,MAAM;YACxBtB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEsH,IAAI,CAAC/J,EAAE;YAC9BqL,UAAU,CAACtB,IAAI,CAAC/J,EAAE;UACpB,CAAC;;UAED;UACA4I,UAAU,CAAC,MAAM;YACfhK,WAAW,CAAC4D,KAAK,CAACqG,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENtH,OAAO,CAACkB,GAAG,CAAC,OAAOsH,IAAI,CAAC/J,EAAE,WAAW;QAEvC,OAAO;UACLuB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEyI,IAAI,CAAC/J,EAAE,EAAEsB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAM+J,UAAS,GAAKrL,EAAE,IAAK;MACzBJ,cAAc,CAAC4C,KAAI,GAAIxC,EAAC;MACxB,MAAMoI,OAAM,GAAIjJ,YAAY,CAACa,EAAE;MAC/B,IAAIoI,OAAO,EAAE;QACX;QACAA,OAAO,CAACO,UAAU,CAAC;UACjBf,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACA3I,WAAW,CAACsD,KAAK,CAACyB,OAAO,CAACmH,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACpL,EAAC,KAAMA,EAAE,EAAE;YACf,MAAMsL,YAAW,GAAInM,YAAY,CAACiM,CAAC,CAACpL,EAAE;YACtC,IAAIsL,YAAY,EAAE;cAChBA,YAAY,CAAC3C,UAAU,CAAC;gBACtBf,YAAY,EAAE,CAAC;gBACfC,aAAa,EAAE;cACjB,CAAC;YACH;UACF;QACF,CAAC;MACH;IACF;;IAEA;IACA,MAAM0D,UAAS,GAAI,MAAOvL,EAAE,IAAK;MAC/B,IAAI;QACFuB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEzC,EAAE;QAE1B,MAAMiJ,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBlJ,EAAE,EAAE,EAAE;UACtDmJ,MAAM,EAAE;QACV,CAAC;QAED,IAAI,CAACF,QAAQ,CAACQ,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMZ,QAAQ,CAACa,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMwB,OAAM,GAAIjJ,YAAY,CAACa,EAAE;UAC/B,IAAIoI,OAAO,EAAE;YACXxJ,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACiE,OAAO;YAChC,OAAOjJ,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACsD,KAAI,GAAItD,WAAW,CAACsD,KAAK,CAACgJ,MAAM,CAACzB,IAAG,IAAKA,IAAI,CAAC/J,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAAC4C,KAAI,KAAMxC,EAAE,EAAE;YAC/BJ,cAAc,CAAC4C,KAAI,GAAI,IAAG;UAC5B;UAEAxE,SAAS,CAAC4I,OAAO,CAAC,QAAQ;UAC1BrF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEzC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAI4J,KAAK,CAACC,MAAM,CAACnD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOpF,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BtD,SAAS,CAACsD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACoF,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM+E,QAAO,GAAK1B,IAAI,IAAK;MACzBhK,QAAQ,CAACyC,KAAI,GAAI;QAAE,GAAGuH;MAAK;MAC3BjK,iBAAiB,CAAC0C,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMkJ,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFnK,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAE1C,QAAQ,CAACyC,KAAK,CAACxC,EAAE;QAEzC,MAAMiJ,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBnJ,QAAQ,CAACyC,KAAK,CAACxC,EAAE,EAAE,EAAE;UACrEmJ,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBtJ,IAAI,EAAEF,QAAQ,CAACyC,KAAK,CAACvC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACyC,KAAK,CAACtC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACyC,KAAK,CAACrC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC8I,QAAQ,CAACQ,EAAE,EAAE;UAChB,MAAM,IAAIG,KAAK,CAAC,SAAS;QAC3B;QAEA,MAAMC,MAAK,GAAI,MAAMZ,QAAQ,CAACa,IAAI,CAAC;QAEnC,IAAID,MAAM,CAACjD,OAAO,EAAE;UAClB;UACA,MAAMmD,IAAG,GAAI7K,WAAW,CAACsD,KAAK,CAACmJ,IAAI,CAACP,CAAA,IAAKA,CAAC,CAACpL,EAAC,KAAMD,QAAQ,CAACyC,KAAK,CAACxC,EAAE;UACnE,IAAI+J,IAAI,EAAE;YACRA,IAAI,CAAC9J,IAAG,GAAIF,QAAQ,CAACyC,KAAK,CAACvC,IAAG;YAC9B8J,IAAI,CAAC7J,KAAI,GAAIH,QAAQ,CAACyC,KAAK,CAACtC,KAAI;YAChC6J,IAAI,CAAC5J,WAAU,GAAIJ,QAAQ,CAACyC,KAAK,CAACrC,WAAU;;YAE5C;YACA,MAAMiI,OAAM,GAAIjJ,YAAY,CAAC4K,IAAI,CAAC/J,EAAE;YACpC,IAAIoI,OAAO,EAAE;cACXA,OAAO,CAACO,UAAU,CAAC;gBACjBhB,WAAW,EAAElG,gBAAgB,CAACsI,IAAI,CAAC9J,IAAI,CAAC,CAAC0B,KAAK;gBAC9CmG,SAAS,EAAErG,gBAAgB,CAACsI,IAAI,CAAC9J,IAAI,CAAC,CAAC0B,KAAK;gBAC5CoG,WAAW,EAAE/F,iBAAiB,CAAC+H,IAAI,CAAC7J,KAAK,CAAC,CAACgC;cAC7C,CAAC;YACH;UACF;UAEAlE,SAAS,CAAC4I,OAAO,CAAC,QAAQ;UAC1BrF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEoH,MAAM,CAACG,IAAI;QAErC,OAAO;UACL,MAAM,IAAIJ,KAAK,CAACC,MAAM,CAACnD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOpF,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BtD,SAAS,CAACsD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACoF,OAAO;MAC7C;MAEA5G,iBAAiB,CAAC0C,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMoI,aAAY,GAAI,MAAAA,CAAOgB,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAK1M,WAAW,CAACsD,KAAK,CAACiB,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAMoI,OAAM,GAAI3M,WAAW,CAACsD,KAAK,CAACD,GAAG,CAACwH,IAAG,IAAKA,IAAI,CAAC/J,EAAE;UAErDuB,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEoJ,OAAO;UAEjC,MAAM5C,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;cAAEuC,GAAG,EAAED;YAAQ,CAAC;UACvC,CAAC;UAED,IAAI,CAAC5C,QAAQ,CAACQ,EAAE,EAAE;YAChB,MAAM,IAAIG,KAAK,CAAC,WAAW;UAC7B;UAEA,MAAMC,MAAK,GAAI,MAAMZ,QAAQ,CAACa,IAAI,CAAC;UAEnC,IAAI,CAACD,MAAM,CAACjD,OAAO,EAAE;YACnB,MAAM,IAAIgD,KAAK,CAACC,MAAM,CAACnD,OAAM,IAAK,WAAW;UAC/C;UAEAnF,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEoH,MAAM,CAACG,IAAI;QACvC;;QAEA;QACAjG,MAAM,CAACC,MAAM,CAAC7E,YAAY,CAAC,CAAC8E,OAAO,CAACmE,OAAM,IAAK;UAC7C,IAAIxJ,WAAW,CAAC4D,KAAK,EAAE;YACrB5D,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACiE,OAAO;UAClC;QACF,CAAC;;QAED;QACAlJ,WAAW,CAACsD,KAAI,GAAI,EAAC;QACrBuB,MAAM,CAACgI,IAAI,CAAC5M,YAAY,CAAC,CAAC8E,OAAO,CAAC+H,GAAE,IAAK;UACvC,OAAO7M,YAAY,CAAC6M,GAAG;QACzB,CAAC;QACDpM,cAAc,CAAC4C,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACoJ,WAAW,EAAE;UAChB5N,SAAS,CAAC4I,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOtF,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAACsK,WAAW,EAAE;UAChB5N,SAAS,CAACsD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACoF,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAMuF,qBAAoB,GAAKC,MAAM,IAAK;MACxCrM,aAAa,CAAC2C,KAAI,GAAI0J,MAAK;;MAE3B;MACAhN,WAAW,CAACsD,KAAK,CAACyB,OAAO,CAAC8F,IAAG,IAAK;QAChC,MAAM3B,OAAM,GAAIjJ,YAAY,CAAC4K,IAAI,CAAC/J,EAAE;QACpC,IAAIoI,OAAO,EAAE;UACX,IAAI8D,MAAM,CAACC,QAAQ,CAACpC,IAAI,CAAC9J,IAAI,CAAC,EAAE;YAC9BrB,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAACsC,OAAO;UAC/B,OAAO;YACLxJ,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACiE,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAMgE,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIlN,WAAW,CAACsD,KAAK,CAACiB,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAM+G,MAAK,GAAI,IAAK7H,MAAM,CAACD,IAAI,CAACsI,MAAM,CAAE;MACxC9L,WAAW,CAACsD,KAAK,CAACyB,OAAO,CAAC8F,IAAG,IAAK;QAChC,MAAM3B,OAAM,GAAIjJ,YAAY,CAAC4K,IAAI,CAAC/J,EAAE;QACpC,IAAIoI,OAAM,IAAKA,OAAO,CAACqC,SAAS,EAAE;UAChCD,MAAM,CAAC6B,MAAM,CAACjE,OAAO,CAACqC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIV,IAAI,CAAC3J,QAAQ,EAAE8J,MAAM,EAAE;UAChCM,MAAM,CAAC6B,MAAM,CAACtC,IAAI,CAAC3J,QAAQ,CAAC8J,MAAM;QACpC;MACF,CAAC;MAEDtL,WAAW,CAAC4D,KAAK,CAAC8J,SAAS,CAAC9B,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAMjH,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACvE,OAAO,CAAC2D,KAAI,IAAK,CAAC5D,WAAW,CAAC4D,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAM6J,UAAS,GAAI/L,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI;;MAE7C;MACAjD,UAAU,CAACgC,KAAK,CAACmE,IAAI,CAAC;QAAExD,GAAG;QAAEC;MAAI,CAAC;;MAElC;MACA,MAAMc,MAAK,GAAI,IAAIxB,IAAI,CAAC6B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACrB,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;;;wGAGuCsL,UAAU;;WAEvG,CAAC;UACFtH,SAAS,EAAE,IAAIvC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFJ,KAAK,EAAE,MAAM8H,UAAU;MACzB,CAAC;MAED3N,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAAC5B,MAAM;MAC5BzD,WAAW,CAAC+B,KAAK,CAACmE,IAAI,CAACzC,MAAM;;MAE7B;MACA,IAAI1D,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI,CAAC,EAAE;QAC/B+I,cAAc,CAAC;MACjB;MAEAxO,SAAS,CAAC4I,OAAO,CAAC,SAAS2F,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC5N,WAAW,CAAC4D,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAIhC,QAAQ,CAAC8B,KAAK,EAAE;QAClB5D,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACzD,QAAQ,CAAC8B,KAAK;MACzC;MAEA,MAAM6H,IAAG,GAAI7J,UAAU,CAACgC,KAAK,CAACD,GAAG,CAACkK,CAAA,IAAK,CAACA,CAAC,CAACtJ,GAAG,EAAEsJ,CAAC,CAACrJ,GAAG,CAAC;MAErD1C,QAAQ,CAAC8B,KAAI,GAAI,IAAIE,IAAI,CAACgK,QAAQ,CAAC;QACjCrC,IAAI,EAAEA,IAAI;QACV1C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACf+E,WAAW,EAAE;MACf,CAAC;MAED/N,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAACpF,QAAQ,CAAC8B,KAAK;IACtC;;IAEA;IACA,MAAMoK,WAAU,GAAKC,KAAK,IAAK;MAC7BrM,UAAU,CAACgC,KAAK,CAACsK,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjBvM,UAAU,CAACgC,KAAK,CAACyB,OAAO,CAAC,CAACsG,KAAK,EAAEyC,CAAC,KAAK;QACrCC,kBAAkB,CAAC1C,KAAK,CAACpH,GAAG,EAAEoH,KAAK,CAACnH,GAAG,EAAE4J,CAAA,GAAI,CAAC;MAChD,CAAC;MAED,IAAIxM,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI,CAAC,EAAE;QAC/B+I,cAAc,CAAC;MACjB,OAAO,IAAI9L,QAAQ,CAAC8B,KAAK,EAAE;QACzB5D,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACzD,QAAQ,CAAC8B,KAAK;QACvC9B,QAAQ,CAAC8B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA1B,QAAQ,CAAC0B,KAAI,GAAI,IAAG;IACtB;IAEA,MAAMyK,kBAAiB,GAAIA,CAAC9J,GAAG,EAAEC,GAAG,EAAEyJ,KAAK,KAAK;MAC9C,MAAMnK,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,MAAMwB,MAAK,GAAI,IAAIxB,IAAI,CAAC6B,MAAM,CAAC;QAC7BC,QAAQ,EAAE,CAACrB,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;;;wGAGuC4L,KAAK;;WAElG,CAAC;UACF5H,SAAS,EAAE,IAAIvC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFJ,KAAK,EAAE,MAAMoI,KAAK;MACpB,CAAC;MAEDjO,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAAC5B,MAAM;MAC5BzD,WAAW,CAAC+B,KAAK,CAACmE,IAAI,CAACzC,MAAM;IAC/B;IAEA,MAAM6I,gBAAe,GAAIA,CAAA,KAAM;MAC7BtM,WAAW,CAAC+B,KAAK,CAACyB,OAAO,CAACC,MAAK,IAAK;QAClCtF,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACD,MAAM;MACjC,CAAC;MACDzD,WAAW,CAAC+B,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM0K,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAI1M,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI,CAAC,EAAE;QAC/BzF,SAAS,CAACmP,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACF5L,OAAO,CAACkB,GAAG,CAAC,WAAW;QACvBlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE9B,iBAAiB,CAAC6B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAEjC,UAAU,CAACgC,KAAK;QACpCjB,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAEvD,WAAW,CAACsD,KAAK;QAErC,MAAM4K,UAAS,GAAI5M,UAAU,CAACgC,KAAK,CAAC,CAAC;QACrC,MAAM6K,QAAO,GAAI7M,UAAU,CAACgC,KAAK,CAAChC,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI,CAAC;;QAE7D;QACA,MAAM6J,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVjK,GAAG,EAAEiK,UAAU,CAACjK,GAAG;YACnBC,GAAG,EAAEgK,UAAU,CAAChK;UAClB,CAAC;UACDiK,QAAQ,EAAE;YACRlK,GAAG,EAAEkK,QAAQ,CAAClK,GAAG;YACjBC,GAAG,EAAEiK,QAAQ,CAACjK;UAChB,CAAC;UACDmK,SAAS,EAAE5M,iBAAiB,CAAC6B,KAAK;UAClC5B,cAAc,EAAEA,cAAc,CAAC4B,KAAK;UACpC3B,WAAW,EAAEA,WAAW,CAAC2B,KAAK;UAC9BtD,WAAW,EAAEA,WAAW,CAACsD,KAAI,IAAKtD,WAAW,CAACsD,KAAK,CAACiB,MAAK,GAAI,IAAIvE,WAAW,CAACsD,KAAK,CAACD,GAAG,CAACwH,IAAG,KAAM;YAC9F/J,EAAE,EAAE+J,IAAI,CAAC/J,EAAE;YACXC,IAAI,EAAE8J,IAAI,CAAC9J,IAAI;YACfC,KAAK,EAAE6J,IAAI,CAAC7J,KAAK;YACjBE,QAAQ,EAAE2J,IAAI,CAAC3J;UACjB,CAAC,CAAC,IAAI;QACR;QAEAmB,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAE6K,YAAY;;QAErC;QACA,MAAMrE,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,CAAC+D,YAAY;QACnC,CAAC;QAED,IAAI,CAACrE,QAAQ,CAACQ,EAAE,EAAE;UAChB,MAAMC,SAAQ,GAAI,MAAMT,QAAQ,CAACU,IAAI,CAAC;UACtCpI,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE;YACvB0D,MAAM,EAAEiE,QAAQ,CAACjE,MAAM;YACvBwE,UAAU,EAAEP,QAAQ,CAACO,UAAU;YAC/BlI,KAAK,EAAEoI;UACT,CAAC;UACD,MAAM,IAAIE,KAAK,CAAC,WAAWX,QAAQ,CAACjE,MAAM,MAAM0E,SAAS,EAAE;QAC7D;QAEA,MAAMG,MAAK,GAAI,MAAMZ,QAAQ,CAACa,IAAI,CAAC;QACnCvI,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEoH,MAAM;QAE7B,IAAIA,MAAM,CAACjD,OAAO,EAAE;UAClB,MAAM;YAAEoD;UAAK,IAAIH,MAAK;;UAEtB;UACA/I,QAAQ,CAAC0B,KAAI,GAAI;YACfgL,QAAQ,EAAExD,IAAI,CAACwD,QAAQ;YACvBC,QAAQ,EAAEzD,IAAI,CAAC0D,aAAa;YAC5BC,UAAU,EAAE3D,IAAI,CAACK,IAAI,CAAC5G,MAAM;YAC5B8J,SAAS,EAAEvD,IAAI,CAACuD,SAAS;YACzBK,kBAAkB,EAAE5D,IAAI,CAAC4D,kBAAiB,IAAK;UACjD;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACAC,iBAAiB,CAAC9D,IAAI,CAACK,IAAI;UAE3BrM,SAAS,CAAC4I,OAAO,CAAC,GAAGmH,gBAAgB,CAAC/D,IAAI,CAACuD,SAAS,CAAC,SAAS;UAE9D,IAAIvD,IAAI,CAAC4D,kBAAiB,IAAK5D,IAAI,CAAC4D,kBAAkB,CAACnK,MAAK,GAAI,CAAC,EAAE;YACjEzF,SAAS,CAACyJ,IAAI,CAAC,QAAQuC,IAAI,CAAC4D,kBAAkB,CAACnK,MAAM,OAAO;UAC9D;QAEF,OAAO;UACL,MAAM,IAAImG,KAAK,CAACC,MAAM,CAACnD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAOpF,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BtD,SAAS,CAACsD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAACoF,OAAO;MAC5C;IACF;;IAEA;IACA,MAAMqH,gBAAe,GAAKR,SAAS,IAAK;MACtC,MAAMS,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAACT,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMO,iBAAgB,GAAKO,WAAW,IAAK;MACzC,IAAI,CAACzP,WAAW,CAAC4D,KAAI,IAAK,CAAC6L,WAAU,IAAKA,WAAW,CAAC5K,MAAK,GAAI,CAAC,EAAE;MAElE,MAAMf,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE4L,WAAW;;MAElC;MACA,MAAMC,UAAS,GAAID,WAAW,CAAC9L,GAAG,CAACgI,KAAI,IAAK,CAACA,KAAK,CAACpH,GAAG,EAAEoH,KAAK,CAACnH,GAAG,CAAC;MAElE1C,QAAQ,CAAC8B,KAAI,GAAI,IAAIE,IAAI,CAACgK,QAAQ,CAAC;QACjCrC,IAAI,EAAEiE,UAAU;QAChB3G,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACf+E,WAAW,EAAE,OAAO;QACpB9E,aAAa,EAAE;MACjB,CAAC;MAEDjJ,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAACpF,QAAQ,CAAC8B,KAAK;;MAEpC;MACA,MAAM+L,WAAU,GAAI,IAAI7L,IAAI,CAAC6B,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAAC6J,WAAW,CAAC,CAAC,CAAC,CAAClL,GAAG,EAAEkL,WAAW,CAAC,CAAC,CAAC,CAACjL,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;UACFgE,SAAS,EAAE,IAAIvC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFJ,KAAK,EAAE;MACT,CAAC;MAED,MAAM+J,SAAQ,GAAI,IAAI9L,IAAI,CAAC6B,MAAM,CAAC;QAChCC,QAAQ,EAAE,CAAC6J,WAAW,CAACA,WAAW,CAAC5K,MAAK,GAAI,CAAC,CAAC,CAACN,GAAG,EAAEkL,WAAW,CAACA,WAAW,CAAC5K,MAAK,GAAI,CAAC,CAAC,CAACL,GAAG,CAAC;QAC5FsB,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;UACFgE,SAAS,EAAE,IAAIvC,IAAI,CAACmC,IAAI,CAAC,EAAE,EAAE,EAAE;QACjC,CAAC,CAAC;QACFJ,KAAK,EAAE;MACT,CAAC;MAED7F,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAACyI,WAAW;MACjC3P,WAAW,CAAC4D,KAAK,CAACsD,GAAG,CAAC0I,SAAS;MAE/B/N,WAAW,CAAC+B,KAAI,GAAI,CAAC+L,WAAW,EAAEC,SAAS;;MAE3C;MACA5F,UAAU,CAAC,MAAM;QACf,IAAIlI,QAAQ,CAAC8B,KAAK,EAAE;UAClB5D,WAAW,CAAC4D,KAAK,CAACqG,UAAU,CAAC,CAACnI,QAAQ,CAAC8B,KAAK,CAAC;QAC/C;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAMqL,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAInN,QAAQ,CAAC8B,KAAK,EAAE;QAClB5D,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACzD,QAAQ,CAAC8B,KAAK;QACvC9B,QAAQ,CAAC8B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACAuK,gBAAgB,CAAC;IACnB;IAEA,MAAM0B,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAIC,aAAY,GAAI;MACpB,KAAK,IAAI1B,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAIxM,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI,CAAC,EAAEuJ,CAAC,EAAE,EAAE;QACpD,MAAM2B,EAAC,GAAInO,UAAU,CAACgC,KAAK,CAACwK,CAAC;QAC7B,MAAM4B,EAAC,GAAIpO,UAAU,CAACgC,KAAK,CAACwK,CAAA,GAAI,CAAC;QACjC0B,aAAY,IAAKG,WAAW,CAACF,EAAE,CAACvL,GAAG,EAAEuL,EAAE,CAACxL,GAAG,EAAEyL,EAAE,CAACxL,GAAG,EAAEwL,EAAE,CAACzL,GAAG;MAC7D;MACA,OAAOuL,aAAY;IACrB;IAEA,MAAMG,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAIM,IAAI,CAACC,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIN,IAAG,GAAII,IAAI,CAACC,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACP,IAAI,GAACF,IAAI,IAAIM,IAAI,CAACC,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACP,IAAI,GAACF,IAAI,IAAIK,IAAI,CAACC,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAIL,IAAI,CAACM,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIH,IAAI,CAACM,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BH,IAAI,CAACO,GAAG,CAACR,EAAE,IAAIC,IAAI,CAACO,GAAG,CAACL,EAAE,IAC1BF,IAAI,CAACM,GAAG,CAACF,EAAE,GAAC,CAAC,IAAIJ,IAAI,CAACM,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAIR,IAAI,CAACS,KAAK,CAACT,IAAI,CAACU,IAAI,CAACL,CAAC,CAAC,EAAEL,IAAI,CAACU,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAOP,CAAA,GAAIU,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI,CAACxP,eAAe,CAACiC,KAAK,EAAE;QAC1BxE,SAAS,CAACmP,OAAO,CAAC,aAAa;QAC/B;MACF;MAEA,IAAI;QACF,MAAMlP,YAAY,CAAC+R,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtBjQ,IAAI,EAAE;QACR,CAAC;QAEDjC,SAAS,CAAC4I,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACN5I,SAAS,CAACyJ,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAM0I,QAAO,GAAIA,CAAA,KAAM;MACrBpD,gBAAgB,CAAC;MAEjB,IAAIrM,QAAQ,CAAC8B,KAAK,EAAE;QAClB5D,WAAW,CAAC4D,KAAK,CAAC2B,MAAM,CAACzD,QAAQ,CAAC8B,KAAK;QACvC9B,QAAQ,CAAC8B,KAAI,GAAI,IAAG;MACtB;MAEAhC,UAAU,CAACgC,KAAI,GAAI,EAAC;MACpB1B,QAAQ,CAAC0B,KAAI,GAAI,IAAG;MAEpBxE,SAAS,CAAC4I,OAAO,CAAC,UAAU;IAC9B;;IAEA;IACA,MAAMwJ,WAAU,GAAKpQ,EAAE,IAAK;MAC1BO,eAAe,CAACiC,KAAI,GAAIxC,EAAC;MACzB,MAAMoE,KAAI,GAAI/D,MAAM,CAACmC,KAAK,CAACmJ,IAAI,CAAC0E,CAAA,IAAKA,CAAC,CAACrQ,EAAC,KAAMA,EAAE;MAChD,IAAIoE,KAAK,EAAE;QACTpG,SAAS,CAAC4I,OAAO,CAAC,WAAWxC,KAAK,CAAC9F,IAAI,EAAE;MAC3C;IACF;;IAEA;IACA,MAAMgS,uBAAsB,GAAK/C,SAAS,IAAK;MAC7C5M,iBAAiB,CAAC6B,KAAI,GAAI+K,SAAQ;IACpC;;IAEA;IACA,MAAMgD,oBAAmB,GAAKC,QAAQ,IAAK;MACzC5P,cAAc,CAAC4B,KAAI,GAAIgO,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnC7P,WAAW,CAAC2B,KAAI,GAAIkO,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAInQ,UAAU,CAACgC,KAAK,CAACiB,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAM2J,UAAS,GAAI5M,UAAU,CAACgC,KAAK,CAAC,CAAC;MACrC5D,WAAW,CAAC4D,KAAK,CAACoO,SAAS,CAAC,CAACxD,UAAU,CAACjK,GAAG,EAAEiK,UAAU,CAAChK,GAAG,CAAC;MAC5DxE,WAAW,CAAC4D,KAAK,CAACqO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAItQ,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAM4J,QAAO,GAAI7M,UAAU,CAACgC,KAAK,CAAChC,UAAU,CAACgC,KAAK,CAACiB,MAAK,GAAI,CAAC;MAC7D7E,WAAW,CAAC4D,KAAK,CAACoO,SAAS,CAAC,CAACvD,QAAQ,CAAClK,GAAG,EAAEkK,QAAQ,CAACjK,GAAG,CAAC;MACxDxE,WAAW,CAAC4D,KAAK,CAACqO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAME,SAAQ,GAAIA,CAAA,KAAM;MACtB,IAAIvQ,UAAU,CAACgC,KAAK,CAACiB,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAM+G,MAAK,GAAI,IAAK7H,MAAM,CAACD,IAAI,CAACsI,MAAM,CAAE;MACxCxK,UAAU,CAACgC,KAAK,CAACyB,OAAO,CAACsG,KAAI,IAAK;QAChCC,MAAM,CAAC6B,MAAM,CAAC,CAAC9B,KAAK,CAACpH,GAAG,EAAEoH,KAAK,CAACnH,GAAG,CAAC;MACtC,CAAC;MAEDxE,WAAW,CAAC4D,KAAK,CAAC8J,SAAS,CAAC9B,MAAM;IACpC;IAEA7M,SAAS,CAAC,MAAM;MACd;MACA4D,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACL/D,YAAY;MACZC,WAAW;MACXE,OAAO;MACPG,YAAY;MACZF,UAAU;MACVC,aAAa;MACbG,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRM,MAAM;MACNE,eAAe;MACfC,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MAER4C,cAAc;MACdpB,WAAW;MACXW,UAAU;MACVW,aAAa;MACbiD,YAAY;MACZN,qBAAqB;MACrBC,eAAe;MACfC,aAAa;MACbK,UAAU;MACVC,sBAAsB;MACtBC,uBAAuB;MACvBC,kBAAkB;MAClBE,uBAAuB;MACvBE,qBAAqB;MACrBE,WAAW;MACX8D,UAAU;MACVE,UAAU;MACVE,QAAQ;MACRC,cAAc;MACdd,aAAa;MACbqB,qBAAqB;MACrBG,UAAU;MACVQ,WAAW;MACXM,QAAQ;MACR6C,WAAW;MACXI,QAAQ;MACRC,WAAW;MACXE,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXC,SAAS;MAET;MACAC,iBAAiB,EAAG/Q,IAAI,IAAKwB,gBAAgB,CAACxB,IAAI,CAAC,EAAE3B,IAAG,IAAK,MAAM;MACnE2S,kBAAkB,EAAG/Q,KAAK,IAAK8B,iBAAiB,CAAC9B,KAAK,CAAC,EAAE5B,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/06bfdd6a16814132467676ccf54083050be5c2b9b0896f2e17539b2de6544d43.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/06bfdd6a16814132467676ccf54083050be5c2b9b0896f2e17539b2de6544d43.json
new file mode 100644
index 00000000..f180ffaf
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/06bfdd6a16814132467676ccf54083050be5c2b9b0896f2e17539b2de6544d43.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/098872c7f6a51a2462e534e6593b8f21f9a27faf85985ef8b11cfcacf522dcc3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/098872c7f6a51a2462e534e6593b8f21f9a27faf85985ef8b11cfcacf522dcc3.json
new file mode 100644
index 00000000..f5fec126
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/098872c7f6a51a2462e534e6593b8f21f9a27faf85985ef8b11cfcacf522dcc3.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/09fd954844f0f6af691db5ab4760a1a9e6bba180ac5a5c318f866b914b59ac0b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/09fd954844f0f6af691db5ab4760a1a9e6bba180ac5a5c318f866b914b59ac0b.json
new file mode 100644
index 00000000..80f14a31
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/09fd954844f0f6af691db5ab4760a1a9e6bba180ac5a5c318f866b914b59ac0b.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/11701a59dfa87d80307997efe990ce993b0a8b3b5548399d144bf1230b13c789.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11701a59dfa87d80307997efe990ce993b0a8b3b5548399d144bf1230b13c789.json
new file mode 100644
index 00000000..979efb82
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/11701a59dfa87d80307997efe990ce993b0a8b3b5548399d144bf1230b13c789.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('straight');\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","drones","length","selectedDroneId","handleTabClick","close","toggleAddMode","initDroneMarkers","dispatch","Object","values","droneMarkers","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","showDrones","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","showDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/14304853ba433097c289e2c0dbfe0763c6be48443f34c6c01926044b716401b6.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/14304853ba433097c289e2c0dbfe0763c6be48443f34c6c01926044b716401b6.json
new file mode 100644
index 00000000..7f1fff97
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/14304853ba433097c289e2c0dbfe0763c6be48443f34c6c01926044b716401b6.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: \"path-points-list\"\n};\nconst _hoisted_7 = {\n class: \"point-info\"\n};\nconst _hoisted_8 = {\n class: \"point-coords\"\n};\nconst _hoisted_9 = {\n class: \"point-type\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_11 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_12 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_13 = {\n class: \"section\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_15 = {\n class: \"path-info\"\n};\nconst _hoisted_16 = {\n class: \"info-item\"\n};\nconst _hoisted_17 = {\n class: \"value\"\n};\nconst _hoisted_18 = {\n class: \"info-item\"\n};\nconst _hoisted_19 = {\n class: \"value\"\n};\nconst _hoisted_20 = {\n class: \"info-item\"\n};\nconst _hoisted_21 = {\n class: \"value\"\n};\nconst _hoisted_22 = {\n class: \"info-item\"\n};\nconst _hoisted_23 = {\n class: \"value\"\n};\nconst _hoisted_24 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_25 = {\n class: \"value\"\n};\nconst _hoisted_26 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_27 = {\n class: \"section\"\n};\nconst _hoisted_28 = {\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[14] || (_cache[14] = _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, [(_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_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_9, _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_10, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_13, [_cache[18] || (_cache[18] = _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[15] || (_cache[15] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [15]\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[16] || (_cache[16] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [16]\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[17] || (_cache[17] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [17]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [_cache[26] || (_cache[26] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_17, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_18, [_cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_19, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_20, [_cache[21] || (_cache[21] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_21, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_22, [_cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_23, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, [_cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_25, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, _cache[24] || (_cache[24] = [_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[25] || (_cache[25] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [25]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_27, [_cache[30] || (_cache[30] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_28, [_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[27] || (_cache[27] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [27]\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[28] || (_cache[28] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [28]\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[29] || (_cache[29] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [29]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n })]);\n}","map":{"version":3,"names":["class","_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","style","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_7","_hoisted_8","_toDisplayString","lng","toFixed","lat","_hoisted_9","icon","circle","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_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_14","_hoisted_15","_hoisted_16","_hoisted_17","getAlgorithmName","_hoisted_18","_hoisted_19","distance","_hoisted_20","_hoisted_21","duration","_hoisted_22","_hoisted_23","pointCount","threatZonesAvoided","_hoisted_24","_hoisted_25","targetOrder","_hoisted_26","_hoisted_27","_hoisted_28","_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
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/15b51978d7e519edd624b5d1bb8a7ee218ebbd3e4ac86b2f5ca2f71df00f3272.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15b51978d7e519edd624b5d1bb8a7ee218ebbd3e4ac86b2f5ca2f71df00f3272.json
new file mode 100644
index 00000000..3420581e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/15b51978d7e519edd624b5d1bb8a7ee218ebbd3e4ac86b2f5ca2f71df00f3272.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 // 并行加载威胁区和路径数据\n const [threatZonesResult, pathPlansResult] = await Promise.allSettled([loadThreatZones(), loadPathPlans()]);\n if (threatZonesResult.status === 'fulfilled') {\n console.log('威胁区数据加载成功');\n } else {\n console.error('威胁区数据加载失败:', threatZonesResult.reason);\n }\n if (pathPlansResult.status === 'fulfilled') {\n console.log('路径数据加载成功');\n } else {\n console.error('路径数据加载失败:', pathPlansResult.reason);\n }\n\n // 加载无人机定位点\n await loadDronePositions();\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","threatZonesResult","pathPlansResult","Promise","allSettled","loadThreatZones","loadPathPlans","status","reason","loadDronePositions","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","length","handleTabClick","close","toggleAddMode","initDroneMarkers","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/1895548f85b0a5ce219099c6cef480ee250666bf6f4f79fe59413ff7c0b18474.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1895548f85b0a5ce219099c6cef480ee250666bf6f4f79fe59413ff7c0b18474.json
new file mode 100644
index 00000000..337e4ac2
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1895548f85b0a5ce219099c6cef480ee250666bf6f4f79fe59413ff7c0b18474.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: 'straight'\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 {{ drone.name }}\r\n \r\n 电量: {{ drone.battery }}%\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
0\">\r\n 避开威胁区: {{ pathInfo.threatZonesAvoided.length }}个\r\n
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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/18f42341494e9718628e5568f5141fae23e46f0001512f662cc5349534106f15.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/18f42341494e9718628e5568f5141fae23e46f0001512f662cc5349534106f15.json
new file mode 100644
index 00000000..5c942870
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/18f42341494e9718628e5568f5141fae23e46f0001512f662cc5349534106f15.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('straight');\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,\n geometry_data: 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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\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","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 "],"mappings":"AAmJA,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;AAE7E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVL,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIV,QAAQ,CAAC;IACvB,MAAMW,YAAW,GAAIhB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMiB,WAAU,GAAIjB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMmB,OAAM,GAAInB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMoB,YAAW,GAAIpB,GAAG,CAAC,EAAE;IAC3B,MAAMqB,aAAY,GAAIrB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMsB,WAAU,GAAItB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMuB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIxB,GAAG,CAAC,IAAI;IACzB,MAAMyB,iBAAgB,GAAIzB,GAAG,CAAC,OAAO;IACrC,MAAM0B,WAAU,GAAI1B,GAAG,CAAC,QAAQ;IAChC,MAAM2B,YAAW,GAAI3B,GAAG,CAAC,IAAI;IAC7B,MAAM4B,iBAAgB,GAAI5B,GAAG,CAAC,EAAE;IAChC,MAAM6B,eAAc,GAAI7B,GAAG,CAAC,CAAC,IAAI8B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIhC,GAAG,CAAC,IAAI;IAC/B,MAAMiC,aAAY,GAAIjC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMkC,iBAAgB,GAAIlC,GAAG,CAAC,KAAK;IACnC,MAAMmC,QAAO,GAAInC,GAAG,CAAC;MACnBoC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAIzC,GAAG,CAAC,EAAE;IACzB,MAAM0C,WAAU,GAAI1C,GAAG,CAAC,EAAE;IAC1B,MAAM2C,QAAO,GAAI3C,GAAG,CAAC,IAAI;IACzB,MAAM4C,iBAAgB,GAAI5C,GAAG,CAAC,UAAU;IACxC,MAAM6C,cAAa,GAAI7C,GAAG,CAAC,GAAG;IAC9B,MAAM8C,WAAU,GAAI9C,GAAG,CAAC,EAAE;IAC1B,MAAM+C,QAAO,GAAI/C,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMgD,SAAQ,GAAIhD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMiD,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;QAAE9C,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEjD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAErD,IAAI,EAAE,KAAK;QAAEsD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEsD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAExD,IAAI,EAAE,KAAK;QAAEsD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAEzD,IAAI,EAAE,MAAM;QAAEsD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BrD,WAAW,CAACsD,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,IAAIpE,WAAW,CAACuD,KAAI,KAAM,UAAS,IAAKrD,OAAO,CAACqD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAInE,WAAW,CAACuD,KAAI,KAAM,cAAa,IAAKrD,OAAO,CAACqD,KAAK,EAAE;QAChE;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQvE,WAAW,CAACuD,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;MACAtE,OAAO,CAACqD,KAAI,GAAI,KAAI;MACpBhD,QAAQ,CAACgD,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;MAC1BxE,OAAO,CAACqD,KAAI,GAAI,CAACrD,OAAO,CAACqD,KAAI;MAC7B;MACA,IAAIvD,WAAW,CAACuD,KAAI,KAAM,YAAY,EAAE;QACtChD,QAAQ,CAACgD,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,IAAI3E,WAAW,CAACuD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIvD,WAAW,CAACuD,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,CAAClE,WAAW,CAACsD,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;QACvBvE,SAAS,CAAC;UACRkG,OAAO,EAAE,UAAUrB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDlE,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BxE,aAAa,CAACmD,KAAK,CAACkC,IAAI,CAACb,MAAM;MAC/BzE,YAAY,CAACoD,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;MAEpC9E,SAAS,CAACqG,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;MACzBvF,aAAa,CAACmD,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QACpC3E,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACDxE,aAAa,CAACmD,KAAI,GAAI,EAAC;MACvBpD,YAAY,CAACoD,KAAI,GAAI,EAAC;MACtBlE,SAAS,CAACqG,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMI,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIvF,QAAQ,CAACgD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIhD,QAAQ,CAACgD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIhD,QAAQ,CAACgD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMwC,sBAAqB,GAAK3E,IAAI,IAAK;MACvCZ,iBAAiB,CAAC+C,KAAI,GAAInC,IAAG;IAC/B;;IAEA;IACA,MAAM4E,uBAAsB,GAAK3E,KAAK,IAAK;MACzCZ,WAAW,CAAC8C,KAAI,GAAIlC,KAAI;IAC1B;;IAEA;IACA,MAAM4E,kBAAiB,GAAKC,MAAM,IAAK;MACrCxF,YAAY,CAAC6C,KAAI,GAAI2C,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxCzF,iBAAiB,CAAC4C,KAAI,GAAI6C,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvC1F,eAAe,CAAC2C,KAAI,GAAI+C,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACzE,SAAS,CAACwB,KAAK,EAAE;QACpBlE,SAAS,CAACgD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAI9B,QAAQ,CAACgD,KAAI,KAAMiD,IAAI,EAAE;QAC3B;QACAjG,QAAQ,CAACgD,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;QACAhD,SAAS,CAACoH,IAAI,CAAC,SAAS;QACxB;MACF;MAEAlG,QAAQ,CAACgD,KAAI,GAAIiD,IAAG;MACpBtG,OAAO,CAACqD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAMmD,OAAM,GAAI;QACdC,WAAW,EAAEnE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;QAC5DkE,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEtE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;QAC1DqE,WAAW,EAAEhE,iBAAiB,CAACtC,WAAW,CAAC8C,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;QAEArH,SAAS,CAACoH,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOzD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChChD,SAAS,CAACgD,KAAK,CAAC,UAAU;QAC1B9B,QAAQ,CAACgD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOsD,KAAK,IAAK;MACtC;MACA,MAAMC,OAAM,GAAIjI,KAAK,CAACgI,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,GAAIvH,WAAW,CAACsD,KAAK,CAACkE,cAAc,CAAC,SAAS;QAC3DnF,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEgE,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;UAC5DkE,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEtE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACtC,WAAW,CAAC8C,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkE,YAAY;QACnCN,OAAO,CAACO,UAAU,CAACD,YAAY;;QAE/B;QACAE,UAAU,CAAC,MAAM;UACf3H,WAAW,CAACsD,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,MAAMd,QAAO,GAAIuG,sBAAsB,CAACV,OAAO;;MAE/C;MACA,IAAI,CAAC5G,iBAAiB,CAAC+C,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE7B,iBAAiB,CAAC+C,KAAK;QAChDlE,SAAS,CAACgD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC5B,WAAW,CAAC8C,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE5B,WAAW,CAAC8C,KAAK;QAC1ClE,SAAS,CAACgD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAACd,QAAQ,EAAE;QACbe,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBhD,SAAS,CAACgD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAM0F,QAAO,GAAI;QACf3G,IAAI,EAAEZ,iBAAiB,CAAC+C,KAAK;QAC7BlC,KAAK,EAAEZ,WAAW,CAAC8C,KAAK;QACxBjC,WAAW,EAAEX,iBAAiB,CAAC4C,KAAI,IAAK,EAAE;QAC1CyE,SAAS,EAAE,CAAC,GAAGpH,eAAe,CAAC2C,KAAK,CAAC;QAAE;QACvChC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFe,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuE,QAAQ;QAClCzF,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEhD,iBAAiB,CAAC+C,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE/C,WAAW,CAAC8C,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE7C,iBAAiB,CAAC4C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEjC,QAAQ;;QAE7B;QACA,MAAM0G,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;UACAhJ,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;;UAEhC;UACA8B,qBAAqB,CAACF,IAAI;UAE1B3J,SAAS,CAACqG,OAAO,CAAC,MAAMlD,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAAC5D,IAAI,IAAI;UAC1E2C,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;QAClChD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;;QAE3C;QACAtF,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;MAClC;;MAEA;MACA7G,QAAQ,CAACgD,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,EAAEnD,WAAW,CAACkD,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;YACL9E,IAAI,EAAE,QAAQ;YACdgI,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;YACLnI,IAAI,EAAE,SAAS;YACfmI,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;YACLtI,IAAI,EAAE,WAAW;YACjBsI,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/BhD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM2D,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAAC/I,WAAW,CAACsD,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,CAAC5H,IAAI,CAAC,EAAEsB,KAAI,IAAK,SAAS;UAC5DkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC5H,IAAI,CAAC,EAAEsB,KAAI,IAAK,SAAS;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC3H,KAAK,CAAC,EAAE4B,OAAM,IAAK;QACzD;QAEAX,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEkE,YAAY;QACpCpF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAACzH,QAAQ;;QAErC;QACA,IAAIyH,IAAI,CAACzH,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnCkB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAACzH,QAAQ,CAAC6H,MAAM,EAAEJ,IAAI,CAACzH,QAAQ,CAAC2E,MAAM;UAClEkB,OAAM,GAAI,IAAI3D,IAAI,CAACsG,MAAM,CAAC;YACxBX,MAAM,EAAE,IAAI3F,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAACzH,QAAQ,CAAC6H,MAAM,CAAC,CAAC,CAAC,EAAEJ,IAAI,CAACzH,QAAQ,CAAC6H,MAAM,CAAC,CAAC,CAAC,CAAC;YACzElD,MAAM,EAAE8C,IAAI,CAACzH,QAAQ,CAAC2E,MAAM;YAC5B,GAAGwB;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAACzH,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3CkB,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEwF,IAAI,CAACzH,QAAQ,CAACgI,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAACzH,QAAQ,CAACgI,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,CAACzH,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7CkB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAACzH,QAAQ,CAACmI,MAAM;UAC5C,MAAMA,MAAK,GAAI,IAAIjG,IAAI,CAACyG,MAAM,CAC5B,IAAIzG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAACzH,QAAQ,CAACmI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAACzH,QAAQ,CAACmI,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,IAAIjG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAACzH,QAAQ,CAACmI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAACzH,QAAQ,CAACmI,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;UACAvD,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;;UAE7B;UACA9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE,IAAIiG,OAAM;;UAE9B;UACA,MAAMgD,aAAY,GAAI/J,WAAW,CAACkD,KAAK,CAAC8G,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACnJ,EAAC,KAAM6H,IAAI,CAAC7H,EAAE;UACvE,IAAIiJ,aAAY,KAAM,CAAC,CAAC,EAAE;YACxB/J,WAAW,CAACkD,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,CAAC7H,EAAE;YAC9BoJ,UAAU,CAACvB,IAAI,CAAC7H,EAAE;UACpB,CAAC;;UAED;UACAyG,UAAU,CAAC,MAAM;YACf3H,WAAW,CAACsD,KAAK,CAACsE,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENvF,OAAO,CAACkB,GAAG,CAAC,OAAOwF,IAAI,CAAC7H,EAAE,WAAW;QAEvC,OAAO;UACLmB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE2G,IAAI,CAAC7H,EAAE,EAAEkB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMkI,UAAS,GAAKpJ,EAAE,IAAK;MACzBJ,cAAc,CAACwC,KAAI,GAAIpC,EAAC;MACxB,MAAMiG,OAAM,GAAI9G,YAAY,CAACa,EAAE;MAC/B,IAAIiG,OAAO,EAAE;QACX;QACAA,OAAO,CAACO,UAAU,CAAC;UACjBf,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACAxG,WAAW,CAACkD,KAAK,CAACqC,OAAO,CAAC0E,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACnJ,EAAC,KAAMA,EAAE,EAAE;YACf,MAAMqJ,YAAW,GAAIlK,YAAY,CAACgK,CAAC,CAACnJ,EAAE;YACtC,IAAIqJ,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,MAAOtJ,EAAE,IAAK;MAC/B,IAAI;QACFmB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErC,EAAE;QAE1B,MAAM8G,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqB/G,EAAE,EAAE,EAAE;UACtDgH,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,GAAI9G,YAAY,CAACa,EAAE;UAC/B,IAAIiG,OAAO,EAAE;YACXnH,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;YAChC,OAAO9G,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACkD,KAAI,GAAIlD,WAAW,CAACkD,KAAK,CAACmH,MAAM,CAAC1B,IAAG,IAAKA,IAAI,CAAC7H,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAACwC,KAAI,KAAMpC,EAAE,EAAE;YAC/BJ,cAAc,CAACwC,KAAI,GAAI,IAAG;UAC5B;UAEAlE,SAAS,CAACqG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAI0H,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BhD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMoF,QAAO,GAAK3B,IAAI,IAAK;MACzB9H,QAAQ,CAACqC,KAAI,GAAI;QAAE,GAAGyF;MAAK;MAC3B/H,iBAAiB,CAACsC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMqH,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFtI,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEtC,QAAQ,CAACqC,KAAK,CAACpC,EAAE;QAEzC,MAAM8G,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBhH,QAAQ,CAACqC,KAAK,CAACpC,EAAE,EAAE,EAAE;UACrEgH,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBnH,IAAI,EAAEF,QAAQ,CAACqC,KAAK,CAACnC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACqC,KAAK,CAAClC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACqC,KAAK,CAACjC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC2G,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,GAAI3I,WAAW,CAACkD,KAAK,CAACsH,IAAI,CAACP,CAAA,IAAKA,CAAC,CAACnJ,EAAC,KAAMD,QAAQ,CAACqC,KAAK,CAACpC,EAAE;UACnE,IAAI6H,IAAI,EAAE;YACRA,IAAI,CAAC5H,IAAG,GAAIF,QAAQ,CAACqC,KAAK,CAACnC,IAAG;YAC9B4H,IAAI,CAAC3H,KAAI,GAAIH,QAAQ,CAACqC,KAAK,CAAClC,KAAI;YAChC2H,IAAI,CAAC1H,WAAU,GAAIJ,QAAQ,CAACqC,KAAK,CAACjC,WAAU;;YAE5C;YACA,MAAM8F,OAAM,GAAI9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE;YACpC,IAAIiG,OAAO,EAAE;cACXA,OAAO,CAACO,UAAU,CAAC;gBACjBhB,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC5H,IAAI,CAAC,CAACsB,KAAK;gBAC9CoE,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC5H,IAAI,CAAC,CAACsB,KAAK;gBAC5CqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC3H,KAAK,CAAC,CAAC4B;cAC7C,CAAC;YACH;UACF;UAEA5D,SAAS,CAACqG,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/BhD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;MAEAtE,iBAAiB,CAACsC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMuG,aAAY,GAAI,MAAAA,CAAOgB,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAKzK,WAAW,CAACkD,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAM4B,OAAM,GAAI1K,WAAW,CAACkD,KAAK,CAACD,GAAG,CAAC0F,IAAG,IAAKA,IAAI,CAAC7H,EAAE;UAErDmB,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,CAAC5K,YAAY,CAAC,CAACsF,OAAO,CAACwB,OAAM,IAAK;UAC7C,IAAInH,WAAW,CAACsD,KAAK,EAAE;YACrBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF,CAAC;;QAED;QACA/G,WAAW,CAACkD,KAAI,GAAI,EAAC;QACrB0H,MAAM,CAACE,IAAI,CAAC7K,YAAY,CAAC,CAACsF,OAAO,CAACwF,GAAE,IAAK;UACvC,OAAO9K,YAAY,CAAC8K,GAAG;QACzB,CAAC;QACDrK,cAAc,CAACwC,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACuH,WAAW,EAAE;UAChBzL,SAAS,CAACqG,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOrD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAACyI,WAAW,EAAE;UAChBzL,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAM8F,qBAAoB,GAAKC,MAAM,IAAK;MACxCtK,aAAa,CAACuC,KAAI,GAAI+H,MAAK;;MAE3B;MACAjL,WAAW,CAACkD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAI9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE;QACpC,IAAIiG,OAAO,EAAE;UACX,IAAIkE,MAAM,CAACC,QAAQ,CAACvC,IAAI,CAAC5H,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;UAC/B,OAAO;YACLnH,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAMoE,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAInL,WAAW,CAACkD,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAE;MACxC7J,WAAW,CAACkD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAI9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE;QACpC,IAAIiG,OAAM,IAAKA,OAAO,CAACuC,SAAS,EAAE;UAChCD,MAAM,CAAC+B,MAAM,CAACrE,OAAO,CAACuC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAACzH,QAAQ,EAAE6H,MAAM,EAAE;UAChCM,MAAM,CAAC+B,MAAM,CAACzC,IAAI,CAACzH,QAAQ,CAAC6H,MAAM;QACpC;MACF,CAAC;MAEDnJ,WAAW,CAACsD,KAAK,CAACmI,SAAS,CAAChC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAMpF,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACjE,OAAO,CAACqD,KAAI,IAAK,CAACtD,WAAW,CAACsD,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMkI,UAAS,GAAInK,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI;;MAE7C;MACA3H,UAAU,CAAC+B,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;MAED1L,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BnD,WAAW,CAAC8B,KAAK,CAACkC,IAAI,CAACb,MAAM;;MAE7B;MACA,IAAIpD,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB;MAEAvM,SAAS,CAACqG,OAAO,CAAC,SAASiG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC3L,WAAW,CAACsD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAI/B,QAAQ,CAAC6B,KAAK,EAAE;QAClBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;MACzC;MAEA,MAAMgG,IAAG,GAAI/H,UAAU,CAAC+B,KAAK,CAACD,GAAG,CAACuI,CAAA,IAAK,CAACA,CAAC,CAAC3H,GAAG,EAAE2H,CAAC,CAAC1H,GAAG,CAAC;MAErDzC,QAAQ,CAAC6B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEA,IAAI;QACV5C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE;MACf,CAAC;MAED9L,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC9D,QAAQ,CAAC6B,KAAK;IACtC;;IAEA;IACA,MAAMyI,WAAU,GAAKC,KAAK,IAAK;MAC7BzK,UAAU,CAAC+B,KAAK,CAAC2I,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB3K,UAAU,CAAC+B,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,IAAI5K,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB,OAAO,IAAIlK,QAAQ,CAAC6B,KAAK,EAAE;QACzBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;QACvC7B,QAAQ,CAAC6B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACAzB,QAAQ,CAACyB,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;MAEDhM,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BnD,WAAW,CAAC8B,KAAK,CAACkC,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAMuH,gBAAe,GAAIA,CAAA,KAAM;MAC7B1K,WAAW,CAAC8B,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QAClC3E,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACDnD,WAAW,CAAC8B,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM+I,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAI9K,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/B9J,SAAS,CAACkN,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFjK,OAAO,CAACkB,GAAG,CAAC,cAAc;QAC1BlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE7B,iBAAiB,CAAC4B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,QAAQ,EAAEhC,UAAU,CAAC+B,KAAK,CAAC4F,MAAM;QAC7C7G,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAEnD,WAAW,CAACkD,KAAK;QAErC,MAAMiJ,UAAS,GAAIhL,UAAU,CAAC+B,KAAK,CAAC,CAAC;QACrC,MAAMpD,YAAW,GAAIqB,UAAU,CAAC+B,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;UACDhE,YAAY,EAAEA,YAAY,CAACmD,GAAG,CAACmG,KAAI,KAAM;YACvCvF,GAAG,EAAEuF,KAAK,CAACvF,GAAG;YACdC,GAAG,EAAEsF,KAAK,CAACtF;UACb,CAAC,CAAC,CAAC;UACHwI,SAAS,EAAEhL,iBAAiB,CAAC4B,KAAI,IAAK,OAAO;UAAE;UAC/C3B,cAAc,EAAEA,cAAc,CAAC2B,KAAK;UACpC1B,WAAW,EAAEA,WAAW,CAAC0B,KAAK;UAC9BlD,WAAW,EAAEA,WAAW,CAACkD,KAAI,IAAKlD,WAAW,CAACkD,KAAK,CAAC4F,MAAK,GAAI,IAAI9I,WAAW,CAACkD,KAAK,CAACD,GAAG,CAAC0F,IAAG,KAAM;YAC9F7H,EAAE,EAAE6H,IAAI,CAAC7H,EAAE;YACXC,IAAI,EAAE4H,IAAI,CAAC5H,IAAI;YACfC,KAAK,EAAE2H,IAAI,CAAC3H,KAAK;YACjBuL,aAAa,EAAE5D,IAAI,CAAC4D,aAAa;YACjCC,aAAa,EAAE7D,IAAI,CAAC6D,aAAa;YACjCvL,WAAW,EAAE0H,IAAI,CAAC1H;UACpB,CAAC,CAAC,IAAI;QACR;QAEAgB,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;UACAhH,QAAQ,CAACyB,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,EAAE1N,YAAY,EAAE2M,OAAO,EAAEa,WAAW;UAEzEtO,SAAS,CAACqG,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;YACnB3O,SAAS,CAACoH,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;cACfvI,SAAS,CAAC;gBACRkG,OAAO,EAAE,aAAa0I,SAAS,EAAE;gBACjC7M,IAAI,EAAE,MAAM;gBACZ+L,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;QAC9BhD,SAAS,CAACgD,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,CAAC1N,WAAW,CAACsD,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;MAElEzC,QAAQ,CAAC6B,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;MAED5G,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC9D,QAAQ,CAAC6B,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;MAEDlP,WAAW,CAACsD,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,MAAM3N,WAAU,GAAIyN,MAAM,CAACzN,WAAU;;UAErC;UACA,IAAIiC,KAAI,GAAI,SAAQ,EAAE;UACtB,IAAI2M,UAAU,EAAE;YACd,QAAQ5O,WAAW;cACjB,KAAK,KAAK;gBACRiC,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,KAAK5O,WAAW,MAAK,GAAI,SAAS,EAAE;YAC3E0O,MAAM,EAAE;UACV,CAAC;UAEDlP,WAAW,CAACsD,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;UAEDlP,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC8J,YAAY;UAClCL,OAAO,CAACxJ,IAAI,CAAC6J,YAAY;QAC3B,CAAC;MACH;MAEA7N,WAAW,CAAC8B,KAAI,GAAI0L,OAAM;;MAE1B;MACArH,UAAU,CAAC,MAAM;QACf,IAAIlG,QAAQ,CAAC6B,KAAK,EAAE;UAClBtD,WAAW,CAACsD,KAAK,CAACsE,UAAU,CAAC,CAACnG,QAAQ,CAAC6B,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,IAAIlM,QAAQ,CAAC6B,KAAK,EAAE;QAClBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;QACvC7B,QAAQ,CAAC6B,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,GAAI5K,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAEiD,CAAC,EAAE,EAAE;QACpD,MAAMsD,EAAC,GAAIlO,UAAU,CAAC+B,KAAK,CAAC6I,CAAC;QAC7B,MAAMuD,EAAC,GAAInO,UAAU,CAAC+B,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,MAAMvR,YAAY,CAACwR,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtB5P,IAAI,EAAE;QACR,CAAC;QAED/B,SAAS,CAACqG,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNrG,SAAS,CAACoH,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAMwK,QAAO,GAAIA,CAAA,KAAM;MACrB9E,gBAAgB,CAAC;MAEjB,IAAIzK,QAAQ,CAAC6B,KAAK,EAAE;QAClBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;QACvC7B,QAAQ,CAAC6B,KAAI,GAAI,IAAG;MACtB;MAEA/B,UAAU,CAAC+B,KAAI,GAAI,EAAC;MACpBzB,QAAQ,CAACyB,KAAI,GAAI,IAAG;MAEpBlE,SAAS,CAACqG,OAAO,CAAC,UAAU;IAC9B;;IAIA;IACA,MAAMwL,uBAAsB,GAAKvE,SAAS,IAAK;MAC7ChL,iBAAiB,CAAC4B,KAAI,GAAIoJ,SAAQ;IACpC;;IAEA;IACA,MAAMwE,oBAAmB,GAAKC,QAAQ,IAAK;MACzCxP,cAAc,CAAC2B,KAAI,GAAI6N,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnCzP,WAAW,CAAC0B,KAAI,GAAI+N,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI/P,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMqD,UAAS,GAAIhL,UAAU,CAAC+B,KAAK,CAAC,CAAC;MACrCtD,WAAW,CAACsD,KAAK,CAACiO,SAAS,CAAC,CAAChF,UAAU,CAACtI,GAAG,EAAEsI,UAAU,CAACrI,GAAG,CAAC;MAC5DlE,WAAW,CAACsD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAIlQ,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAMwI,QAAO,GAAInQ,UAAU,CAAC+B,KAAK,CAAC/B,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC;MAC7DlJ,WAAW,CAACsD,KAAK,CAACiO,SAAS,CAAC,CAACG,QAAQ,CAACzN,GAAG,EAAEyN,QAAQ,CAACxN,GAAG,CAAC;MACxDlE,WAAW,CAACsD,KAAK,CAACkO,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMG,SAAQ,GAAIA,CAAA,KAAM;MACtB,IAAIpQ,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMO,MAAK,GAAI,IAAKhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAE;MACxC1I,UAAU,CAAC+B,KAAK,CAACqC,OAAO,CAAC6D,KAAI,IAAK;QAChCC,MAAM,CAAC+B,MAAM,CAAC,CAAChC,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;MACtC,CAAC;MAEDlE,WAAW,CAACsD,KAAK,CAACmI,SAAS,CAAChC,MAAM;IACpC;IAEA1K,SAAS,CAAC,MAAM;MACd;MACAsD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACLzD,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;MAER0C,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;MACAC,iBAAiB,EAAGzQ,IAAI,IAAKoB,gBAAgB,CAACpB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnEmS,kBAAkB,EAAGzQ,KAAK,IAAK0B,iBAAiB,CAAC1B,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/1f6bf1ef15d9f1b3ded8b72ac5ced68cf69ba5e3b53112ce986c26e75ce025be.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1f6bf1ef15d9f1b3ded8b72ac5ced68cf69ba5e3b53112ce986c26e75ce025be.json
new file mode 100644
index 00000000..c5b99fa9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/1f6bf1ef15d9f1b3ded8b72ac5ced68cf69ba5e3b53112ce986c26e75ce025be.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/21d000d88265bd8d278b2ab1c18c033a7fd9b82f82da6047d222e7b2872588ef.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/21d000d88265bd8d278b2ab1c18c033a7fd9b82f82da6047d222e7b2872588ef.json
new file mode 100644
index 00000000..fb3a9e3a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/21d000d88265bd8d278b2ab1c18c033a7fd9b82f82da6047d222e7b2872588ef.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('straight');\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 const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","getDroneIconSvg","status","colors","active","idle","svgString","getStatusText","statusMap","toggleDroneVisibility","showDrones","Object","values","droneMarkers","forEach","marker","add","remove","toggleDroneInfo","showDroneInfo","getAddModeTip","Marker","position","icon","Icon","size","Size","image","imageSize","title","toFixed","message","push","success","clearTargets","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","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","selectedDroneId","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","drone","drones","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/27d35948c1520ac9402b02e9100683b7129cae88fd6d964b36220816167921b1.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/27d35948c1520ac9402b02e9100683b7129cae88fd6d964b36220816167921b1.json
new file mode 100644
index 00000000..7a7bd059
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/27d35948c1520ac9402b02e9100683b7129cae88fd6d964b36220816167921b1.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/28bf9a68c7cc290acc7ba2b7ff5cced6349c8ae04454931f7fe26c4af6493658.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/28bf9a68c7cc290acc7ba2b7ff5cced6349c8ae04454931f7fe26c4af6493658.json
new file mode 100644
index 00000000..5f2586c9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/28bf9a68c7cc290acc7ba2b7ff5cced6349c8ae04454931f7fe26c4af6493658.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: \"path-points-list\"\n};\nconst _hoisted_7 = {\n class: \"point-info\"\n};\nconst _hoisted_8 = {\n class: \"point-coords\"\n};\nconst _hoisted_9 = {\n class: \"point-type\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_11 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_12 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_13 = {\n class: \"section\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_15 = {\n class: \"path-info\"\n};\nconst _hoisted_16 = {\n class: \"info-item\"\n};\nconst _hoisted_17 = {\n class: \"value\"\n};\nconst _hoisted_18 = {\n class: \"info-item\"\n};\nconst _hoisted_19 = {\n class: \"value\"\n};\nconst _hoisted_20 = {\n class: \"info-item\"\n};\nconst _hoisted_21 = {\n class: \"value\"\n};\nconst _hoisted_22 = {\n class: \"info-item\"\n};\nconst _hoisted_23 = {\n class: \"value\"\n};\nconst _hoisted_24 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_25 = {\n class: \"value\"\n};\nconst _hoisted_26 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_27 = {\n class: \"section\"\n};\nconst _hoisted_28 = {\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[14] || (_cache[14] = _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, [(_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_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_9, _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_10, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_13, [_cache[18] || (_cache[18] = _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[15] || (_cache[15] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [15]\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[16] || (_cache[16] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [16]\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[17] || (_cache[17] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [17]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [_cache[26] || (_cache[26] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_17, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_18, [_cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_19, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_20, [_cache[21] || (_cache[21] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_21, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_22, [_cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_23, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, [_cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_25, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, _cache[24] || (_cache[24] = [_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[25] || (_cache[25] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [25]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_27, [_cache[30] || (_cache[30] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_28, [_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[27] || (_cache[27] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [27]\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[28] || (_cache[28] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [28]\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[29] || (_cache[29] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [29]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n })]);\n}","map":{"version":3,"names":["class","_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","style","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_7","_hoisted_8","_toDisplayString","lng","toFixed","lat","_hoisted_9","icon","circle","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_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_14","_hoisted_15","_hoisted_16","_hoisted_17","getAlgorithmName","_hoisted_18","_hoisted_19","distance","_hoisted_20","_hoisted_21","duration","_hoisted_22","_hoisted_23","pointCount","threatZonesAvoided","_hoisted_24","_hoisted_25","targetOrder","_hoisted_26","_hoisted_27","_hoisted_28","_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
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/3077d38db02d078f16423bccfb63970417195b569345451b50dbded6289f80f6.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3077d38db02d078f16423bccfb63970417195b569345451b50dbded6289f80f6.json
new file mode 100644
index 00000000..8ac0132d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3077d38db02d078f16423bccfb63970417195b569345451b50dbded6289f80f6.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/31e600af61fd8b1391563103404e8f72582c4d4703cd00757f5c3197f6d44664.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/31e600af61fd8b1391563103404e8f72582c4d4703cd00757f5c3197f6d44664.json
new file mode 100644
index 00000000..5a19f6b3
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/31e600af61fd8b1391563103404e8f72582c4d4703cd00757f5c3197f6d44664.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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;;EA2BtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;uBA/F/BC,mBAAA,CA8IM,OA9INC,UA8IM,GA7IJC,mBAAA,YAAe,EACfC,mBAAA,CAwEM,OAxENC,UAwEM,GAvEJF,mBAAA,eAAkB,EAClBC,mBAAA,CAqEM,OArENE,UAqEM,GApEJC,YAAA,CAmEUC,kBAAA;gBAnEQC,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;;;;;uDAQlCrF,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNqF,UA0BM,GAzBJlF,YAAA,CAKEmF,oBAAA;IAJCC,IAAI,EAAElF,MAAA,CAAAC,WAAW;IACjBkF,WAAU,EAAEnF,MAAA,CAAAmF,WAAW;IACvBC,UAAS,EAAEpF,MAAA,CAAAoF,UAAU;IACtBC,GAAG,EAAC;kEAGN3F,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANN8F,UAMM,GALJxF,YAAA,CAIEyF,mBAAA;IAHCC,KAAK,EAAExF,MAAA,CAAAyF,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJhG,mBAAA,YAAe,EACJM,MAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNmG,UAOM,GANJ7F,YAAA,CAKEyF,mBAAA;IAJCC,KAAK,EAAExF,MAAA,CAAA4F,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBnG,mBAAA,cAAiB,EACjBI,YAAA,CAmCYgG,oBAAA;gBAlCD9F,MAAA,CAAA+F,iBAAiB;+DAAjB/F,MAAA,CAAA+F,iBAAiB,GAAA7F,MAAA;IAC1BsF,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DpG,YAAA,CAA4DqG,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAnG,MAAA,IAAEF,MAAA,CAAA+F,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChDvG,YAAA,CAAgEqG,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEpG,MAAA,CAAAkD;;wBAAgB,MAAEmD,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBVvG,YAAA,CAyBUwG,kBAAA;MAzBAC,KAAK,EAAEvG,MAAA,CAAAwG,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf3G,YAAA,CAQe4G,uBAAA;QARDpG,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMY6G,oBAAA;sBANQ3G,MAAA,CAAAwG,QAAQ,CAACd,IAAI;qEAAb1F,MAAA,CAAAwG,QAAQ,CAACd,IAAI,GAAAxF,MAAA;UAAE0G,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxC9G,YAAA,CAAwC+G,oBAAA;YAA7BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAA0C+G,oBAAA;YAA/BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAA2C+G,oBAAA;YAAhCvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAAyC+G,oBAAA;YAA9BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAA0C+G,oBAAA;YAA/BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;;;;;UAGlChH,YAAA,CAOe4G,uBAAA;QAPDpG,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKY6G,oBAAA;sBALQ3G,MAAA,CAAAwG,QAAQ,CAACO,KAAK;qEAAd/G,MAAA,CAAAwG,QAAQ,CAACO,KAAK,GAAA7G,MAAA;UAAE0G,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArC9G,YAAA,CAAqC+G,oBAAA;YAA1BvG,KAAK,EAAC,KAAK;YAACwG,KAAK,EAAC;cAC7BhH,YAAA,CAAwC+G,oBAAA;YAA7BvG,KAAK,EAAC,KAAK;YAACwG,KAAK,EAAC;cAC7BhH,YAAA,CAAsC+G,oBAAA;YAA3BvG,KAAK,EAAC,KAAK;YAACwG,KAAK,EAAC;cAC7BhH,YAAA,CAA2C+G,oBAAA;YAAhCvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;;;;;UAGlChH,YAAA,CAMe4G,uBAAA;QANDpG,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEkH,mBAAA;sBAHShH,MAAA,CAAAwG,QAAQ,CAACS,WAAW;qEAApBjH,MAAA,CAAAwG,QAAQ,CAACS,WAAW,GAAA/G,MAAA;UAC7BwF,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/3381f5439f3226c965dab24899c87ce04e99a36fcc9425844c3407a3cfe0bc98.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3381f5439f3226c965dab24899c87ce04e99a36fcc9425844c3407a3cfe0bc98.json
new file mode 100644
index 00000000..08df0799
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3381f5439f3226c965dab24899c87ce04e99a36fcc9425844c3407a3cfe0bc98.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/35eda026348c09fbfacb90744b6ab83bf970bec5e2793bfdd39d153318a34403.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/35eda026348c09fbfacb90744b6ab83bf970bec5e2793bfdd39d153318a34403.json
new file mode 100644
index 00000000..dab39039
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/35eda026348c09fbfacb90744b6ab83bf970bec5e2793bfdd39d153318a34403.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: 11,\n center: [112.982279, 28.19409],\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/363b4e75c87e2ecd82361533567be66a39b9a16b45a040f3c10ce22199369cb5.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/363b4e75c87e2ecd82361533567be66a39b9a16b45a040f3c10ce22199369cb5.json
new file mode 100644
index 00000000..442cb1d6
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/363b4e75c87e2ecd82361533567be66a39b9a16b45a040f3c10ce22199369cb5.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/3936c5d0ea46247e585f97acc44fc57e2dc2e87226d05d4dc08022af67ee1665.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3936c5d0ea46247e585f97acc44fc57e2dc2e87226d05d4dc08022af67ee1665.json
new file mode 100644
index 00000000..966b77ef
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/3936c5d0ea46247e585f97acc44fc57e2dc2e87226d05d4dc08022af67ee1665.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 // 并行加载威胁区和路径数据\n const [threatZonesResult, pathPlansResult] = await Promise.allSettled([loadThreatZones(), loadPathPlans()]);\n if (threatZonesResult.status === 'fulfilled') {\n console.log('威胁区数据加载成功');\n } else {\n console.error('威胁区数据加载失败:', threatZonesResult.reason);\n }\n if (pathPlansResult.status === 'fulfilled') {\n console.log('路径数据加载成功');\n } else {\n console.error('路径数据加载失败:', pathPlansResult.reason);\n }\n\n // 加载无人机定位点\n await loadDronePositions();\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\n\n // 删除重复的loadThreatZones函数,使用后面更完整的版本\n\n // 加载路径规划数据\n const loadPathPlans = async () => {\n try {\n const response = await fetch('/api/path-planning');\n const result = await response.json();\n if (result.success && result.data) {\n // 显示所有已规划的路径\n displayAllPaths(result.data);\n console.log('已加载路径数据:', result.data.length, '个');\n }\n } catch (error) {\n console.error('加载路径数据失败:', error);\n }\n };\n\n // 加载无人机定位点\n const loadDronePositions = async () => {\n try {\n // 从store中获取无人机数据\n await store.dispatch('fetchDrones');\n const drones = store.state.drones || [];\n\n // 显示无人机标记\n displayDroneMarkers(drones);\n console.log('已加载无人机数据:', drones.length, '个');\n } catch (error) {\n console.error('加载无人机数据失败:', error);\n }\n };\n\n // 显示所有威胁区\n const displayAllThreatZones = () => {\n if (!mapInstance.value || !window.AMap) return;\n console.log('开始显示威胁区:', threatZones.value.length, '个');\n threatZones.value.forEach(zone => {\n try {\n displayThreatZone(zone);\n } catch (error) {\n console.error('显示威胁区失败:', zone.id, error);\n }\n });\n };\n\n // 显示单个威胁区\n const displayThreatZone = zone => {\n if (!mapInstance.value || !zone || !zone.geometry) return;\n const AMap = window.AMap;\n const {\n geometry,\n type,\n level\n } = zone;\n const config = threatTypeConfig[type] || {};\n const levelConfig = threatLevelConfig[level] || {};\n let overlay = null;\n try {\n // 根据几何类型创建覆盖物\n switch (geometry.type) {\n case 'circle':\n overlay = new AMap.Circle({\n center: [geometry.center.lng, geometry.center.lat],\n radius: geometry.radius,\n fillColor: config.color || '#FF6B6B',\n fillOpacity: levelConfig.opacity || 0.5,\n strokeColor: config.color || '#FF6B6B',\n strokeWeight: 3,\n strokeOpacity: 1\n });\n break;\n case 'polygon':\n const polygonPath = geometry.coordinates.map(coord => [coord.lng, coord.lat]);\n overlay = new AMap.Polygon({\n path: polygonPath,\n fillColor: config.color || '#FF6B6B',\n fillOpacity: levelConfig.opacity || 0.5,\n strokeColor: config.color || '#FF6B6B',\n strokeWeight: 3,\n strokeOpacity: 1\n });\n break;\n case 'rectangle':\n const bounds = new AMap.Bounds([geometry.southwest.lng, geometry.southwest.lat], [geometry.northeast.lng, geometry.northeast.lat]);\n overlay = new AMap.Rectangle({\n bounds: bounds,\n fillColor: config.color || '#FF6B6B',\n fillOpacity: levelConfig.opacity || 0.5,\n strokeColor: config.color || '#FF6B6B',\n strokeWeight: 3,\n strokeOpacity: 1\n });\n break;\n }\n if (overlay) {\n mapInstance.value.add(overlay);\n zoneOverlays[zone.id] = overlay;\n\n // 添加点击事件\n overlay.on('click', () => {\n selectedZoneId.value = zone.id;\n showZoneInfo(zone);\n });\n console.log(`威胁区 ${zone.id} 显示成功`);\n }\n } catch (error) {\n console.error(`威胁区 ${zone.id} 显示失败:`, error);\n }\n };\n\n // 显示所有路径\n const displayAllPaths = paths => {\n if (!mapInstance.value || !window.AMap || !paths) return;\n console.log('开始显示路径:', paths.length, '个');\n paths.forEach((path, index) => {\n try {\n displayPath(path, index);\n } catch (error) {\n console.error('显示路径失败:', path.id, error);\n }\n });\n };\n\n // 显示单个路径\n const displayPath = (pathData, index) => {\n if (!mapInstance.value || !pathData.path_points) return;\n const AMap = window.AMap;\n const pathPoints = JSON.parse(pathData.path_points);\n if (pathPoints.length < 2) return;\n\n // 创建路径线\n const pathCoords = pathPoints.map(point => [point.lng, point.lat]);\n\n // 根据路径状态设置颜色\n let strokeColor = '#52C41A'; // 默认绿色\n switch (pathData.status) {\n case 'executing':\n strokeColor = '#1890FF'; // 蓝色表示正在执行\n break;\n case 'completed':\n strokeColor = '#52C41A'; // 绿色表示已完成\n break;\n case 'planned':\n strokeColor = '#FAAD14'; // 黄色表示已规划\n break;\n case 'failed':\n strokeColor = '#F5222D'; // 红色表示失败\n break;\n }\n const pathLine = new AMap.Polyline({\n path: pathCoords,\n strokeColor,\n strokeWeight: 3,\n strokeStyle: 'solid',\n strokeOpacity: 0.8\n });\n mapInstance.value.add(pathLine);\n\n // 添加起点和终点标记\n const startMarker = new AMap.Marker({\n position: [pathPoints[0].lng, pathPoints[0].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(24, 24)\n }),\n title: `路径${pathData.id}起点`\n });\n const endMarker = new AMap.Marker({\n position: [pathPoints[pathPoints.length - 1].lng, pathPoints[pathPoints.length - 1].lat],\n icon: new AMap.Icon({\n size: new AMap.Size(24, 24),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(24, 24)\n }),\n title: `路径${pathData.id}终点`\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n console.log(`路径 ${pathData.id} 显示成功`);\n };\n\n // 显示无人机标记\n const displayDroneMarkers = drones => {\n if (!mapInstance.value || !window.AMap || !Array.isArray(drones)) return;\n console.log('开始显示无人机标记:', drones.length, '个');\n drones.forEach(drone => {\n try {\n displayDroneMarker(drone);\n } catch (error) {\n console.error('显示无人机标记失败:', drone.id, error);\n }\n });\n };\n\n // 显示单个无人机标记\n const displayDroneMarker = drone => {\n if (!mapInstance.value || !drone.position) return;\n const AMap = window.AMap;\n\n // 根据无人机状态设置颜色\n let fillColor = '#52C41A'; // 默认绿色\n switch (drone.status) {\n case 'flying':\n fillColor = '#1890FF'; // 蓝色表示飞行中\n break;\n case 'idle':\n fillColor = '#52C41A'; // 绿色表示待命\n break;\n case 'maintenance':\n fillColor = '#FAAD14'; // 黄色表示维护\n break;\n case 'error':\n fillColor = '#F5222D'; // 红色表示故障\n break;\n }\n const marker = new AMap.Marker({\n position: [drone.position.lng, drone.position.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: `无人机${drone.id} - ${drone.name}`\n });\n mapInstance.value.add(marker);\n\n // 添加信息窗口\n const infoWindow = new AMap.InfoWindow({\n content: `\n \n
无人机 ${drone.name}
\n
ID: ${drone.id}
\n
状态: ${drone.status}
\n
电量: ${drone.battery}%
\n
高度: ${drone.altitude}m
\n
\n `\n });\n marker.on('click', () => {\n infoWindow.open(mapInstance.value, [drone.position.lng, drone.position.lat]);\n });\n console.log(`无人机 ${drone.id} 标记显示成功`);\n };\n\n // 显示威胁区信息\n const showZoneInfo = zone => {\n const AMap = window.AMap;\n const content = `\n \n
${threatTypeConfig[zone.type]?.name || '未知威胁'}
\n
等级: ${threatLevelConfig[zone.level]?.name || '未知等级'}
\n
描述: ${zone.description || '无描述'}
\n
创建时间: ${new Date(zone.createdAt).toLocaleString()}
\n
\n `;\n const infoWindow = new AMap.InfoWindow({\n content: content\n });\n\n // 根据威胁区类型确定信息窗口位置\n let position;\n if (zone.geometry.type === 'circle') {\n position = [zone.geometry.center.lng, zone.geometry.center.lat];\n } else if (zone.geometry.type === 'polygon' && zone.geometry.coordinates.length > 0) {\n position = [zone.geometry.coordinates[0].lng, zone.geometry.coordinates[0].lat];\n } else if (zone.geometry.type === 'rectangle') {\n const centerLng = (zone.geometry.southwest.lng + zone.geometry.northeast.lng) / 2;\n const centerLat = (zone.geometry.southwest.lat + zone.geometry.northeast.lat) / 2;\n position = [centerLng, centerLat];\n }\n if (position) {\n infoWindow.open(mapInstance.value, position);\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","threatZonesResult","pathPlansResult","Promise","allSettled","loadThreatZones","loadPathPlans","status","reason","loadDronePositions","response","fetch","result","json","success","data","displayAllPaths","length","dispatch","displayDroneMarkers","displayAllThreatZones","forEach","zone","displayThreatZone","config","levelConfig","overlay","Circle","center","lng","lat","radius","fillColor","fillOpacity","strokeColor","strokeWeight","strokeOpacity","polygonPath","coordinates","coord","Polygon","path","bounds","Bounds","southwest","northeast","Rectangle","add","showZoneInfo","paths","index","displayPath","pathData","path_points","JSON","parse","pathCoords","point","Polyline","strokeStyle","startMarker","Marker","position","icon","Icon","size","Size","image","imageSize","title","endMarker","Array","isArray","drone","displayDroneMarker","marker","infoWindow","InfoWindow","content","battery","altitude","open","createdAt","toLocaleString","centerLng","centerLat","onMapClick","e","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","handleTabClick","close","toggleAddMode","initDroneMarkers","Object","values","remove","longitude","latitude","getDroneIconSvg","isCustom","getStatusText","toFixed","offset","Pixel","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","push","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","timeRange","method","headers","body","stringify","statusText","ok","errorText","text","Error","renderThreatZoneOnMap","getCenter","getRadius","getPath","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","existingIndex","findIndex","z","selectZone","otherOverlay","deleteZone","filter","editZone","saveEditedZone","find","skipConfirm","zoneIds","ids","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","removePoint","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/46b69f59215dfb1d2c9b05e9866e5d78e5f668ddb76a936c1e2a2ca2e6aa7abe.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/46b69f59215dfb1d2c9b05e9866e5d78e5f668ddb76a936c1e2a2ca2e6aa7abe.json
new file mode 100644
index 00000000..73fa630b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/46b69f59215dfb1d2c9b05e9866e5d78e5f668ddb76a936c1e2a2ca2e6aa7abe.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据\n const planningData = {\n droneId: droneId,\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","endPoint","planningData","droneId","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/4ab6baf9f54023ab487ef320d187a2b364cef48e19ce522d4c9a11b2a0f6931c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4ab6baf9f54023ab487ef320d187a2b364cef48e19ce522d4c9a11b2a0f6931c.json
new file mode 100644
index 00000000..972f5403
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/4ab6baf9f54023ab487ef320d187a2b364cef48e19ce522d4c9a11b2a0f6931c.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: 11,\n center: [112.982279, 28.19409],\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\n // 主动获取无人机数据,而不是直接初始化\n fetchDrones();\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","fetchDrones","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/5797ba56b80a790eb59dba88db739e0625000e92b50bd29ab8f902317837b291.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5797ba56b80a790eb59dba88db739e0625000e92b50bd29ab8f902317837b291.json
new file mode 100644
index 00000000..c69078ae
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5797ba56b80a790eb59dba88db739e0625000e92b50bd29ab8f902317837b291.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: \"path-points-list\"\n};\nconst _hoisted_7 = {\n class: \"point-info\"\n};\nconst _hoisted_8 = {\n class: \"point-coords\"\n};\nconst _hoisted_9 = {\n class: \"point-type\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"empty-hint\"\n};\nconst _hoisted_11 = {\n key: 1,\n class: \"hint\"\n};\nconst _hoisted_12 = {\n key: 2,\n class: \"summary\"\n};\nconst _hoisted_13 = {\n class: \"section\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_15 = {\n class: \"path-info\"\n};\nconst _hoisted_16 = {\n class: \"info-item\"\n};\nconst _hoisted_17 = {\n class: \"value\"\n};\nconst _hoisted_18 = {\n class: \"info-item\"\n};\nconst _hoisted_19 = {\n class: \"value\"\n};\nconst _hoisted_20 = {\n class: \"info-item\"\n};\nconst _hoisted_21 = {\n class: \"value\"\n};\nconst _hoisted_22 = {\n class: \"info-item\"\n};\nconst _hoisted_23 = {\n class: \"value\"\n};\nconst _hoisted_24 = {\n key: 0,\n class: \"info-item threat-avoided\"\n};\nconst _hoisted_25 = {\n class: \"value\"\n};\nconst _hoisted_26 = {\n key: 1,\n class: \"info-item\"\n};\nconst _hoisted_27 = {\n class: \"section\"\n};\nconst _hoisted_28 = {\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[14] || (_cache[14] = _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, [(_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_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_9, _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_10, \" 点击地图添加路径点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length === 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 再添加至少1个目标点 \")) : _createCommentVNode(\"v-if\", true), $props.pathPoints.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, \" 总计: 1个起点 + \" + _toDisplayString($props.pathPoints.length - 1) + \"个目标点 \", 1 /* TEXT */)) : _createCommentVNode(\"v-if\", true)])]), _createElementVNode(\"div\", _hoisted_13, [_cache[18] || (_cache[18] = _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[15] || (_cache[15] = _createElementVNode(\"div\", {\n class: \"algorithm-desc\"\n }, \" 智能避开威胁区域,优化访问顺序 \", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [15]\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[16] || (_cache[16] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"米\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [16]\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[17] || (_cache[17] = _createElementVNode(\"span\", {\n class: \"unit\"\n }, \"m/s\", -1 /* HOISTED */))]),\n _: 1 /* STABLE */,\n __: [17]\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [_cache[26] || (_cache[26] = _createElementVNode(\"h4\", null, \"路径规划结果\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"算法:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_17, _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_18, [_cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"总距离:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_19, _toDisplayString(($props.pathInfo.distance / 1000).toFixed(2)) + \" km\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_20, [_cache[21] || (_cache[21] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"预计时间:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_21, _toDisplayString($props.pathInfo.duration) + \" 分钟\", 1 /* TEXT */)]), _createElementVNode(\"div\", _hoisted_22, [_cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"路径点数:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_23, _toDisplayString($props.pathInfo.pointCount) + \" 个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, [_cache[23] || (_cache[23] = _createElementVNode(\"span\", {\n class: \"label\"\n }, \"避开威胁:\", -1 /* HOISTED */)), _createElementVNode(\"span\", _hoisted_25, _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \" 个区域\", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true), $props.pathInfo.targetOrder && $props.pathInfo.targetOrder.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, _cache[24] || (_cache[24] = [_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[25] || (_cache[25] = [_createTextVNode(\" 执行路径规划 \")])),\n _: 1 /* STABLE */,\n __: [25]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_27, [_cache[30] || (_cache[30] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_28, [_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[27] || (_cache[27] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [27]\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[28] || (_cache[28] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [28]\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[29] || (_cache[29] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [29]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n })]);\n}","map":{"version":3,"names":["class","_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","style","default","_hoisted_5","$props","addMode","disabled","pathPoints","length","_hoisted_6","_Fragment","_renderList","point","index","key","_normalizeClass","_hoisted_7","_hoisted_8","_toDisplayString","lng","toFixed","lat","_hoisted_9","icon","circle","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_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_14","_hoisted_15","_hoisted_16","_hoisted_17","getAlgorithmName","_hoisted_18","_hoisted_19","distance","_hoisted_20","_hoisted_21","duration","_hoisted_22","_hoisted_23","pointCount","threatZonesAvoided","_hoisted_24","_hoisted_25","targetOrder","_hoisted_26","_hoisted_27","_hoisted_28","_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
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/5b376c6bc07dbac9c0fe44aa638eabbad77bcb4a42c968cf8d402983cc8725c3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5b376c6bc07dbac9c0fe44aa638eabbad77bcb4a42c968cf8d402983cc8725c3.json
new file mode 100644
index 00000000..b6eb1046
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5b376c6bc07dbac9c0fe44aa638eabbad77bcb4a42c968cf8d402983cc8725c3.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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('后端响应错误:', response.status, errorText);\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/5c862baa3fbcb9cc405d711dcd7c345b85d7d8990efa730b9be4e22d81250779.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5c862baa3fbcb9cc405d711dcd7c345b85d7d8990efa730b9be4e22d81250779.json
new file mode 100644
index 00000000..c466f8ab
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5c862baa3fbcb9cc405d711dcd7c345b85d7d8990efa730b9be4e22d81250779.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","length","handleTabClick","close","toggleAddMode","initDroneMarkers","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/5daa5339f7b0b0b3ad0cdff54d0e17bfc2952f6639334c7cb7e75c7168be28fa.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5daa5339f7b0b0b3ad0cdff54d0e17bfc2952f6639334c7cb7e75c7168be28fa.json
new file mode 100644
index 00000000..37196852
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5daa5339f7b0b0b3ad0cdff54d0e17bfc2952f6639334c7cb7e75c7168be28fa.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('straight');\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","showDrones","showDroneInfo","drones","selectedDroneId","toggleDroneVisibility","toggleDroneInfo","selectDrone","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 "],"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/5e981be457d6ce684d206b3298cb4672224e3d7ceddab40651943b9f1c5ddf20.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5e981be457d6ce684d206b3298cb4672224e3d7ceddab40651943b9f1c5ddf20.json
new file mode 100644
index 00000000..b0034261
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/5e981be457d6ce684d206b3298cb4672224e3d7ceddab40651943b9f1c5ddf20.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/63062db9784207495b337264fde56ea656241fb8070b7592b33582c8e682adc3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/63062db9784207495b337264fde56ea656241fb8070b7592b33582c8e682adc3.json
new file mode 100644
index 00000000..8ac9da9e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/63062db9784207495b337264fde56ea656241fb8070b7592b33582c8e682adc3.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": _ctx.showDrones,\n \"show-drone-info\": _ctx.showDroneInfo,\n onToggleDroneVisibility: _ctx.toggleDroneVisibility,\n onToggleDroneInfo: _ctx.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: _ctx.drones,\n \"selected-drone-id\": _ctx.selectedDroneId,\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 onSelectDrone: _ctx.selectDrone,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/649cb0d6b37633456d7884c68f3b3e43c9b96cd953704cf7a3ed5ccb8a3c821c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/649cb0d6b37633456d7884c68f3b3e43c9b96cd953704cf7a3ed5ccb8a3c821c.json
new file mode 100644
index 00000000..f2b4945b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/649cb0d6b37633456d7884c68f3b3e43c9b96cd953704cf7a3ed5ccb8a3c821c.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('straight');\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,\n geometry_data: 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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\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","renderPlannedPath","plannedPath","pathCoords","startMarker","endMarker","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","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 "],"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/64eaea4d016edeaf510831bd95d9b8144f03d90e84704bb8954c42ffd16afe90.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/64eaea4d016edeaf510831bd95d9b8144f03d90e84704bb8954c42ffd16afe90.json
new file mode 100644
index 00000000..5b90bd4d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/64eaea4d016edeaf510831bd95d9b8144f03d90e84704bb8954c42ffd16afe90.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/650992216310c50605d389e6a49cf05b5f8bafe69b5488751efd34be6d982e90.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/650992216310c50605d389e6a49cf05b5f8bafe69b5488751efd34be6d982e90.json
new file mode 100644
index 00000000..4efe6e15
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/650992216310c50605d389e6a49cf05b5f8bafe69b5488751efd34be6d982e90.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/652f38923d16a9f6392b6d5c82fd86a618875855628e19a0a5529d32c6d34d94.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/652f38923d16a9f6392b6d5c82fd86a618875855628e19a0a5529d32c6d34d94.json
new file mode 100644
index 00000000..b8122c3e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/652f38923d16a9f6392b6d5c82fd86a618875855628e19a0a5529d32c6d34d94.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"mappings":";;EACOA,KAAK,EAAC;AAAkB;;EAEtBA,KAAK,EAAC;AAAY;;EAEhBA,KAAK,EAAC;AAAgB;;EAIhBA,KAAK,EAAC;AAAwB;;EAgB9BA,KAAK,EAAC;AAAwB;;EA8B9BA,KAAK,EAAC;AAAwB;;EA8BtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;uBAtG/BC,mBAAA,CAqJM,OArJNC,UAqJM,GApJJC,mBAAA,YAAe,EACfC,mBAAA,CA+EM,OA/ENC,UA+EM,GA9EJF,mBAAA,eAAkB,EAClBC,mBAAA,CA4EM,OA5ENE,UA4EM,GA3EJC,YAAA,CA0EUC,kBAAA;gBA1EQC,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,CAacO,sBAAA;MAbDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAWM,CAXNZ,mBAAA,CAWM,OAXNa,UAWM,GAVJV,YAAA,CASEW,0BAAA;QARCC,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9BC,cAAa,EAAEZ,MAAA,CAAAa,YAAY;QAC3B,UAAQ,EAAEb,MAAA,CAAAc,OAAO;QACjB,eAAa,EAAEd,MAAA,CAAAe,YAAY;QAC3B,aAAW,EAAEf,MAAA,CAAAgB,UAAU;QACvB,iBAAe,EAAEhB,MAAA,CAAAiB,aAAa;QAC9BC,uBAAuB,EAAElB,MAAA,CAAAmB,qBAAqB;QAC9CC,iBAAiB,EAAEpB,MAAA,CAAAqB;;;QAK1B3B,mBAAA,aAAgB,EAChBI,YAAA,CA2BcO,sBAAA;MA3BDC,KAAK,EAAC,OAAO;MAACC,IAAI,EAAC;;wBAC9B,MAyBM,CAzBNZ,mBAAA,CAyBM,OAzBN2B,UAyBM,GAxBJxB,YAAA,CAuBEyB,4BAAA;QAtBC,cAAY,EAAEvB,MAAA,CAAAwB,WAAW;QACzB,kBAAgB,EAAExB,MAAA,CAAAyB,cAAc;QAChC,qBAAmB,EAAEzB,MAAA,CAAA0B,iBAAiB;QACtC,WAAS,EAAE1B,MAAA,CAAA2B,QAAQ;QACnB,cAAY,EAAE3B,MAAA,CAAA4B,WAAW;QACzB,eAAa,EAAE5B,MAAA,CAAA6B,YAAY;QAC3B,oBAAkB,EAAE7B,MAAA,CAAA8B,iBAAiB;QACrC,mBAAiB,EAAE9B,MAAA,CAAA+B,eAAe;QAClC,gBAAc,EAAE/B,MAAA,CAAAgC,aAAa;QAC7BC,oBAAqB,EAAEjC,MAAA,CAAAkC,sBAAsB;QAC7CC,qBAAsB,EAAEnC,MAAA,CAAAoC,uBAAuB;QAC/CC,aAAa,EAAErC,MAAA,CAAAsC,WAAW;QAC1BC,YAAW,EAAEvC,MAAA,CAAAwC,UAAU;QACvBC,YAAW,EAAEzC,MAAA,CAAA0C,UAAU;QACvBC,UAAS,EAAE3C,MAAA,CAAA4C,QAAQ;QACnBC,eAAe,EAAE7C,MAAA,CAAA8C,aAAa;QAC9BC,uBAAuB,EAAE/C,MAAA,CAAAgD,qBAAqB;QAC9CC,oBAAoB,EAAEjD,MAAA,CAAAkD,kBAAkB;QACxCC,yBAAyB,EAAEnD,MAAA,CAAAoD,uBAAuB;QAClDC,uBAAwB,EAAErD,MAAA,CAAAsD,qBAAqB;QAC/CC,gBAAgB,EAAEvD,MAAA,CAAAwD,cAAc;QAChCC,YAAY,EAAEzD,MAAA,CAAA0D;;;QAKrBhE,mBAAA,YAAe,EACfI,YAAA,CAyBcO,sBAAA;MAzBDC,KAAK,EAAC,MAAM;MAACC,IAAI,EAAC;;wBAC7B,MAuBM,CAvBNZ,mBAAA,CAuBM,OAvBNgE,UAuBM,GAtBJ7D,YAAA,CAqBE8D,8BAAA;QApBCC,MAAM,EAAE7D,MAAA,CAAA6D,MAAM;QACd,mBAAiB,EAAE7D,MAAA,CAAA8D,eAAe;QAClC,aAAW,EAAE9D,MAAA,CAAA+D,UAAU;QACvB,UAAQ,EAAE/D,MAAA,CAAAc,OAAO;QACjB,oBAAkB,EAAEd,MAAA,CAAAgE,iBAAiB;QACrC,iBAAe,EAAEhE,MAAA,CAAAiE,cAAc;QAC/B,cAAY,EAAEjE,MAAA,CAAAkE,WAAW;QACzB,WAAS,EAAElE,MAAA,CAAAmE,QAAQ;QACnBzD,eAAe,EAAEV,MAAA,CAAAW,aAAa;QAC9ByD,UAAS,EAAEpE,MAAA,CAAAqE,QAAQ;QACnBC,UAAS,EAAEtE,MAAA,CAAAuE,QAAQ;QACnBC,aAAY,EAAExE,MAAA,CAAAyE,WAAW;QACzBC,aAAY,EAAE1E,MAAA,CAAA2E,WAAW;QACzBC,eAAe,EAAE5E,MAAA,CAAA6E,aAAa;QAC9BC,aAAa,EAAE9E,MAAA,CAAA+E,WAAW;QAC1BC,WAAW,EAAEhF,MAAA,CAAAiF,SAAS;QACtBC,aAAY,EAAElF,MAAA,CAAAmF,WAAW;QACzBC,yBAAyB,EAAEpF,MAAA,CAAAqF,uBAAuB;QAClDC,sBAAsB,EAAEtF,MAAA,CAAAuF,oBAAoB;QAC5CC,mBAAmB,EAAExF,MAAA,CAAAyF;;;;;uDAQlC/F,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BN+F,UA0BM,GAzBJ5F,YAAA,CAKE6F,oBAAA;IAJCC,IAAI,EAAE5F,MAAA,CAAAC,WAAW;IACjB4F,WAAU,EAAE7F,MAAA,CAAA6F,WAAW;IACvBC,UAAS,EAAE9F,MAAA,CAAA8F,UAAU;IACtBC,GAAG,EAAC;kEAGNrG,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANNwG,UAMM,GALJlG,YAAA,CAIEmG,mBAAA;IAHCC,KAAK,EAAElG,MAAA,CAAAmG,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJ1G,mBAAA,YAAe,EACJM,MAAA,CAAA2B,QAAQ,I,cAAnBnC,mBAAA,CAOM,OAPN6G,UAOM,GANJvG,YAAA,CAKEmG,mBAAA;IAJCC,KAAK,EAAElG,MAAA,CAAAsG,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjB7G,mBAAA,cAAiB,EACjBI,YAAA,CAmCY0G,oBAAA;gBAlCDxG,MAAA,CAAAyG,iBAAiB;+DAAjBzG,MAAA,CAAAyG,iBAAiB,GAAAvG,MAAA;IAC1BgG,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5D9G,YAAA,CAA4D+G,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAA7G,MAAA,IAAEF,MAAA,CAAAyG,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChDjH,YAAA,CAAgE+G,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAE9G,MAAA,CAAAwD;;wBAAgB,MAAEuD,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBVjH,YAAA,CAyBUkH,kBAAA;MAzBAC,KAAK,EAAEjH,MAAA,CAAAkH,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARfrH,YAAA,CAQesH,uBAAA;QARD9G,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMYuH,oBAAA;sBANQrH,MAAA,CAAAkH,QAAQ,CAACd,IAAI;qEAAbpG,MAAA,CAAAkH,QAAQ,CAACd,IAAI,GAAAlG,MAAA;UAAEoH,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxCxH,YAAA,CAAwCyH,oBAAA;YAA7BjH,KAAK,EAAC,MAAM;YAACkH,KAAK,EAAC;cAC9B1H,YAAA,CAA0CyH,oBAAA;YAA/BjH,KAAK,EAAC,MAAM;YAACkH,KAAK,EAAC;cAC9B1H,YAAA,CAA2CyH,oBAAA;YAAhCjH,KAAK,EAAC,MAAM;YAACkH,KAAK,EAAC;cAC9B1H,YAAA,CAAyCyH,oBAAA;YAA9BjH,KAAK,EAAC,MAAM;YAACkH,KAAK,EAAC;cAC9B1H,YAAA,CAA0CyH,oBAAA;YAA/BjH,KAAK,EAAC,MAAM;YAACkH,KAAK,EAAC;;;;;UAGlC1H,YAAA,CAOesH,uBAAA;QAPD9G,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKYuH,oBAAA;sBALQrH,MAAA,CAAAkH,QAAQ,CAACO,KAAK;qEAAdzH,MAAA,CAAAkH,QAAQ,CAACO,KAAK,GAAAvH,MAAA;UAAEoH,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArCxH,YAAA,CAAqCyH,oBAAA;YAA1BjH,KAAK,EAAC,KAAK;YAACkH,KAAK,EAAC;cAC7B1H,YAAA,CAAwCyH,oBAAA;YAA7BjH,KAAK,EAAC,KAAK;YAACkH,KAAK,EAAC;cAC7B1H,YAAA,CAAsCyH,oBAAA;YAA3BjH,KAAK,EAAC,KAAK;YAACkH,KAAK,EAAC;cAC7B1H,YAAA,CAA2CyH,oBAAA;YAAhCjH,KAAK,EAAC,MAAM;YAACkH,KAAK,EAAC;;;;;UAGlC1H,YAAA,CAMesH,uBAAA;QAND9G,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIE4H,mBAAA;sBAHS1H,MAAA,CAAAkH,QAAQ,CAACS,WAAW;qEAApB3H,MAAA,CAAAkH,QAAQ,CAACS,WAAW,GAAAzH,MAAA;UAC7BkG,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/6721ed1266a58e3d548ea35e231892112fa873ed1b81dbf2ce70b31988878441.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6721ed1266a58e3d548ea35e231892112fa873ed1b81dbf2ce70b31988878441.json
new file mode 100644
index 00000000..44ca71d7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/6721ed1266a58e3d548ea35e231892112fa873ed1b81dbf2ce70b31988878441.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": _ctx.showDrones,\n \"show-drone-info\": _ctx.showDroneInfo,\n onToggleDroneVisibility: _ctx.toggleDroneVisibility,\n onToggleDroneInfo: _ctx.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: _ctx.drones,\n \"selected-drone-id\": _ctx.selectedDroneId,\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 onSelectDrone: _ctx.selectDrone,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/68fd93e8996e13949db3123eea4d36d0f37f8efd619c57df3c1b433b813d8061.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/68fd93e8996e13949db3123eea4d36d0f37f8efd619c57df3c1b433b813d8061.json
new file mode 100644
index 00000000..bbcd828c
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/68fd93e8996e13949db3123eea4d36d0f37f8efd619c57df3c1b433b813d8061.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 markers = ref({});\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: 11,\n center: [112.982279, 28.19409],\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\n // 主动获取无人机数据,而不是直接初始化\n fetchDrones();\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","markers","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","fetchDrones","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/69878f19d93c475bf356e9f9716b944aaa749444d8af85982c0a3f47aac66e30.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/69878f19d93c475bf356e9f9716b944aaa749444d8af85982c0a3f47aac66e30.json
new file mode 100644
index 00000000..520097e9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/69878f19d93c475bf356e9f9716b944aaa749444d8af85982c0a3f47aac66e30.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/70d925040fa0171937ef671da0052103b8750f33d88674b942e79c3888deafc3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70d925040fa0171937ef671da0052103b8750f33d88674b942e79c3888deafc3.json
new file mode 100644
index 00000000..9b1e29e9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/70d925040fa0171937ef671da0052103b8750f33d88674b942e79c3888deafc3.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/7612397d0b7bfee9f7c2caa5176993bb63d3d0ff3de24fc635583773d81c1a15.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7612397d0b7bfee9f7c2caa5176993bb63d3d0ff3de24fc635583773d81c1a15.json
new file mode 100644
index 00000000..7898ad09
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7612397d0b7bfee9f7c2caa5176993bb63d3d0ff3de24fc635583773d81c1a15.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/777d4357581ecbb759051851d175e335628a3f8f2f524ad5a11c27a9b0dde0e9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/777d4357581ecbb759051851d175e335628a3f8f2f524ad5a11c27a9b0dde0e9.json
new file mode 100644
index 00000000..1df16a69
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/777d4357581ecbb759051851d175e335628a3f8f2f524ad5a11c27a9b0dde0e9.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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 if (!selectedDroneId.value) {\n ElMessage.warning('请先选择无人机');\n return;\n }\n try {\n console.log('开始路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点:', pathPoints.value);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据\n const planningData = {\n droneId: selectedDroneId.value,\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry: zone.geometry\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 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","endPoint","planningData","droneId","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/78ac9cde6f89d94e74a329a52015b6ae9632d23d92af7f5467d4e4a76d775567.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/78ac9cde6f89d94e74a329a52015b6ae9632d23d92af7f5467d4e4a76d775567.json
new file mode 100644
index 00000000..721b2e52
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/78ac9cde6f89d94e74a329a52015b6ae9632d23d92af7f5467d4e4a76d775567.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/7b1bf5b9ece377c626c68009e68ee9050bc5b8a9daec010fa5cac5bbf0c5b971.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7b1bf5b9ece377c626c68009e68ee9050bc5b8a9daec010fa5cac5bbf0c5b971.json
new file mode 100644
index 00000000..6691d1f5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7b1bf5b9ece377c626c68009e68ee9050bc5b8a9daec010fa5cac5bbf0c5b971.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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;;EA2BtCA,KAAK,EAAC;AAAe;;;EASJA,KAAK,EAAC;;;;EASLA,KAAK,EAAC;;;;;;;;;;;;;;;;;uBA/F/BC,mBAAA,CA8IM,OA9INC,UA8IM,GA7IJC,mBAAA,YAAe,EACfC,mBAAA,CAwEM,OAxENC,UAwEM,GAvEJF,mBAAA,eAAkB,EAClBC,mBAAA,CAqEM,OArENE,UAqEM,GApEJC,YAAA,CAmEUC,kBAAA;gBAnEQC,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;;;;;uDAQlCrF,mBAAA,YAAe,EACfC,mBAAA,CA0BM,OA1BNqF,UA0BM,GAzBJlF,YAAA,CAKEmF,oBAAA;IAJCC,IAAI,EAAElF,MAAA,CAAAC,WAAW;IACjBkF,WAAU,EAAEnF,MAAA,CAAAmF,WAAW;IACvBC,UAAS,EAAEpF,MAAA,CAAAoF,UAAU;IACtBC,GAAG,EAAC;kEAGN3F,mBAAA,YAAe,EACJM,MAAA,CAAAc,OAAO,I,cAAlBtB,mBAAA,CAMM,OANN8F,UAMM,GALJxF,YAAA,CAIEyF,mBAAA;IAHCC,KAAK,EAAExF,MAAA,CAAAyF,aAAa;IACrBC,IAAI,EAAC,MAAM;IACX,WAAS,EAAT;6EAIJhG,mBAAA,YAAe,EACJM,MAAA,CAAAqB,QAAQ,I,cAAnB7B,mBAAA,CAOM,OAPNmG,UAOM,GANJ7F,YAAA,CAKEyF,mBAAA;IAJCC,KAAK,EAAExF,MAAA,CAAA4F,UAAU;IAClBF,IAAI,EAAC,MAAM;IACX,WAAS,EAAT,EAAS;IACRG,QAAQ,EAAE;+EAKjBnG,mBAAA,cAAiB,EACjBI,YAAA,CAmCYgG,oBAAA;gBAlCD9F,MAAA,CAAA+F,iBAAiB;+DAAjB/F,MAAA,CAAA+F,iBAAiB,GAAA7F,MAAA;IAC1BsF,KAAK,EAAC,OAAO;IACbQ,KAAK,EAAC;;IA4BKC,MAAM,EAAAC,QAAA,CACf,MAA4D,CAA5DpG,YAAA,CAA4DqG,oBAAA;MAAhDC,OAAK,EAAAC,MAAA,QAAAA,MAAA,MAAAnG,MAAA,IAAEF,MAAA,CAAA+F,iBAAiB;;wBAAU,MAAEM,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;QAChDvG,YAAA,CAAgEqG,oBAAA;MAArDT,IAAI,EAAC,SAAS;MAAEU,OAAK,EAAEpG,MAAA,CAAAkD;;wBAAgB,MAAEmD,MAAA,QAAAA,MAAA,O,iBAAF,IAAE,E;;;;sBA5BtD,MAyBU,CAzBVvG,YAAA,CAyBUwG,kBAAA;MAzBAC,KAAK,EAAEvG,MAAA,CAAAwG,QAAQ;MAAE,aAAW,EAAC,MAAM;MAACC,IAAI,EAAC;;wBACjD,MAQe,CARf3G,YAAA,CAQe4G,uBAAA;QARDpG,KAAK,EAAC;MAAM;0BACxB,MAMY,CANZR,YAAA,CAMY6G,oBAAA;sBANQ3G,MAAA,CAAAwG,QAAQ,CAACd,IAAI;qEAAb1F,MAAA,CAAAwG,QAAQ,CAACd,IAAI,GAAAxF,MAAA;UAAE0G,KAAmB,EAAnB;YAAA;UAAA;;4BACjC,MAAwC,CAAxC9G,YAAA,CAAwC+G,oBAAA;YAA7BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAA0C+G,oBAAA;YAA/BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAA2C+G,oBAAA;YAAhCvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAAyC+G,oBAAA;YAA9BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;cAC9BhH,YAAA,CAA0C+G,oBAAA;YAA/BvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;;;;;UAGlChH,YAAA,CAOe4G,uBAAA;QAPDpG,KAAK,EAAC;MAAM;0BACxB,MAKY,CALZR,YAAA,CAKY6G,oBAAA;sBALQ3G,MAAA,CAAAwG,QAAQ,CAACO,KAAK;qEAAd/G,MAAA,CAAAwG,QAAQ,CAACO,KAAK,GAAA7G,MAAA;UAAE0G,KAAmB,EAAnB;YAAA;UAAA;;4BAClC,MAAqC,CAArC9G,YAAA,CAAqC+G,oBAAA;YAA1BvG,KAAK,EAAC,KAAK;YAACwG,KAAK,EAAC;cAC7BhH,YAAA,CAAwC+G,oBAAA;YAA7BvG,KAAK,EAAC,KAAK;YAACwG,KAAK,EAAC;cAC7BhH,YAAA,CAAsC+G,oBAAA;YAA3BvG,KAAK,EAAC,KAAK;YAACwG,KAAK,EAAC;cAC7BhH,YAAA,CAA2C+G,oBAAA;YAAhCvG,KAAK,EAAC,MAAM;YAACwG,KAAK,EAAC;;;;;UAGlChH,YAAA,CAMe4G,uBAAA;QANDpG,KAAK,EAAC;MAAM;0BACxB,MAIE,CAJFR,YAAA,CAIEkH,mBAAA;sBAHShH,MAAA,CAAAwG,QAAQ,CAACS,WAAW;qEAApBjH,MAAA,CAAAwG,QAAQ,CAACS,WAAW,GAAA/G,MAAA;UAC7BwF,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/7e3e1c794ddc5a70b96e3fcc7f20c3a9c4b64d1c5e3aa932cb0801ffeefc0686.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e3e1c794ddc5a70b96e3fcc7f20c3a9c4b64d1c5e3aa932cb0801ffeefc0686.json
new file mode 100644
index 00000000..a3571e90
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e3e1c794ddc5a70b96e3fcc7f20c3a9c4b64d1c5e3aa932cb0801ffeefc0686.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 } 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: \"mode-buttons\"\n};\nconst _hoisted_5 = {\n class: \"path-points-list\"\n};\nconst _hoisted_6 = {\n class: \"point-index\"\n};\nconst _hoisted_7 = {\n class: \"point-coords\"\n};\nconst _hoisted_8 = {\n class: \"section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_10 = {\n class: \"path-info\"\n};\nconst _hoisted_11 = {\n key: 0\n};\nconst _hoisted_12 = {\n class: \"section\"\n};\nconst _hoisted_13 = {\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_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, [_createElementVNode(\"h4\", null, \"路径点 (\" + _toDisplayString($props.pathPoints.length) + \"个)\", 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_4, [_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[12] || (_cache[12] = [_createTextVNode(\" 规划路径 \")])),\n _: 1 /* STABLE */,\n __: [12]\n }, 8 /* PROPS */, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.pathPoints, (point, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: \"path-point-item\"\n }, [_createElementVNode(\"span\", _hoisted_6, _toDisplayString(index + 1), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_7, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 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\"])]);\n }), 128 /* KEYED_FRAGMENT */))])]), _createElementVNode(\"div\", _hoisted_8, [_cache[13] || (_cache[13] = _createElementVNode(\"h4\", null, \"规划参数\", -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 }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"RRT算法\",\n value: \"rrt\"\n }), _createVNode(_component_el_option, {\n label: \"遗传算法\",\n value: \"genetic\"\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_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\"])]),\n _: 1 /* STABLE */\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\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径信息\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"p\", null, [_cache[14] || (_cache[14] = _createElementVNode(\"strong\", null, \"算法:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[15] || (_cache[15] = _createElementVNode(\"strong\", null, \"总距离:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.distance) + \"米\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[16] || (_cache[16] = _createElementVNode(\"strong\", null, \"预计时间:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.duration) + \"分钟\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[17] || (_cache[17] = _createElementVNode(\"strong\", null, \"路径点数:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.pointCount) + \"个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"p\", _hoisted_11, [_cache[18] || (_cache[18] = _createElementVNode(\"strong\", null, \"避开威胁区:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \"个 \", 1 /* TEXT */)])) : _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 }\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 执行路径 \")])),\n _: 1 /* STABLE */,\n __: [19]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_12, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_13, [_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[21] || (_cache[21] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [21]\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[22] || (_cache[22] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [22]\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[23] || (_cache[23] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [23]\n }, 8 /* PROPS */, [\"disabled\"])]),\n _: 1 /* STABLE */\n })])])]),\n _: 1 /* STABLE */\n })]);\n}","map":{"version":3,"names":["class","_createElementBlock","_hoisted_1","_createVNode","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_component_el_button","type","size","onClick","_cache","$event","_ctx","$emit","_hoisted_3","_toDisplayString","$props","pathPoints","length","_hoisted_4","addMode","disabled","_hoisted_5","_Fragment","_renderList","point","index","key","_hoisted_6","_hoisted_7","lng","toFixed","lat","icon","circle","style","_hoisted_8","_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_9","_hoisted_10","getAlgorithmName","distance","duration","pointCount","threatZonesAvoided","_hoisted_11","_hoisted_12","_hoisted_13","_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
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
0\">\r\n 避开威胁区: {{ pathInfo.threatZonesAvoided.length }}个\r\n
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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/7e8ac721f91b77498864f0e608c47f1ff66ccb4c66914881fd64313e5dc964f1.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e8ac721f91b77498864f0e608c47f1ff66ccb4c66914881fd64313e5dc964f1.json
new file mode 100644
index 00000000..2bef12bf
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/7e8ac721f91b77498864f0e608c47f1ff66ccb4c66914881fd64313e5dc964f1.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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\n // 使用默认无人机ID,如果没有选择的话\n const droneId = selectedDroneId.value || 1;\n try {\n console.log('开始路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点:', pathPoints.value);\n console.log('威胁区:', threatZones.value);\n console.log('选择的无人机ID:', selectedDroneId.value);\n console.log('使用的无人机ID:', droneId);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据\n const planningData = {\n droneId: droneId,\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","droneId","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/8050359f7c08eac10ac35b1f5e453e6903de9ebe765570ea8c3153747f5d17d8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8050359f7c08eac10ac35b1f5e453e6903de9ebe765570ea8c3153747f5d17d8.json
new file mode 100644
index 00000000..d3054ec9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8050359f7c08eac10ac35b1f5e453e6903de9ebe765570ea8c3153747f5d17d8.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('straight');\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","initDroneMarkers","dispatch","drones","length","Object","values","droneMarkers","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","showDrones","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","showDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","selectedDroneId","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/81316706e87ac5d405cb2497756053bb1e629c87205dc281c338800cefbf7f3d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/81316706e87ac5d405cb2497756053bb1e629c87205dc281c338800cefbf7f3d.json
new file mode 100644
index 00000000..d8ec6cf5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/81316706e87ac5d405cb2497756053bb1e629c87205dc281c338800cefbf7f3d.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/816f39de00a6910e227c15149fb28343c019297a0807c4fd6de9d065425126cc.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/816f39de00a6910e227c15149fb28343c019297a0807c4fd6de9d065425126cc.json
new file mode 100644
index 00000000..8a27cd21
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/816f39de00a6910e227c15149fb28343c019297a0807c4fd6de9d065425126cc.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('straight');\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,\n geometry_data: 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\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","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","endPoint","fitToPath","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 "],"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/82d1bf7d1c6d5d12715a0c81bf8ee2fb1f9b6944c4675f01cf087f207c8d7726.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/82d1bf7d1c6d5d12715a0c81bf8ee2fb1f9b6944c4675f01cf087f207c8d7726.json
new file mode 100644
index 00000000..4afeba39
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/82d1bf7d1c6d5d12715a0c81bf8ee2fb1f9b6944c4675f01cf087f207c8d7726.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('straight');\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\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 toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","toggleDroneVisibility","toggleDroneInfo","selectDrone","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 "],"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/84d99403fecc220a9cb447d1e3233be2b9895f993cf97096f7c75d97e1f47d95.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/84d99403fecc220a9cb447d1e3233be2b9895f993cf97096f7c75d97e1f47d95.json
new file mode 100644
index 00000000..93880a6e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/84d99403fecc220a9cb447d1e3233be2b9895f993cf97096f7c75d97e1f47d95.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\n })) : []\n };\n console.log('发送路径规划请求:', planningData);\n\n // 发送到后端进行路径规划(使用简化测试接口)\n const response = await fetch('/api/simple-path-planning/test', {\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('后端响应错误:', response.status, errorText);\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/85710907e38bd787e9cdfc5ba4a3b38bb78057363f7cec51ddfeac72b583cb73.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/85710907e38bd787e9cdfc5ba4a3b38bb78057363f7cec51ddfeac72b583cb73.json
new file mode 100644
index 00000000..c6b32257
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/85710907e38bd787e9cdfc5ba4a3b38bb78057363f7cec51ddfeac72b583cb73.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, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createBlock as _createBlock } 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 style: {\n \"float\": \"right\",\n \"color\": \"#8492a6\",\n \"font-size\": \"13px\"\n }\n};\nconst _hoisted_5 = {\n class: \"section\"\n};\nconst _hoisted_6 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-index\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"section\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_12 = {\n class: \"path-info\"\n};\nconst _hoisted_13 = {\n key: 0\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\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_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[12] || (_cache[12] = _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[11] || (_cache[11] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [11]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[13] || (_cache[13] = _createElementVNode(\"h4\", null, \"选择无人机\", -1 /* HOISTED */)), _createVNode(_component_el_select, {\n modelValue: $setup.droneId,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.droneId = $event),\n placeholder: \"请选择无人机\",\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSelectDrone\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.drones, drone => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: drone.id,\n label: drone.name,\n value: drone.id\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(drone.name), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_4, \" 电量: \" + _toDisplayString(drone.battery) + \"% \", 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"label\", \"value\"]);\n }), 128 /* KEYED_FRAGMENT */))]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, \"路径点 (\" + _toDisplayString($props.pathPoints.length) + \"个)\", 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $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[3] || (_cache[3] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 规划路径 \")])),\n _: 1 /* STABLE */,\n __: [14]\n }, 8 /* PROPS */, [\"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: \"path-point-item\"\n }, [_createElementVNode(\"span\", _hoisted_8, _toDisplayString(index + 1), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 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\"])]);\n }), 128 /* KEYED_FRAGMENT */))])]), _createElementVNode(\"div\", _hoisted_10, [_cache[15] || (_cache[15] = _createElementVNode(\"h4\", null, \"规划参数\", -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[4] || (_cache[4] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"RRT算法\",\n value: \"rrt\"\n }), _createVNode(_component_el_option, {\n label: \"遗传算法\",\n value: \"genetic\"\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_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $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\"])]),\n _: 1 /* STABLE */\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[6] || (_cache[6] = $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\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_cache[22] || (_cache[22] = _createElementVNode(\"h4\", null, \"路径信息\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", null, [_cache[16] || (_cache[16] = _createElementVNode(\"strong\", null, \"算法:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($setup.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[17] || (_cache[17] = _createElementVNode(\"strong\", null, \"总距离:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.distance) + \"米\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[18] || (_cache[18] = _createElementVNode(\"strong\", null, \"预计时间:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.duration) + \"分钟\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[19] || (_cache[19] = _createElementVNode(\"strong\", null, \"路径点数:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.pointCount) + \"个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"p\", _hoisted_13, [_cache[20] || (_cache[20] = _createElementVNode(\"strong\", null, \"避开威胁区:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \"个 \", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => _cache[21] || (_cache[21] = [_createTextVNode(\" 执行路径 \")])),\n _: 1 /* STABLE */,\n __: [21]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_14, [_cache[26] || (_cache[26] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_15, [_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[8] || (_cache[8] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[23] || (_cache[23] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [23]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[24] || (_cache[24] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [24]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[25] || (_cache[25] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [25]\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","_component_el_select","$setup","droneId","placeholder","onChange","onSelectDrone","_Fragment","_renderList","$props","drones","drone","_createBlock","_component_el_option","key","id","label","name","value","_toDisplayString","_hoisted_4","battery","_hoisted_5","pathPoints","length","_hoisted_6","addMode","disabled","_hoisted_7","point","index","_hoisted_8","_hoisted_9","lng","toFixed","lat","icon","circle","_hoisted_10","_component_el_form","_component_el_form_item","algorithm","onAlgorithmChange","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_11","_hoisted_12","getAlgorithmName","distance","duration","pointCount","threatZonesAvoided","_hoisted_13","_hoisted_14","_hoisted_15","_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 {{ drone.name }}\r\n \r\n 电量: {{ drone.battery }}%\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
0\">\r\n 避开威胁区: {{ pathInfo.threatZonesAvoided.length }}个\r\n
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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/87ec613c2d94678fe4d0e9e97cf8ab2f8cee02944da447d973962b84c20dd3a3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/87ec613c2d94678fe4d0e9e97cf8ab2f8cee02944da447d973962b84c20dd3a3.json
new file mode 100644
index 00000000..925a9929
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/87ec613c2d94678fe4d0e9e97cf8ab2f8cee02944da447d973962b84c20dd3a3.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('straight');\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/886c22ac8bee45a05292bbf5ca4fe66ec070e78476add87a0ba6a8aa828b4915.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/886c22ac8bee45a05292bbf5ca4fe66ec070e78476add87a0ba6a8aa828b4915.json
new file mode 100644
index 00000000..623e4e83
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/886c22ac8bee45a05292bbf5ca4fe66ec070e78476add87a0ba6a8aa828b4915.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": _ctx.showDrones,\n \"show-drone-info\": _ctx.showDroneInfo,\n onToggleDroneVisibility: _ctx.toggleDroneVisibility,\n onToggleDroneInfo: _ctx.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: _ctx.drones,\n \"selected-drone-id\": _ctx.selectedDroneId,\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 onSelectDrone: _ctx.selectDrone,\n onUpdatePlanningAlgorithm: _ctx.updatePlanningAlgorithm,\n onUpdateFlightAltitude: _ctx.updateFlightAltitude,\n onUpdateFlightSpeed: _ctx.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/8aeb64b7b83d2359153c7653fecdb0220ee5cba3b95f25b6c3b7e404d441ef06.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8aeb64b7b83d2359153c7653fecdb0220ee5cba3b95f25b6c3b7e404d441ef06.json
new file mode 100644
index 00000000..577a1303
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8aeb64b7b83d2359153c7653fecdb0220ee5cba3b95f25b6c3b7e404d441ef06.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
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/8ed975a53424a11bb11ded44b40d2c9a161028e5d692a3bebea9be081ee27322.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8ed975a53424a11bb11ded44b40d2c9a161028e5d692a3bebea9be081ee27322.json
new file mode 100644
index 00000000..4583bfe9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8ed975a53424a11bb11ded44b40d2c9a161028e5d692a3bebea9be081ee27322.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/8f153c29937891cca972a146e1f02a528860fc9009e5f3f51777d6c00091a4ca.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8f153c29937891cca972a146e1f02a528860fc9009e5f3f51777d6c00091a4ca.json
new file mode 100644
index 00000000..3f7ef724
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/8f153c29937891cca972a146e1f02a528860fc9009e5f3f51777d6c00091a4ca.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/936b23f41a2aec1bd86eb783b1087b8bb5c8fccf57c6725903d2ad2338dc39a8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/936b23f41a2aec1bd86eb783b1087b8bb5c8fccf57c6725903d2ad2338dc39a8.json
new file mode 100644
index 00000000..9c30dd12
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/936b23f41a2aec1bd86eb783b1087b8bb5c8fccf57c6725903d2ad2338dc39a8.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 "],"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/99643af2008059a0bc328cd81a47a7be34f12eb8d0ce2f56db67e6d94027c681.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/99643af2008059a0bc328cd81a47a7be34f12eb8d0ce2f56db67e6d94027c681.json
new file mode 100644
index 00000000..b25af5c7
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/99643af2008059a0bc328cd81a47a7be34f12eb8d0ce2f56db67e6d94027c681.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,\n geometry_data: 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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\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","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 "],"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/9ae333c0760a64999f743b559872c21c5de480f079bae24ad309e780f6bc21a8.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9ae333c0760a64999f743b559872c21c5de480f079bae24ad309e780f6bc21a8.json
new file mode 100644
index 00000000..6c9ecde1
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9ae333c0760a64999f743b559872c21c5de480f079bae24ad309e780f6bc21a8.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: 'straight'\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
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/9c68fbdaf32af3defd362582ee13b97eb5c4cb0990bb7e3b60fce656187a2e6d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9c68fbdaf32af3defd362582ee13b97eb5c4cb0990bb7e3b60fce656187a2e6d.json
new file mode 100644
index 00000000..5017441b
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/9c68fbdaf32af3defd362582ee13b97eb5c4cb0990bb7e3b60fce656187a2e6d.json
@@ -0,0 +1 @@
+{"ast":null,"code":"import { createStore } from 'vuex';\nimport axios from 'axios';\nconst API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000';\nconst auth = {\n namespaced: true,\n state: () => ({\n isLoggedIn: !!localStorage.getItem('token'),\n user: JSON.parse(localStorage.getItem('user') || 'null'),\n token: localStorage.getItem('token') || ''\n }),\n mutations: {\n setLogin(state, {\n user,\n token\n }) {\n state.isLoggedIn = true;\n state.user = user;\n state.token = token;\n localStorage.setItem('token', token);\n localStorage.setItem('user', JSON.stringify(user));\n },\n setLogout(state) {\n state.isLoggedIn = false;\n state.user = null;\n state.token = '';\n localStorage.removeItem('token');\n localStorage.removeItem('user');\n }\n },\n actions: {\n async login({\n commit\n }, {\n username,\n password\n }) {\n try {\n const res = await axios.post(`${API_URL}/api/auth/login`, {\n username,\n password\n });\n if (res.data && res.data.success) {\n commit('setLogin', {\n user: res.data.user,\n token: res.data.token\n });\n return {\n success: true\n };\n } else {\n return {\n success: false,\n message: res.data.message || '登录失败'\n };\n }\n } catch (e) {\n return {\n success: false,\n message: e.response?.data?.message || '网络错误'\n };\n }\n },\n logout({\n commit\n }) {\n commit('setLogout');\n }\n }\n};\nexport default createStore({\n state: {\n // 威胁区域数据\n threatZones: [],\n // 路径规划数据\n pathPlans: []\n },\n mutations: {\n SET_THREAT_ZONES(state, zones) {\n state.threatZones = zones;\n },\n SET_PATH_PLANS(state, plans) {\n state.pathPlans = plans;\n }\n },\n actions: {\n async fetchThreatZones({\n commit\n }) {\n try {\n const res = await axios.get(`${API_URL}/api/threat-zones`);\n if (res.data && res.data.success) {\n commit('SET_THREAT_ZONES', res.data.data);\n }\n } catch (error) {\n console.error('获取威胁区域数据失败:', error);\n commit('SET_THREAT_ZONES', []);\n }\n },\n async fetchPathPlans({\n commit\n }) {\n try {\n const res = await axios.get(`${API_URL}/api/path-planning`);\n if (res.data && res.data.success) {\n commit('SET_PATH_PLANS', res.data.data);\n }\n } catch (error) {\n console.error('获取路径规划数据失败:', error);\n commit('SET_PATH_PLANS', []);\n }\n }\n },\n modules: {\n auth\n }\n});","map":{"version":3,"names":["createStore","axios","API_URL","process","env","VUE_APP_API_URL","auth","namespaced","state","isLoggedIn","localStorage","getItem","user","JSON","parse","token","mutations","setLogin","setItem","stringify","setLogout","removeItem","actions","login","commit","username","password","res","post","data","success","message","e","response","logout","threatZones","pathPlans","SET_THREAT_ZONES","zones","SET_PATH_PLANS","plans","fetchThreatZones","get","error","console","fetchPathPlans","modules"],"sources":["E:/大三下/软件工程/command_center(1)/command_center/web-command-center/frontend/src/store/index.js"],"sourcesContent":["import { createStore } from 'vuex'\r\nimport axios from 'axios'\r\n\r\nconst API_URL = process.env.VUE_APP_API_URL || 'http://localhost:3000'\r\n\r\nconst auth = {\r\n namespaced: true,\r\n state: () => ({\r\n isLoggedIn: !!localStorage.getItem('token'),\r\n user: JSON.parse(localStorage.getItem('user') || 'null'),\r\n token: localStorage.getItem('token') || ''\r\n }),\r\n mutations: {\r\n setLogin(state, { user, token }) {\r\n state.isLoggedIn = true\r\n state.user = user\r\n state.token = token\r\n localStorage.setItem('token', token)\r\n localStorage.setItem('user', JSON.stringify(user))\r\n },\r\n setLogout(state) {\r\n state.isLoggedIn = false\r\n state.user = null\r\n state.token = ''\r\n localStorage.removeItem('token')\r\n localStorage.removeItem('user')\r\n }\r\n },\r\n actions: {\r\n async login({ commit }, { username, password }) {\r\n try {\r\n const res = await axios.post(`${API_URL}/api/auth/login`, { username, password })\r\n if (res.data && res.data.success) {\r\n commit('setLogin', { user: res.data.user, token: res.data.token })\r\n return { success: true }\r\n } else {\r\n return { success: false, message: res.data.message || '登录失败' }\r\n }\r\n } catch (e) {\r\n return { success: false, message: e.response?.data?.message || '网络错误' }\r\n }\r\n },\r\n logout({ commit }) {\r\n commit('setLogout')\r\n }\r\n }\r\n}\r\n\r\nexport default createStore({\r\n state: {\r\n // 威胁区域数据\r\n threatZones: [],\r\n // 路径规划数据\r\n pathPlans: []\r\n },\r\n mutations: {\r\n SET_THREAT_ZONES(state, zones) {\r\n state.threatZones = zones\r\n },\r\n SET_PATH_PLANS(state, plans) {\r\n state.pathPlans = plans\r\n }\r\n },\r\n actions: {\r\n async fetchThreatZones({ commit }) {\r\n try {\r\n const res = await axios.get(`${API_URL}/api/threat-zones`)\r\n if (res.data && res.data.success) {\r\n commit('SET_THREAT_ZONES', res.data.data)\r\n }\r\n } catch (error) {\r\n console.error('获取威胁区域数据失败:', error)\r\n commit('SET_THREAT_ZONES', [])\r\n }\r\n },\r\n async fetchPathPlans({ commit }) {\r\n try {\r\n const res = await axios.get(`${API_URL}/api/path-planning`)\r\n if (res.data && res.data.success) {\r\n commit('SET_PATH_PLANS', res.data.data)\r\n }\r\n } catch (error) {\r\n console.error('获取路径规划数据失败:', error)\r\n commit('SET_PATH_PLANS', [])\r\n }\r\n }\r\n },\r\n modules: {\r\n auth\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/a03e9dd44811fb3532b98a4f38d3ba407b3e5ef99656c45865cafd33c2c082bf.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a03e9dd44811fb3532b98a4f38d3ba407b3e5ef99656c45865cafd33c2c082bf.json
new file mode 100644
index 00000000..737744ba
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a03e9dd44811fb3532b98a4f38d3ba407b3e5ef99656c45865cafd33c2c082bf.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/a0fd4c6f3c9ae7b903e58672f0982e33fcff4b777cbd58fdf484b784923edd51.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a0fd4c6f3c9ae7b903e58672f0982e33fcff4b777cbd58fdf484b784923edd51.json
new file mode 100644
index 00000000..5d10f219
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a0fd4c6f3c9ae7b903e58672f0982e33fcff4b777cbd58fdf484b784923edd51.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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\n // 使用默认无人机ID,如果没有选择的话\n const droneId = selectedDroneId.value || 1;\n try {\n console.log('开始路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点:', pathPoints.value);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据\n const planningData = {\n droneId: selectedDroneId.value,\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry: zone.geometry\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 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","droneId","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/a12b387061ccfe88ce1fda8430d13964ed30aa84ecdad3bb75e83b30754dcfc1.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a12b387061ccfe88ce1fda8430d13964ed30aa84ecdad3bb75e83b30754dcfc1.json
new file mode 100644
index 00000000..72b4f496
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a12b387061ccfe88ce1fda8430d13964ed30aa84ecdad3bb75e83b30754dcfc1.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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","length","handleTabClick","close","toggleAddMode","initDroneMarkers","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","showDrones","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","showDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/a1f93a6365c9a121b8a122a35474f65ed42ec777426d1b3c6354e7665d2db088.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1f93a6365c9a121b8a122a35474f65ed42ec777426d1b3c6354e7665d2db088.json
new file mode 100644
index 00000000..e4663766
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1f93a6365c9a121b8a122a35474f65ed42ec777426d1b3c6354e7665d2db088.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/a1fc3eba0ef558efb38d9c6b81b729c57b32710855b904de782a76a58a36e55f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1fc3eba0ef558efb38d9c6b81b729c57b32710855b904de782a76a58a36e55f.json
new file mode 100644
index 00000000..2f6d2a48
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/a1fc3eba0ef558efb38d9c6b81b729c57b32710855b904de782a76a58a36e55f.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: 'straight'\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 return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange\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"],"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 {{ drone.name }}\r\n \r\n 电量: {{ drone.battery }}%\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
0\">\r\n 避开威胁区: {{ pathInfo.threatZonesAvoided.length }}个\r\n
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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":"AA0KA,SAASA,GAAG,EAAEC,QAAO,QAAS,KAAI;AAElC,eAAe;EACbC,IAAI,EAAE,mBAAmB;EACzBC,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,cAAa,CACd;EACDC,KAAKA,CAACjB,KAAK,EAAE;IAAEkB;EAAK,CAAC,EAAE;IACrB;IACA,MAAMC,OAAM,GAAIrB,QAAQ,CAAC;MACvBsB,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACK,eAAe;MAChCgB,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,cAAc,EAAEI,KAAK;IAC5C,CAAC;IAED,MAAMC,SAAQ,GAAIzB,QAAQ,CAAC;MACzBsB,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACW,iBAAiB;MAClCU,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,2BAA2B,EAAEI,KAAK;IACzD,CAAC;IAED,MAAME,QAAO,GAAI1B,QAAQ,CAAC;MACxBsB,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACY,cAAc;MAC/BS,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,wBAAwB,EAAEI,KAAK;IACtD,CAAC;IAED,MAAMG,KAAI,GAAI3B,QAAQ,CAAC;MACrBsB,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,OAAO;MACLH,OAAO;MACPI,SAAS;MACTC,QAAQ;MACRC,KAAK;MACLC,aAAa;MACbC,iBAAiB;MACjBC,gBAAgB;MAChBC;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/abd6a335b6e7d438f3d7632deecbd0367933c3abfb0b173b41c777136fb03ba2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/abd6a335b6e7d438f3d7632deecbd0367933c3abfb0b173b41c777136fb03ba2.json
new file mode 100644
index 00000000..afcd5228
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/abd6a335b6e7d438f3d7632deecbd0367933c3abfb0b173b41c777136fb03ba2.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/afbb472cff136b03ebf03dd67be4b21d4980b79641d8fa37b65eb08698277ccc.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/afbb472cff136b03ebf03dd67be4b21d4980b79641d8fa37b65eb08698277ccc.json
new file mode 100644
index 00000000..a1380571
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/afbb472cff136b03ebf03dd67be4b21d4980b79641d8fa37b65eb08698277ccc.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/b1edff76f9738cdf690a1cf8584b82966c16f2ef51cb00ad2e2834522768b1b3.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b1edff76f9738cdf690a1cf8584b82966c16f2ef51cb00ad2e2834522768b1b3.json
new file mode 100644
index 00000000..29a359de
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b1edff76f9738cdf690a1cf8584b82966c16f2ef51cb00ad2e2834522768b1b3.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/b1f633be66a9486504ffe8a0c0c8a76ca5cdd5a8ce9eb5c3e048cd1b0a05d466.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b1f633be66a9486504ffe8a0c0c8a76ca5cdd5a8ce9eb5c3e048cd1b0a05d466.json
new file mode 100644
index 00000000..923c7a96
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b1f633be66a9486504ffe8a0c0c8a76ca5cdd5a8ce9eb5c3e048cd1b0a05d466.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, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createBlock as _createBlock } 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 style: {\n \"float\": \"right\",\n \"color\": \"#8492a6\",\n \"font-size\": \"13px\"\n }\n};\nconst _hoisted_5 = {\n class: \"section\"\n};\nconst _hoisted_6 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-index\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"section\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_12 = {\n class: \"path-info\"\n};\nconst _hoisted_13 = {\n class: \"section\"\n};\nconst _hoisted_14 = {\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_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[12] || (_cache[12] = _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[11] || (_cache[11] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [11]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[13] || (_cache[13] = _createElementVNode(\"h4\", null, \"选择无人机\", -1 /* HOISTED */)), _createVNode(_component_el_select, {\n modelValue: $setup.droneId,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.droneId = $event),\n placeholder: \"请选择无人机\",\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSelectDrone\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.drones, drone => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: drone.id,\n label: drone.name,\n value: drone.id\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(drone.name), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_4, \" 电量: \" + _toDisplayString(drone.battery) + \"% \", 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"label\", \"value\"]);\n }), 128 /* KEYED_FRAGMENT */))]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, \"路径点 (\" + _toDisplayString($props.pathPoints.length) + \"个)\", 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $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[3] || (_cache[3] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 规划路径 \")])),\n _: 1 /* STABLE */,\n __: [14]\n }, 8 /* PROPS */, [\"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: \"path-point-item\"\n }, [_createElementVNode(\"span\", _hoisted_8, _toDisplayString(index + 1), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 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\"])]);\n }), 128 /* KEYED_FRAGMENT */))])]), _createElementVNode(\"div\", _hoisted_10, [_cache[15] || (_cache[15] = _createElementVNode(\"h4\", null, \"规划参数\", -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[4] || (_cache[4] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"RRT算法\",\n value: \"rrt\"\n }), _createVNode(_component_el_option, {\n label: \"遗传算法\",\n value: \"genetic\"\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_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $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\"])]),\n _: 1 /* STABLE */\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[6] || (_cache[6] = $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\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_cache[20] || (_cache[20] = _createElementVNode(\"h4\", null, \"路径信息\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", null, [_cache[16] || (_cache[16] = _createElementVNode(\"strong\", null, \"总距离:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.distance) + \"米\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[17] || (_cache[17] = _createElementVNode(\"strong\", null, \"预计时间:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.duration) + \"分钟\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[18] || (_cache[18] = _createElementVNode(\"strong\", null, \"路径点数:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.pointCount) + \"个\", 1 /* TEXT */)])]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => _cache[19] || (_cache[19] = [_createTextVNode(\" 执行路径 \")])),\n _: 1 /* STABLE */,\n __: [19]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_13, [_cache[24] || (_cache[24] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_14, [_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[8] || (_cache[8] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[21] || (_cache[21] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [21]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[22] || (_cache[22] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [22]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[23] || (_cache[23] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [23]\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","_component_el_select","$setup","droneId","placeholder","onChange","onSelectDrone","_Fragment","_renderList","$props","drones","drone","_createBlock","_component_el_option","key","id","label","name","value","_toDisplayString","_hoisted_4","battery","_hoisted_5","pathPoints","length","_hoisted_6","addMode","disabled","_hoisted_7","point","index","_hoisted_8","_hoisted_9","lng","toFixed","lat","icon","circle","_hoisted_10","_component_el_form","_component_el_form_item","algorithm","onAlgorithmChange","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_11","_hoisted_12","distance","duration","pointCount","_hoisted_13","_hoisted_14","_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 {{ drone.name }}\r\n \r\n 电量: {{ drone.battery }}%\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径信息
\r\n
\r\n
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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/b292da742298a196d912f863b6d86b54dd0c0e7994d7b5e92238b7daed1fab0f.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b292da742298a196d912f863b6d86b54dd0c0e7994d7b5e92238b7daed1fab0f.json
new file mode 100644
index 00000000..ef5d979d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b292da742298a196d912f863b6d86b54dd0c0e7994d7b5e92238b7daed1fab0f.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/b32e7ea3b3274bd551fb88a606851f394c3d3fc393310c0fd72d88997055d230.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b32e7ea3b3274bd551fb88a606851f394c3d3fc393310c0fd72d88997055d230.json
new file mode 100644
index 00000000..23395306
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b32e7ea3b3274bd551fb88a606851f394c3d3fc393310c0fd72d88997055d230.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: 'straight'\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
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
0\">\r\n 避开威胁区: {{ pathInfo.threatZonesAvoided.length }}个\r\n
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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/b603246abae54ad027065c497eb2459ea0a9c9527a30b6bdfa30e8c3fc7d1c68.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b603246abae54ad027065c497eb2459ea0a9c9527a30b6bdfa30e8c3fc7d1c68.json
new file mode 100644
index 00000000..f6577b40
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b603246abae54ad027065c497eb2459ea0a9c9527a30b6bdfa30e8c3fc7d1c68.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/b8f8724ceb7d40a9ffedaab7ed988d62f6eaa46d9716569ad34f5026ffa85291.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b8f8724ceb7d40a9ffedaab7ed988d62f6eaa46d9716569ad34f5026ffa85291.json
new file mode 100644
index 00000000..67276c34
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/b8f8724ceb7d40a9ffedaab7ed988d62f6eaa46d9716569ad34f5026ffa85291.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: 'straight'\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
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/bc639b36d468081a6e660bea04c457622fabe1e8ccb7e039c347dbe760f79319.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bc639b36d468081a6e660bea04c457622fabe1e8ccb7e039c347dbe760f79319.json
new file mode 100644
index 00000000..6da15835
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/bc639b36d468081a6e660bea04c457622fabe1e8ccb7e039c347dbe760f79319.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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\n // 加载无人机数据\n await initDroneMarkers();\n console.log('所有数据加载完成');\n } catch (error) {\n console.error('自动加载数据失败:', error);\n }\n };\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initDroneMarkers","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","initActivePanelFeatures","length","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/c30d04ce906bf2677381982e2b7262f4984131939d3993d3783c2a279a2dfec4.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c30d04ce906bf2677381982e2b7262f4984131939d3993d3783c2a279a2dfec4.json
new file mode 100644
index 00000000..8e20913d
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c30d04ce906bf2677381982e2b7262f4984131939d3993d3783c2a279a2dfec4.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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\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","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 "],"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/c522b2c1e6a9a348c426cdae2d895435d7de44a531c1a2823bc6674d4781024b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c522b2c1e6a9a348c426cdae2d895435d7de44a531c1a2823bc6674d4781024b.json
new file mode 100644
index 00000000..1e1dcb3f
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c522b2c1e6a9a348c426cdae2d895435d7de44a531c1a2823bc6674d4781024b.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/c7e16b90f147aed69e98a04ae5a7923b18e6dbce06992e41947eb891dc35d690.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c7e16b90f147aed69e98a04ae5a7923b18e6dbce06992e41947eb891dc35d690.json
new file mode 100644
index 00000000..472cbed9
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/c7e16b90f147aed69e98a04ae5a7923b18e6dbce06992e41947eb891dc35d690.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/d1b112731face480b4a7dd07fb28eca0e605b38eb245303d97410ab84d422de9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1b112731face480b4a7dd07fb28eca0e605b38eb245303d97410ab84d422de9.json
new file mode 100644
index 00000000..13300617
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d1b112731face480b4a7dd07fb28eca0e605b38eb245303d97410ab84d422de9.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('straight');\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","selectedDroneId","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","drone","drones","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","showDrones","showDroneInfo","toggleDroneVisibility","toggleDroneInfo","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 "],"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/d3067893a5a7babdd90294d716391587e49c49949403e3a8ab92eb9aad94d690.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3067893a5a7babdd90294d716391587e49c49949403e3a8ab92eb9aad94d690.json
new file mode 100644
index 00000000..789578fd
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3067893a5a7babdd90294d716391587e49c49949403e3a8ab92eb9aad94d690.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/d39743a5bbcf66088a52d0c9e002b162ffcbbae7a7417cb69def7681522ed8d2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d39743a5bbcf66088a52d0c9e002b162ffcbbae7a7417cb69def7681522ed8d2.json
new file mode 100644
index 00000000..76c84711
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d39743a5bbcf66088a52d0c9e002b162ffcbbae7a7417cb69def7681522ed8d2.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/d3fa237616d0c98fdeacb405753e1add5b2809963808bb742b1947ce36d5a7ab.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3fa237616d0c98fdeacb405753e1add5b2809963808bb742b1947ce36d5a7ab.json
new file mode 100644
index 00000000..dd2bc617
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d3fa237616d0c98fdeacb405753e1add5b2809963808bb742b1947ce36d5a7ab.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('straight');\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","selectedDroneId","drone","drones","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","showDrones","showDroneInfo","toggleDroneVisibility","toggleDroneInfo","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 "],"mappings":"AAmJA,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;AAE7E,eAAe;EACbC,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVL,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC;EACF,CAAC;EACDG,KAAKA,CAAA,EAAG;IACN,MAAMC,KAAI,GAAIV,QAAQ,CAAC;IACvB,MAAMW,YAAW,GAAIhB,GAAG,CAAC,IAAI;;IAE7B;IACA,MAAMiB,WAAU,GAAIjB,GAAG,CAAC,UAAU;;IAElC;IACA,MAAMkB,WAAU,GAAIlB,GAAG,CAAC,IAAI;;IAE5B;IACA,MAAMmB,OAAM,GAAInB,GAAG,CAAC,KAAK;;IAEzB;IACA,MAAMoB,YAAW,GAAIpB,GAAG,CAAC,EAAE;IAC3B,MAAMqB,aAAY,GAAIrB,GAAG,CAAC,EAAE;;IAE5B;IACA,MAAMsB,WAAU,GAAItB,GAAG,CAAC,EAAE;IAC1B;IACA,MAAMuB,YAAW,GAAI,CAAC;IACtB,MAAMC,QAAO,GAAIxB,GAAG,CAAC,IAAI;IACzB,MAAMyB,iBAAgB,GAAIzB,GAAG,CAAC,OAAO;IACrC,MAAM0B,WAAU,GAAI1B,GAAG,CAAC,QAAQ;IAChC,MAAM2B,YAAW,GAAI3B,GAAG,CAAC,IAAI;IAC7B,MAAM4B,iBAAgB,GAAI5B,GAAG,CAAC,EAAE;IAChC,MAAM6B,eAAc,GAAI7B,GAAG,CAAC,CAAC,IAAI8B,IAAI,CAAC,CAAC,EAAE,IAAIA,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,IAAI,EAAC,GAAI,EAAC,GAAI,EAAC,GAAI,IAAI,CAAC,CAAC;IACpF,MAAMC,cAAa,GAAIhC,GAAG,CAAC,IAAI;IAC/B,MAAMiC,aAAY,GAAIjC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC/E,MAAMkC,iBAAgB,GAAIlC,GAAG,CAAC,KAAK;IACnC,MAAMmC,QAAO,GAAInC,GAAG,CAAC;MACnBoC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,QAAQ;MACfC,WAAW,EAAE,EAAE;MACfC,QAAQ,EAAE;IACZ,CAAC;;IAED;IACA,MAAMC,UAAS,GAAIzC,GAAG,CAAC,EAAE;IACzB,MAAM0C,WAAU,GAAI1C,GAAG,CAAC,EAAE;IAC1B,MAAM2C,QAAO,GAAI3C,GAAG,CAAC,IAAI;IACzB,MAAM4C,iBAAgB,GAAI5C,GAAG,CAAC,UAAU;IACxC,MAAM6C,cAAa,GAAI7C,GAAG,CAAC,GAAG;IAC9B,MAAM8C,WAAU,GAAI9C,GAAG,CAAC,EAAE;IAC1B,MAAM+C,QAAO,GAAI/C,GAAG,CAAC,IAAI;;IAEzB;IACA,MAAMgD,SAAQ,GAAIhD,GAAG,CAAC,IAAI;;IAE1B;IACA,MAAMiD,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;QAAE9C,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MACzCC,OAAO,EAAE;QAAEhD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MAC3CE,QAAQ,EAAE;QAAEjD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MAC5CG,MAAM,EAAE;QAAElD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU,CAAC;MAC1CI,OAAO,EAAE;QAAEnD,IAAI,EAAE,MAAM;QAAE+C,KAAK,EAAE;MAAU;IAC5C;;IAEA;IACA,MAAMK,iBAAgB,GAAI;MACxBC,GAAG,EAAE;QAAErD,IAAI,EAAE,KAAK;QAAEsD,OAAO,EAAE;MAAI,CAAC;MAClCC,MAAM,EAAE;QAAEvD,IAAI,EAAE,KAAK;QAAEsD,OAAO,EAAE;MAAI,CAAC;MACrCE,IAAI,EAAE;QAAExD,IAAI,EAAE,KAAK;QAAEsD,OAAO,EAAE;MAAI,CAAC;MACnCG,QAAQ,EAAE;QAAEzD,IAAI,EAAE,MAAM;QAAEsD,OAAO,EAAE;MAAI;IACzC;;IAEA;IACA,MAAMI,WAAU,GAAKC,GAAG,IAAK;MAC3BrD,WAAW,CAACsD,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,IAAIpE,WAAW,CAACuD,KAAI,KAAM,UAAS,IAAKrD,OAAO,CAACqD,KAAK,EAAE;QACrD;QACAc,cAAc,CAACH,GAAG,EAAEC,GAAG;MACzB,OAAO,IAAInE,WAAW,CAACuD,KAAI,KAAM,cAAa,IAAKrD,OAAO,CAACqD,KAAK,EAAE;QAChE;QACAe,YAAY,CAACJ,GAAG,EAAEC,GAAG;MACvB;MACA;IACF;;IAEA;IACA,MAAMI,uBAAsB,GAAIA,CAAA,KAAM;MACpC,QAAQvE,WAAW,CAACuD,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;MACAtE,OAAO,CAACqD,KAAI,GAAI,KAAI;MACpBhD,QAAQ,CAACgD,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;MAC1BxE,OAAO,CAACqD,KAAI,GAAI,CAACrD,OAAO,CAACqD,KAAI;MAC7B;MACA,IAAIvD,WAAW,CAACuD,KAAI,KAAM,YAAY,EAAE;QACtChD,QAAQ,CAACgD,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,IAAI3E,WAAW,CAACuD,KAAI,KAAM,UAAU,EAAE;QACpC,OAAO,WAAU;MACnB,OAAO,IAAIvD,WAAW,CAACuD,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,CAAClE,WAAW,CAACsD,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;QACvBvE,SAAS,CAAC;UACRkG,OAAO,EAAE,UAAUrB,GAAG,CAACoB,OAAO,CAAC,CAAC,CAAC,KAAKnB,GAAG,CAACmB,OAAO,CAAC,CAAC,CAAC,EAAE;UACtDlE,IAAI,EAAE;QACR,CAAC;MACH,CAAC;MAEDnB,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BxE,aAAa,CAACmD,KAAK,CAACkC,IAAI,CAACb,MAAM;MAC/BzE,YAAY,CAACoD,KAAK,CAACkC,IAAI,CAAC;QAAEvB,GAAG;QAAEC;MAAI,CAAC;MAEpC9E,SAAS,CAACqG,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;MACzBvF,aAAa,CAACmD,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QACpC3E,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACDxE,aAAa,CAACmD,KAAI,GAAI,EAAC;MACvBpD,YAAY,CAACoD,KAAI,GAAI,EAAC;MACtBlE,SAAS,CAACqG,OAAO,CAAC,UAAU;IAC9B;;IAEA;;IAEA;IACA,MAAMI,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAIvF,QAAQ,CAACgD,KAAI,KAAM,QAAQ,EAAE;QAC/B,OAAO,oBAAmB;MAC5B,OAAO,IAAIhD,QAAQ,CAACgD,KAAI,KAAM,SAAS,EAAE;QACvC,OAAO,kBAAiB;MAC1B,OAAO,IAAIhD,QAAQ,CAACgD,KAAI,KAAM,WAAW,EAAE;QACzC,OAAO,aAAY;MACrB;MACA,OAAO,EAAC;IACV;;IAEA;IACA,MAAMwC,sBAAqB,GAAK3E,IAAI,IAAK;MACvCZ,iBAAiB,CAAC+C,KAAI,GAAInC,IAAG;IAC/B;;IAEA;IACA,MAAM4E,uBAAsB,GAAK3E,KAAK,IAAK;MACzCZ,WAAW,CAAC8C,KAAI,GAAIlC,KAAI;IAC1B;;IAEA;IACA,MAAM4E,kBAAiB,GAAKC,MAAM,IAAK;MACrCxF,YAAY,CAAC6C,KAAI,GAAI2C,MAAK;IAC5B;;IAEA;IACA,MAAMC,uBAAsB,GAAKC,IAAI,IAAK;MACxCzF,iBAAiB,CAAC4C,KAAI,GAAI6C,IAAG;IAC/B;;IAEA;IACA,MAAMC,qBAAoB,GAAKC,KAAK,IAAK;MACvC1F,eAAe,CAAC2C,KAAI,GAAI+C,KAAI;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAKC,IAAI,IAAK;MAC5B,IAAI,CAACzE,SAAS,CAACwB,KAAK,EAAE;QACpBlE,SAAS,CAACgD,KAAK,CAAC,UAAU;QAC1B;MACF;MAEA,IAAI9B,QAAQ,CAACgD,KAAI,KAAMiD,IAAI,EAAE;QAC3B;QACAjG,QAAQ,CAACgD,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;QACAhD,SAAS,CAACoH,IAAI,CAAC,SAAS;QACxB;MACF;MAEAlG,QAAQ,CAACgD,KAAI,GAAIiD,IAAG;MACpBtG,OAAO,CAACqD,KAAI,GAAI,KAAI;;MAEpB;MACA,MAAMmD,OAAM,GAAI;QACdC,WAAW,EAAEnE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;QAC5DkE,YAAY,EAAE,CAAC;QACfC,aAAa,EAAE,GAAG;QAClBC,SAAS,EAAEtE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;QAC1DqE,WAAW,EAAEhE,iBAAiB,CAACtC,WAAW,CAAC8C,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;QAEArH,SAAS,CAACoH,IAAI,CAACX,UAAU,CAAC,CAAC;MAC7B,EAAE,OAAOzD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChChD,SAAS,CAACgD,KAAK,CAAC,UAAU;QAC1B9B,QAAQ,CAACgD,KAAI,GAAI,IAAG;MACtB;IACF;;IAEA;IACA,MAAMM,cAAa,GAAI,MAAOsD,KAAK,IAAK;MACtC;MACA,MAAMC,OAAM,GAAIjI,KAAK,CAACgI,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,GAAIvH,WAAW,CAACsD,KAAK,CAACkE,cAAc,CAAC,SAAS;QAC3DnF,OAAO,CAACkB,GAAG,CAAC,aAAa,EAAEgE,QAAQ;;QAEnC;QACA,MAAME,YAAW,GAAI;UACnBf,WAAW,EAAEnE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;UAC5DkE,YAAY,EAAE,CAAC;UAAG;UAClBC,aAAa,EAAE,CAAC;UAAE;UAClBC,SAAS,EAAEtE,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAACb,KAAK;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACtC,WAAW,CAAC8C,KAAK,CAAC,CAACN;QACpD;QAEAX,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEkE,YAAY;QACnCN,OAAO,CAACO,UAAU,CAACD,YAAY;;QAE/B;QACAE,UAAU,CAAC,MAAM;UACf3H,WAAW,CAACsD,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,MAAMd,QAAO,GAAIuG,sBAAsB,CAACV,OAAO;;MAE/C;MACA,IAAI,CAAC5G,iBAAiB,CAAC+C,KAAK,EAAE;QAC5BjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE7B,iBAAiB,CAAC+C,KAAK;QAChDlE,SAAS,CAACgD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAAC5B,WAAW,CAAC8C,KAAK,EAAE;QACtBjB,OAAO,CAACD,KAAK,CAAC,SAAS,EAAE5B,WAAW,CAAC8C,KAAK;QAC1ClE,SAAS,CAACgD,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI,CAACd,QAAQ,EAAE;QACbe,OAAO,CAACD,KAAK,CAAC,UAAU;QACxBhD,SAAS,CAACgD,KAAK,CAAC,aAAa;QAC7B;MACF;MAEA,MAAM0F,QAAO,GAAI;QACf3G,IAAI,EAAEZ,iBAAiB,CAAC+C,KAAK;QAC7BlC,KAAK,EAAEZ,WAAW,CAAC8C,KAAK;QACxBjC,WAAW,EAAEX,iBAAiB,CAAC4C,KAAI,IAAK,EAAE;QAC1CyE,SAAS,EAAE,CAAC,GAAGpH,eAAe,CAAC2C,KAAK,CAAC;QAAE;QACvChC,QAAQ,EAAEA;MACZ;MAEA,IAAI;QACFe,OAAO,CAACkB,GAAG,CAAC,YAAY,EAAEuE,QAAQ;QAClCzF,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEhD,iBAAiB,CAAC+C,KAAK;QAC9CjB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAE/C,WAAW,CAAC8C,KAAK;QACxCjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAE7C,iBAAiB,CAAC4C,KAAK;QAC5CjB,OAAO,CAACkB,GAAG,CAAC,OAAO,EAAEjC,QAAQ;;QAE7B;QACA,MAAM0G,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;UACAhJ,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;;UAEhC;UACA8B,qBAAqB,CAACF,IAAI;UAE1B3J,SAAS,CAACqG,OAAO,CAAC,MAAMlD,gBAAgB,CAAChC,iBAAiB,CAAC+C,KAAK,CAAC,CAAC5D,IAAI,IAAI;UAC1E2C,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;QAClChD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;;QAE3C;QACAtF,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;MAClC;;MAEA;MACA7G,QAAQ,CAACgD,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,EAAEnD,WAAW,CAACkD,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;YACL9E,IAAI,EAAE,QAAQ;YACdgI,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;YACLnI,IAAI,EAAE,SAAS;YACfmI,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;YACLtI,IAAI,EAAE,WAAW;YACjBsI,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/BhD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAM2D,qBAAoB,GAAKF,IAAI,IAAK;MACtC,IAAI,CAAC/I,WAAW,CAACsD,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,CAAC5H,IAAI,CAAC,EAAEsB,KAAI,IAAK,SAAS;UAC5DkE,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE,CAAC;UAChBC,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC5H,IAAI,CAAC,EAAEsB,KAAI,IAAK,SAAS;UAC1DqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC3H,KAAK,CAAC,EAAE4B,OAAM,IAAK;QACzD;QAEAX,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEkE,YAAY;QACpCpF,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAACzH,QAAQ;;QAErC;QACA,IAAIyH,IAAI,CAACzH,QAAQ,CAACH,IAAG,KAAM,QAAQ,EAAE;UACnCkB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAACzH,QAAQ,CAAC6H,MAAM,EAAEJ,IAAI,CAACzH,QAAQ,CAAC2E,MAAM;UAClEkB,OAAM,GAAI,IAAI3D,IAAI,CAACsG,MAAM,CAAC;YACxBX,MAAM,EAAE,IAAI3F,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAACzH,QAAQ,CAAC6H,MAAM,CAAC,CAAC,CAAC,EAAEJ,IAAI,CAACzH,QAAQ,CAAC6H,MAAM,CAAC,CAAC,CAAC,CAAC;YACzElD,MAAM,EAAE8C,IAAI,CAACzH,QAAQ,CAAC2E,MAAM;YAC5B,GAAGwB;UACL,CAAC;QACH,OAAO,IAAIsB,IAAI,CAACzH,QAAQ,CAACH,IAAG,KAAM,SAAS,EAAE;UAC3CkB,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEwF,IAAI,CAACzH,QAAQ,CAACgI,IAAI;UAC3C,MAAMA,IAAG,GAAIP,IAAI,CAACzH,QAAQ,CAACgI,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,CAACzH,QAAQ,CAACH,IAAG,KAAM,WAAW,EAAE;UAC7CkB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEwF,IAAI,CAACzH,QAAQ,CAACmI,MAAM;UAC5C,MAAMA,MAAK,GAAI,IAAIjG,IAAI,CAACyG,MAAM,CAC5B,IAAIzG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAACzH,QAAQ,CAACmI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAACzH,QAAQ,CAACmI,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,IAAIjG,IAAI,CAACuG,MAAM,CAAChB,IAAI,CAACzH,QAAQ,CAACmI,MAAM,CAAC,CAAC,CAAC,EAAEV,IAAI,CAACzH,QAAQ,CAACmI,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;UACAvD,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;;UAE7B;UACA9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE,IAAIiG,OAAM;;UAE9B;UACA,MAAMgD,aAAY,GAAI/J,WAAW,CAACkD,KAAK,CAAC8G,SAAS,CAACC,CAAA,IAAKA,CAAC,CAACnJ,EAAC,KAAM6H,IAAI,CAAC7H,EAAE;UACvE,IAAIiJ,aAAY,KAAM,CAAC,CAAC,EAAE;YACxB/J,WAAW,CAACkD,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,CAAC7H,EAAE;YAC9BoJ,UAAU,CAACvB,IAAI,CAAC7H,EAAE;UACpB,CAAC;;UAED;UACAyG,UAAU,CAAC,MAAM;YACf3H,WAAW,CAACsD,KAAK,CAACsE,UAAU,CAAC;UAC/B,CAAC,EAAE,GAAG;UAENvF,OAAO,CAACkB,GAAG,CAAC,OAAOwF,IAAI,CAAC7H,EAAE,WAAW;QAEvC,OAAO;UACLmB,OAAO,CAACD,KAAK,CAAC,YAAY;QAC5B;MAEF,EAAE,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAE2G,IAAI,CAAC7H,EAAE,EAAEkB,KAAK;MAC1C;IACF;;IAEA;IACA,MAAMkI,UAAS,GAAKpJ,EAAE,IAAK;MACzBJ,cAAc,CAACwC,KAAI,GAAIpC,EAAC;MACxB,MAAMiG,OAAM,GAAI9G,YAAY,CAACa,EAAE;MAC/B,IAAIiG,OAAO,EAAE;QACX;QACAA,OAAO,CAACO,UAAU,CAAC;UACjBf,YAAY,EAAE,CAAC;UACfC,aAAa,EAAE;QACjB,CAAC;;QAED;QACAxG,WAAW,CAACkD,KAAK,CAACqC,OAAO,CAAC0E,CAAA,IAAK;UAC7B,IAAIA,CAAC,CAACnJ,EAAC,KAAMA,EAAE,EAAE;YACf,MAAMqJ,YAAW,GAAIlK,YAAY,CAACgK,CAAC,CAACnJ,EAAE;YACtC,IAAIqJ,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,MAAOtJ,EAAE,IAAK;MAC/B,IAAI;QACFmB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErC,EAAE;QAE1B,MAAM8G,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqB/G,EAAE,EAAE,EAAE;UACtDgH,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,GAAI9G,YAAY,CAACa,EAAE;UAC/B,IAAIiG,OAAO,EAAE;YACXnH,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;YAChC,OAAO9G,YAAY,CAACa,EAAE;UACxB;;UAEA;UACAd,WAAW,CAACkD,KAAI,GAAIlD,WAAW,CAACkD,KAAK,CAACmH,MAAM,CAAC1B,IAAG,IAAKA,IAAI,CAAC7H,EAAC,KAAMA,EAAE;UAEnE,IAAIJ,cAAc,CAACwC,KAAI,KAAMpC,EAAE,EAAE;YAC/BJ,cAAc,CAACwC,KAAI,GAAI,IAAG;UAC5B;UAEAlE,SAAS,CAACqG,OAAO,CAAC,QAAQ;UAC1BpD,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAErC,EAAE;QAE5B,OAAO;UACL,MAAM,IAAI0H,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,SAAS;QAC7C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/BhD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;IACF;;IAEA;IACA,MAAMoF,QAAO,GAAK3B,IAAI,IAAK;MACzB9H,QAAQ,CAACqC,KAAI,GAAI;QAAE,GAAGyF;MAAK;MAC3B/H,iBAAiB,CAACsC,KAAI,GAAI,IAAG;IAC/B;;IAEA;IACA,MAAMqH,cAAa,GAAI,MAAAA,CAAA,KAAY;MACjC,IAAI;QACFtI,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAEtC,QAAQ,CAACqC,KAAK,CAACpC,EAAE;QAEzC,MAAM8G,QAAO,GAAI,MAAMC,KAAK,CAAC,qBAAqBhH,QAAQ,CAACqC,KAAK,CAACpC,EAAE,EAAE,EAAE;UACrEgH,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE;YACP,cAAc,EAAE;UAClB,CAAC;UACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;YACnBnH,IAAI,EAAEF,QAAQ,CAACqC,KAAK,CAACnC,IAAI;YACzBC,KAAK,EAAEH,QAAQ,CAACqC,KAAK,CAAClC,KAAK;YAC3BC,WAAW,EAAEJ,QAAQ,CAACqC,KAAK,CAACjC;UAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC2G,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,GAAI3I,WAAW,CAACkD,KAAK,CAACsH,IAAI,CAACP,CAAA,IAAKA,CAAC,CAACnJ,EAAC,KAAMD,QAAQ,CAACqC,KAAK,CAACpC,EAAE;UACnE,IAAI6H,IAAI,EAAE;YACRA,IAAI,CAAC5H,IAAG,GAAIF,QAAQ,CAACqC,KAAK,CAACnC,IAAG;YAC9B4H,IAAI,CAAC3H,KAAI,GAAIH,QAAQ,CAACqC,KAAK,CAAClC,KAAI;YAChC2H,IAAI,CAAC1H,WAAU,GAAIJ,QAAQ,CAACqC,KAAK,CAACjC,WAAU;;YAE5C;YACA,MAAM8F,OAAM,GAAI9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE;YACpC,IAAIiG,OAAO,EAAE;cACXA,OAAO,CAACO,UAAU,CAAC;gBACjBhB,WAAW,EAAEnE,gBAAgB,CAACwG,IAAI,CAAC5H,IAAI,CAAC,CAACsB,KAAK;gBAC9CoE,SAAS,EAAEtE,gBAAgB,CAACwG,IAAI,CAAC5H,IAAI,CAAC,CAACsB,KAAK;gBAC5CqE,WAAW,EAAEhE,iBAAiB,CAACiG,IAAI,CAAC3H,KAAK,CAAC,CAAC4B;cAC7C,CAAC;YACH;UACF;UAEA5D,SAAS,CAACqG,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/BhD,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;MAC7C;MAEAtE,iBAAiB,CAACsC,KAAI,GAAI,KAAI;IAChC;;IAEA;IACA,MAAMuG,aAAY,GAAI,MAAAA,CAAOgB,WAAU,GAAI,KAAK,KAAK;MACnD,IAAI;QACF,IAAI,CAACA,WAAU,IAAKzK,WAAW,CAACkD,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;UAChD;UACA,MAAM4B,OAAM,GAAI1K,WAAW,CAACkD,KAAK,CAACD,GAAG,CAAC0F,IAAG,IAAKA,IAAI,CAAC7H,EAAE;UAErDmB,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,CAAC5K,YAAY,CAAC,CAACsF,OAAO,CAACwB,OAAM,IAAK;UAC7C,IAAInH,WAAW,CAACsD,KAAK,EAAE;YACrBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF,CAAC;;QAED;QACA/G,WAAW,CAACkD,KAAI,GAAI,EAAC;QACrB0H,MAAM,CAACE,IAAI,CAAC7K,YAAY,CAAC,CAACsF,OAAO,CAACwF,GAAE,IAAK;UACvC,OAAO9K,YAAY,CAAC8K,GAAG;QACzB,CAAC;QACDrK,cAAc,CAACwC,KAAI,GAAI,IAAG;QAE1B,IAAI,CAACuH,WAAW,EAAE;UAChBzL,SAAS,CAACqG,OAAO,CAAC,UAAU;QAC9B;MAEF,EAAE,OAAOrD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,UAAU,EAAEA,KAAK;QAC/B,IAAI,CAACyI,WAAW,EAAE;UAChBzL,SAAS,CAACgD,KAAK,CAAC,WAAU,GAAIA,KAAK,CAACkD,OAAO;QAC7C;MACF;IACF;;IAEA;IACA,MAAM8F,qBAAoB,GAAKC,MAAM,IAAK;MACxCtK,aAAa,CAACuC,KAAI,GAAI+H,MAAK;;MAE3B;MACAjL,WAAW,CAACkD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAI9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE;QACpC,IAAIiG,OAAO,EAAE;UACX,IAAIkE,MAAM,CAACC,QAAQ,CAACvC,IAAI,CAAC5H,IAAI,CAAC,EAAE;YAC9BnB,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC4B,OAAO;UAC/B,OAAO;YACLnH,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACuB,OAAO;UAClC;QACF;MACF,CAAC;IACH;;IAEA;IACA,MAAMoE,UAAS,GAAIA,CAAA,KAAM;MACvB,IAAInL,WAAW,CAACkD,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEpC,MAAMO,MAAK,GAAI,IAAKhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAE;MACxC7J,WAAW,CAACkD,KAAK,CAACqC,OAAO,CAACoD,IAAG,IAAK;QAChC,MAAM5B,OAAM,GAAI9G,YAAY,CAAC0I,IAAI,CAAC7H,EAAE;QACpC,IAAIiG,OAAM,IAAKA,OAAO,CAACuC,SAAS,EAAE;UAChCD,MAAM,CAAC+B,MAAM,CAACrE,OAAO,CAACuC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAIX,IAAI,CAACzH,QAAQ,EAAE6H,MAAM,EAAE;UAChCM,MAAM,CAAC+B,MAAM,CAACzC,IAAI,CAACzH,QAAQ,CAAC6H,MAAM;QACpC;MACF,CAAC;MAEDnJ,WAAW,CAACsD,KAAK,CAACmI,SAAS,CAAChC,MAAM;IACpC;;IAEA;;IAEA;IACA,MAAMpF,YAAW,GAAIA,CAACJ,GAAG,EAAEC,GAAG,KAAK;MACjC,IAAI,CAACjE,OAAO,CAACqD,KAAI,IAAK,CAACtD,WAAW,CAACsD,KAAK,EAAE;MAE1C,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MACvB,MAAMkI,UAAS,GAAInK,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI;;MAE7C;MACA3H,UAAU,CAAC+B,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;MAED1L,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BnD,WAAW,CAAC8B,KAAK,CAACkC,IAAI,CAACb,MAAM;;MAE7B;MACA,IAAIpD,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB;MAEAvM,SAAS,CAACqG,OAAO,CAAC,SAASiG,UAAU,EAAE;IACzC;IAEA,MAAMC,cAAa,GAAIA,CAAA,KAAM;MAC3B,IAAI,CAAC3L,WAAW,CAACsD,KAAK,EAAE;MAExB,MAAME,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvB,IAAI/B,QAAQ,CAAC6B,KAAK,EAAE;QAClBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;MACzC;MAEA,MAAMgG,IAAG,GAAI/H,UAAU,CAAC+B,KAAK,CAACD,GAAG,CAACuI,CAAA,IAAK,CAACA,CAAC,CAAC3H,GAAG,EAAE2H,CAAC,CAAC1H,GAAG,CAAC;MAErDzC,QAAQ,CAAC6B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEA,IAAI;QACV5C,WAAW,EAAE,SAAS;QACtBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE;MACf,CAAC;MAED9L,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC9D,QAAQ,CAAC6B,KAAK;IACtC;;IAEA;IACA,MAAMyI,WAAU,GAAKC,KAAK,IAAK;MAC7BzK,UAAU,CAAC+B,KAAK,CAAC2I,MAAM,CAACD,KAAK,EAAE,CAAC;;MAEhC;MACAE,gBAAgB,CAAC;MACjB3K,UAAU,CAAC+B,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,IAAI5K,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/ByC,cAAc,CAAC;MACjB,OAAO,IAAIlK,QAAQ,CAAC6B,KAAK,EAAE;QACzBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;QACvC7B,QAAQ,CAAC6B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACAzB,QAAQ,CAACyB,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;MAEDhM,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACZ,MAAM;MAC5BnD,WAAW,CAAC8B,KAAK,CAACkC,IAAI,CAACb,MAAM;IAC/B;IAEA,MAAMuH,gBAAe,GAAIA,CAAA,KAAM;MAC7B1K,WAAW,CAAC8B,KAAK,CAACqC,OAAO,CAAChB,MAAK,IAAK;QAClC3E,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACjB,MAAM;MACjC,CAAC;MACDnD,WAAW,CAAC8B,KAAI,GAAI,EAAC;IACvB;;IAEA;IACA,MAAM+I,QAAO,GAAI,MAAAA,CAAA,KAAY;MAC3B,IAAI9K,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;QAC/B9J,SAAS,CAACkN,OAAO,CAAC,WAAW;QAC7B;MACF;MAEA,IAAI;QACFjK,OAAO,CAACkB,GAAG,CAAC,WAAW;QACvBlB,OAAO,CAACkB,GAAG,CAAC,KAAK,EAAE7B,iBAAiB,CAAC4B,KAAK;QAC1CjB,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAEhC,UAAU,CAAC+B,KAAK;QACpCjB,OAAO,CAACkB,GAAG,CAAC,MAAM,EAAEnD,WAAW,CAACkD,KAAK;QAErC,MAAMiJ,UAAS,GAAIhL,UAAU,CAAC+B,KAAK,CAAC,CAAC;QACrC,MAAMkJ,QAAO,GAAIjL,UAAU,CAAC+B,KAAK,CAAC/B,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC;;QAE7D;QACA,MAAMuD,YAAW,GAAI;UACnBF,UAAU,EAAE;YACVtI,GAAG,EAAEsI,UAAU,CAACtI,GAAG;YACnBC,GAAG,EAAEqI,UAAU,CAACrI;UAClB,CAAC;UACDsI,QAAQ,EAAE;YACRvI,GAAG,EAAEuI,QAAQ,CAACvI,GAAG;YACjBC,GAAG,EAAEsI,QAAQ,CAACtI;UAChB,CAAC;UACDwI,SAAS,EAAEhL,iBAAiB,CAAC4B,KAAK;UAClC3B,cAAc,EAAEA,cAAc,CAAC2B,KAAK;UACpC1B,WAAW,EAAEA,WAAW,CAAC0B,KAAK;UAC9BlD,WAAW,EAAEA,WAAW,CAACkD,KAAI,IAAKlD,WAAW,CAACkD,KAAK,CAAC4F,MAAK,GAAI,IAAI9I,WAAW,CAACkD,KAAK,CAACD,GAAG,CAAC0F,IAAG,KAAM;YAC9F7H,EAAE,EAAE6H,IAAI,CAAC7H,EAAE;YACXC,IAAI,EAAE4H,IAAI,CAAC5H,IAAI;YACfC,KAAK,EAAE2H,IAAI,CAAC3H,KAAK;YACjBE,QAAQ,EAAEyH,IAAI,CAACzH;UACjB,CAAC,CAAC,IAAI;QACR;QAEAe,OAAO,CAACkB,GAAG,CAAC,WAAW,EAAEkJ,YAAY;;QAErC;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;UAAK,IAAIH,MAAK;;UAEtB;UACAhH,QAAQ,CAACyB,KAAI,GAAI;YACfqJ,QAAQ,EAAE3D,IAAI,CAAC2D,QAAQ;YACvBC,QAAQ,EAAE5D,IAAI,CAAC6D,aAAa;YAC5BC,UAAU,EAAE9D,IAAI,CAACM,IAAI,CAACJ,MAAM;YAC5BwD,SAAS,EAAE1D,IAAI,CAAC0D,SAAS;YACzBK,kBAAkB,EAAE/D,IAAI,CAAC+D,kBAAiB,IAAK;UACjD;;UAEA;UACAC,gBAAgB,CAAC;;UAEjB;UACAC,iBAAiB,CAACjE,IAAI,CAACM,IAAI;UAE3BlK,SAAS,CAACqG,OAAO,CAAC,GAAGyH,gBAAgB,CAAClE,IAAI,CAAC0D,SAAS,CAAC,SAAS;UAE9D,IAAI1D,IAAI,CAAC+D,kBAAiB,IAAK/D,IAAI,CAAC+D,kBAAkB,CAAC7D,MAAK,GAAI,CAAC,EAAE;YACjE9J,SAAS,CAACoH,IAAI,CAAC,QAAQwC,IAAI,CAAC+D,kBAAkB,CAAC7D,MAAM,OAAO;UAC9D;QAEF,OAAO;UACL,MAAM,IAAIN,KAAK,CAACC,MAAM,CAACvD,OAAM,IAAK,QAAQ;QAC5C;MAEF,EAAE,OAAOlD,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9BhD,SAAS,CAACgD,KAAK,CAAC,UAAS,GAAIA,KAAK,CAACkD,OAAO;MAC5C;IACF;;IAEA;IACA,MAAM4H,gBAAe,GAAKR,SAAS,IAAK;MACtC,MAAMS,cAAa,GAAI;QACrBC,KAAK,EAAE,MAAM;QACbC,GAAG,EAAE,OAAO;QACZC,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE;MACZ;MACA,OAAOJ,cAAc,CAACT,SAAS,KAAKA,SAAQ;IAC9C;;IAEA;IACA,MAAMO,iBAAgB,GAAKO,WAAW,IAAK;MACzC,IAAI,CAACxN,WAAW,CAACsD,KAAI,IAAK,CAACkK,WAAU,IAAKA,WAAW,CAACtE,MAAK,GAAI,CAAC,EAAE;MAElE,MAAM1F,IAAG,GAAIC,MAAM,CAACD,IAAG;MAEvBnB,OAAO,CAACkB,GAAG,CAAC,SAAS,EAAEiK,WAAW;;MAElC;MACA,MAAMC,UAAS,GAAID,WAAW,CAACnK,GAAG,CAACmG,KAAI,IAAK,CAACA,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;MAElEzC,QAAQ,CAAC6B,KAAI,GAAI,IAAIE,IAAI,CAACqI,QAAQ,CAAC;QACjCvC,IAAI,EAAEmE,UAAU;QAChB/G,WAAW,EAAE,SAAS;QAAE;QACxBC,YAAY,EAAE,CAAC;QACfmF,WAAW,EAAE,OAAO;QACpBlF,aAAa,EAAE;MACjB,CAAC;MAED5G,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAAC9D,QAAQ,CAAC6B,KAAK;;MAEpC;MACA,MAAMoK,WAAU,GAAI,IAAIlK,IAAI,CAACoB,MAAM,CAAC;QAClCC,QAAQ,EAAE,CAAC2I,WAAW,CAAC,CAAC,CAAC,CAACvJ,GAAG,EAAEuJ,WAAW,CAAC,CAAC,CAAC,CAACtJ,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;MACT,CAAC;MAED,MAAMuI,SAAQ,GAAI,IAAInK,IAAI,CAACoB,MAAM,CAAC;QAChCC,QAAQ,EAAE,CAAC2I,WAAW,CAACA,WAAW,CAACtE,MAAK,GAAI,CAAC,CAAC,CAACjF,GAAG,EAAEuJ,WAAW,CAACA,WAAW,CAACtE,MAAK,GAAI,CAAC,CAAC,CAAChF,GAAG,CAAC;QAC5FY,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;MACT,CAAC;MAEDpF,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACmI,WAAW;MACjC1N,WAAW,CAACsD,KAAK,CAACiC,GAAG,CAACoI,SAAS;MAE/BnM,WAAW,CAAC8B,KAAI,GAAI,CAACoK,WAAW,EAAEC,SAAS;;MAE3C;MACAhG,UAAU,CAAC,MAAM;QACf,IAAIlG,QAAQ,CAAC6B,KAAK,EAAE;UAClBtD,WAAW,CAACsD,KAAK,CAACsE,UAAU,CAAC,CAACnG,QAAQ,CAAC6B,KAAK,CAAC;QAC/C;MACF,CAAC,EAAE,GAAG;IACR;;IAEA;IACA,MAAM0J,gBAAe,GAAIA,CAAA,KAAM;MAC7B;MACA,IAAIvL,QAAQ,CAAC6B,KAAK,EAAE;QAClBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;QACvC7B,QAAQ,CAAC6B,KAAI,GAAI,IAAG;MACtB;;MAEA;MACA4I,gBAAgB,CAAC;IACnB;IAEA,MAAM0B,iBAAgB,GAAIA,CAAA,KAAM;MAC9B,IAAIC,aAAY,GAAI;MACpB,KAAK,IAAI1B,CAAA,GAAI,CAAC,EAAEA,CAAA,GAAI5K,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAEiD,CAAC,EAAE,EAAE;QACpD,MAAM2B,EAAC,GAAIvM,UAAU,CAAC+B,KAAK,CAAC6I,CAAC;QAC7B,MAAM4B,EAAC,GAAIxM,UAAU,CAAC+B,KAAK,CAAC6I,CAAA,GAAI,CAAC;QACjC0B,aAAY,IAAKG,WAAW,CAACF,EAAE,CAAC5J,GAAG,EAAE4J,EAAE,CAAC7J,GAAG,EAAE8J,EAAE,CAAC7J,GAAG,EAAE6J,EAAE,CAAC9J,GAAG;MAC7D;MACA,OAAO4J,aAAY;IACrB;IAEA,MAAMG,WAAU,GAAIA,CAACC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,KAAK;MAC9C,MAAMC,CAAA,GAAI,MAAK;MACf,MAAMC,EAAC,GAAIL,IAAG,GAAIM,IAAI,CAACC,EAAE,GAAC,GAAE;MAC5B,MAAMC,EAAC,GAAIN,IAAG,GAAII,IAAI,CAACC,EAAE,GAAC,GAAE;MAC5B,MAAME,EAAC,GAAI,CAACP,IAAI,GAACF,IAAI,IAAIM,IAAI,CAACC,EAAE,GAAC,GAAE;MACnC,MAAMG,EAAC,GAAI,CAACP,IAAI,GAACF,IAAI,IAAIK,IAAI,CAACC,EAAE,GAAC,GAAE;MAEnC,MAAMI,CAAA,GAAIL,IAAI,CAACM,GAAG,CAACH,EAAE,GAAC,CAAC,IAAIH,IAAI,CAACM,GAAG,CAACH,EAAE,GAAC,CAAC,IAC9BH,IAAI,CAACO,GAAG,CAACR,EAAE,IAAIC,IAAI,CAACO,GAAG,CAACL,EAAE,IAC1BF,IAAI,CAACM,GAAG,CAACF,EAAE,GAAC,CAAC,IAAIJ,IAAI,CAACM,GAAG,CAACF,EAAE,GAAC,CAAC;MACxC,MAAMI,CAAA,GAAI,IAAIR,IAAI,CAACS,KAAK,CAACT,IAAI,CAACU,IAAI,CAACL,CAAC,CAAC,EAAEL,IAAI,CAACU,IAAI,CAAC,CAAC,GAACL,CAAC,CAAC;MAErD,OAAOP,CAAA,GAAIU,CAAA;IACb;;IAEA;IACA,MAAMG,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF,MAAM7P,YAAY,CAAC8P,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE;UAC/CC,iBAAiB,EAAE,IAAI;UACvBC,gBAAgB,EAAE,IAAI;UACtBlO,IAAI,EAAE;QACR,CAAC;QAED/B,SAAS,CAACqG,OAAO,CAAC,UAAU;QAC5B;MACF,EAAE,MAAM;QACNrG,SAAS,CAACoH,IAAI,CAAC,OAAO;MACxB;IACF;;IAEA;IACA,MAAM8I,QAAO,GAAIA,CAAA,KAAM;MACrBpD,gBAAgB,CAAC;MAEjB,IAAIzK,QAAQ,CAAC6B,KAAK,EAAE;QAClBtD,WAAW,CAACsD,KAAK,CAACsC,MAAM,CAACnE,QAAQ,CAAC6B,KAAK;QACvC7B,QAAQ,CAAC6B,KAAI,GAAI,IAAG;MACtB;MAEA/B,UAAU,CAAC+B,KAAI,GAAI,EAAC;MACpBzB,QAAQ,CAACyB,KAAI,GAAI,IAAG;MAEpBlE,SAAS,CAACqG,OAAO,CAAC,UAAU;IAC9B;;IAEA;IACA,MAAM8J,WAAU,GAAKrO,EAAE,IAAK;MAC1BsO,eAAe,CAAClM,KAAI,GAAIpC,EAAC;MACzB,MAAMuO,KAAI,GAAIC,MAAM,CAACpM,KAAK,CAACsH,IAAI,CAAC+E,CAAA,IAAKA,CAAC,CAACzO,EAAC,KAAMA,EAAE;MAChD,IAAIuO,KAAK,EAAE;QACTrQ,SAAS,CAACqG,OAAO,CAAC,WAAWgK,KAAK,CAAC/P,IAAI,EAAE;MAC3C;IACF;;IAEA;IACA,MAAMkQ,uBAAsB,GAAKlD,SAAS,IAAK;MAC7ChL,iBAAiB,CAAC4B,KAAI,GAAIoJ,SAAQ;IACpC;;IAEA;IACA,MAAMmD,oBAAmB,GAAKC,QAAQ,IAAK;MACzCnO,cAAc,CAAC2B,KAAI,GAAIwM,QAAO;IAChC;;IAEA;IACA,MAAMC,iBAAgB,GAAKC,KAAK,IAAK;MACnCpO,WAAW,CAAC0B,KAAI,GAAI0M,KAAI;IAC1B;;IAEA;IACA,MAAMC,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI1O,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMqD,UAAS,GAAIhL,UAAU,CAAC+B,KAAK,CAAC,CAAC;MACrCtD,WAAW,CAACsD,KAAK,CAAC4M,SAAS,CAAC,CAAC3D,UAAU,CAACtI,GAAG,EAAEsI,UAAU,CAACrI,GAAG,CAAC;MAC5DlE,WAAW,CAACsD,KAAK,CAAC6M,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAMC,WAAU,GAAIA,CAAA,KAAM;MACxB,IAAI7O,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC,EAAE;MAEjC,MAAMsD,QAAO,GAAIjL,UAAU,CAAC+B,KAAK,CAAC/B,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,GAAI,CAAC;MAC7DlJ,WAAW,CAACsD,KAAK,CAAC4M,SAAS,CAAC,CAAC1D,QAAQ,CAACvI,GAAG,EAAEuI,QAAQ,CAACtI,GAAG,CAAC;MACxDlE,WAAW,CAACsD,KAAK,CAAC6M,OAAO,CAAC,EAAE;IAC9B;;IAEA;IACA,MAAME,SAAQ,GAAIA,CAAA,KAAM;MACtB,IAAI9O,UAAU,CAAC+B,KAAK,CAAC4F,MAAK,KAAM,CAAC,EAAE;MAEnC,MAAMO,MAAK,GAAI,IAAKhG,MAAM,CAACD,IAAI,CAACyG,MAAM,CAAE;MACxC1I,UAAU,CAAC+B,KAAK,CAACqC,OAAO,CAAC6D,KAAI,IAAK;QAChCC,MAAM,CAAC+B,MAAM,CAAC,CAAChC,KAAK,CAACvF,GAAG,EAAEuF,KAAK,CAACtF,GAAG,CAAC;MACtC,CAAC;MAEDlE,WAAW,CAACsD,KAAK,CAACmI,SAAS,CAAChC,MAAM;IACpC;IAEA1K,SAAS,CAAC,MAAM;MACd;MACAsD,OAAO,CAACkB,GAAG,CAAC,mCAAmC;MAC/C;IACF,CAAC;IAED,OAAO;MACLzD,YAAY;MACZC,WAAW;MACXE,OAAO;MACPC,YAAY;MACZoQ,UAAU;MACVC,aAAa;MACbnQ,WAAW;MACXU,cAAc;MACdP,iBAAiB;MACjBD,QAAQ;MACRE,WAAW;MACXC,YAAY;MACZC,iBAAiB;MACjBC,eAAe;MACfI,aAAa;MACbC,iBAAiB;MACjBC,QAAQ;MACRyO,MAAM;MACNF,eAAe;MACfjO,UAAU;MACVG,iBAAiB;MACjBC,cAAc;MACdC,WAAW;MACXC,QAAQ;MAER0C,cAAc;MACdnB,WAAW;MACXW,UAAU;MACVU,aAAa;MACbiB,YAAY;MACZ8K,qBAAqB;MACrBC,eAAe;MACf/L,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;MACR6C,WAAW;MACXI,QAAQ;MACRC,WAAW;MACXK,uBAAuB;MACvBC,oBAAoB;MACpBE,iBAAiB;MACjBE,aAAa;MACbG,WAAW;MACXC,SAAS;MAET;MACAK,iBAAiB,EAAGvP,IAAI,IAAKoB,gBAAgB,CAACpB,IAAI,CAAC,EAAEzB,IAAG,IAAK,MAAM;MACnEiR,kBAAkB,EAAGvP,KAAK,IAAK0B,iBAAiB,CAAC1B,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/d6c6e5161064b323c49f0e14acbe51a80e78911b72f83a6387bdc5575db73d46.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d6c6e5161064b323c49f0e14acbe51a80e78911b72f83a6387bdc5575db73d46.json
new file mode 100644
index 00000000..b67dd021
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/d6c6e5161064b323c49f0e14acbe51a80e78911b72f83a6387bdc5575db73d46.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/db290690a209d3f21d60167b1399fc5819f6f65d0742285d28c789e227a9c644.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/db290690a209d3f21d60167b1399fc5819f6f65d0742285d28c789e227a9c644.json
new file mode 100644
index 00000000..b7e7dda5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/db290690a209d3f21d60167b1399fc5819f6f65d0742285d28c789e227a9c644.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, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createBlock as _createBlock } 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 style: {\n \"float\": \"right\",\n \"color\": \"#8492a6\",\n \"font-size\": \"13px\"\n }\n};\nconst _hoisted_5 = {\n class: \"section\"\n};\nconst _hoisted_6 = {\n class: \"mode-buttons\"\n};\nconst _hoisted_7 = {\n class: \"path-points-list\"\n};\nconst _hoisted_8 = {\n class: \"point-index\"\n};\nconst _hoisted_9 = {\n class: \"point-coords\"\n};\nconst _hoisted_10 = {\n class: \"section\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"section\"\n};\nconst _hoisted_12 = {\n class: \"path-info\"\n};\nconst _hoisted_13 = {\n key: 0\n};\nconst _hoisted_14 = {\n class: \"section\"\n};\nconst _hoisted_15 = {\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_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[12] || (_cache[12] = _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[11] || (_cache[11] = [_createTextVNode(\" 清除所有 \")])),\n _: 1 /* STABLE */,\n __: [11]\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_3, [_cache[13] || (_cache[13] = _createElementVNode(\"h4\", null, \"选择无人机\", -1 /* HOISTED */)), _createVNode(_component_el_select, {\n modelValue: $setup.droneId,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $setup.droneId = $event),\n placeholder: \"请选择无人机\",\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onSelectDrone\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.drones, drone => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: drone.id,\n label: drone.name,\n value: drone.id\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(drone.name), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_4, \" 电量: \" + _toDisplayString(drone.battery) + \"% \", 1 /* TEXT */)]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"label\", \"value\"]);\n }), 128 /* KEYED_FRAGMENT */))]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, \"路径点 (\" + _toDisplayString($props.pathPoints.length) + \"个)\", 1 /* TEXT */), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_button, {\n type: $props.addMode ? 'success' : 'default',\n size: \"small\",\n onClick: _cache[2] || (_cache[2] = $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[3] || (_cache[3] = $event => _ctx.$emit('plan-path')),\n disabled: $props.pathPoints.length < 2\n }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [_createTextVNode(\" 规划路径 \")])),\n _: 1 /* STABLE */,\n __: [14]\n }, 8 /* PROPS */, [\"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: \"path-point-item\"\n }, [_createElementVNode(\"span\", _hoisted_8, _toDisplayString(index + 1), 1 /* TEXT */), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(point.lng.toFixed(4)) + \", \" + _toDisplayString(point.lat.toFixed(4)), 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\"])]);\n }), 128 /* KEYED_FRAGMENT */))])]), _createElementVNode(\"div\", _hoisted_10, [_cache[15] || (_cache[15] = _createElementVNode(\"h4\", null, \"规划参数\", -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[4] || (_cache[4] = $event => $setup.algorithm = $event),\n style: {\n \"width\": \"100%\"\n },\n onChange: $setup.onAlgorithmChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_option, {\n label: \"A*算法\",\n value: \"astar\"\n }), _createVNode(_component_el_option, {\n label: \"RRT算法\",\n value: \"rrt\"\n }), _createVNode(_component_el_option, {\n label: \"遗传算法\",\n value: \"genetic\"\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_form_item, {\n label: \"飞行高度\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input_number, {\n modelValue: $setup.altitude,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $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\"])]),\n _: 1 /* STABLE */\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[6] || (_cache[6] = $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\"])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n })]), $props.pathInfo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_cache[22] || (_cache[22] = _createElementVNode(\"h4\", null, \"路径信息\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", null, [_cache[16] || (_cache[16] = _createElementVNode(\"strong\", null, \"算法:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString(_ctx.getAlgorithmName($props.pathInfo.algorithm)), 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[17] || (_cache[17] = _createElementVNode(\"strong\", null, \"总距离:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.distance) + \"米\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[18] || (_cache[18] = _createElementVNode(\"strong\", null, \"预计时间:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.duration) + \"分钟\", 1 /* TEXT */)]), _createElementVNode(\"p\", null, [_cache[19] || (_cache[19] = _createElementVNode(\"strong\", null, \"路径点数:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.pointCount) + \"个\", 1 /* TEXT */)]), $props.pathInfo.threatZonesAvoided && $props.pathInfo.threatZonesAvoided.length > 0 ? (_openBlock(), _createElementBlock(\"p\", _hoisted_13, [_cache[20] || (_cache[20] = _createElementVNode(\"strong\", null, \"避开威胁区:\", -1 /* HOISTED */)), _createTextVNode(\" \" + _toDisplayString($props.pathInfo.threatZonesAvoided.length) + \"个 \", 1 /* TEXT */)])) : _createCommentVNode(\"v-if\", true)]), _createVNode(_component_el_button, {\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => _ctx.$emit('execute-path')),\n style: {\n \"width\": \"100%\"\n }\n }, {\n default: _withCtx(() => _cache[21] || (_cache[21] = [_createTextVNode(\" 执行路径 \")])),\n _: 1 /* STABLE */,\n __: [21]\n })])) : _createCommentVNode(\"v-if\", true), _createElementVNode(\"div\", _hoisted_14, [_cache[26] || (_cache[26] = _createElementVNode(\"h4\", null, \"地图显示\", -1 /* HOISTED */)), _createElementVNode(\"div\", _hoisted_15, [_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[8] || (_cache[8] = $event => _ctx.$emit('center-to-start')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[23] || (_cache[23] = [_createTextVNode(\" 起点 \")])),\n _: 1 /* STABLE */,\n __: [23]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length < 2,\n onClick: _cache[9] || (_cache[9] = $event => _ctx.$emit('center-to-end')),\n style: {\n \"width\": \"33%\"\n }\n }, {\n default: _withCtx(() => _cache[24] || (_cache[24] = [_createTextVNode(\" 终点 \")])),\n _: 1 /* STABLE */,\n __: [24]\n }, 8 /* PROPS */, [\"disabled\"]), _createVNode(_component_el_button, {\n type: \"default\",\n size: \"small\",\n disabled: $props.pathPoints.length === 0,\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('fit-to-path')),\n style: {\n \"width\": \"34%\"\n }\n }, {\n default: _withCtx(() => _cache[25] || (_cache[25] = [_createTextVNode(\" 全路径 \")])),\n _: 1 /* STABLE */,\n __: [25]\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","_component_el_select","$setup","droneId","placeholder","onChange","onSelectDrone","_Fragment","_renderList","$props","drones","drone","_createBlock","_component_el_option","key","id","label","name","value","_toDisplayString","_hoisted_4","battery","_hoisted_5","pathPoints","length","_hoisted_6","addMode","disabled","_hoisted_7","point","index","_hoisted_8","_hoisted_9","lng","toFixed","lat","icon","circle","_hoisted_10","_component_el_form","_component_el_form_item","algorithm","onAlgorithmChange","_component_el_input_number","altitude","min","max","step","onAltitudeChange","speed","onSpeedChange","pathInfo","_hoisted_11","_hoisted_12","getAlgorithmName","distance","duration","pointCount","threatZonesAvoided","_hoisted_13","_hoisted_14","_hoisted_15","_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 {{ drone.name }}\r\n \r\n 电量: {{ drone.battery }}%\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
0\">\r\n 避开威胁区: {{ pathInfo.threatZonesAvoided.length }}个\r\n
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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/deb0d2cdd2fa3b08990fa0a63e7248abed3586fc41e9d783feadeb73db53d8f9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/deb0d2cdd2fa3b08990fa0a63e7248abed3586fc41e9d783feadeb73db53d8f9.json
new file mode 100644
index 00000000..1ad4baf0
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/deb0d2cdd2fa3b08990fa0a63e7248abed3586fc41e9d783feadeb73db53d8f9.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据(不需要无人机ID)\n const planningData = {\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n console.log('UnifiedMapView mounted, 准备加载数据...');\n // 在地图加载完成后自动加载数据\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","length","handleTabClick","close","toggleAddMode","initDroneMarkers","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","add","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","push","success","clearTargets","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","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","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","keys","key","updateLayerVisibility","layers","includes","fitToZones","extend","setBounds","pointIndex","updatePathLine","p","Polyline","strokeStyle","removePoint","index","splice","clearPathMarkers","i","addPathPointMarker","planPath","warning","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/dfaeded8f908a0faef7329220972797547abe4f434e3b8e3852871f6f157772e.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/dfaeded8f908a0faef7329220972797547abe4f434e3b8e3852871f6f157772e.json
new file mode 100644
index 00000000..df453b3a
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/dfaeded8f908a0faef7329220972797547abe4f434e3b8e3852871f6f157772e.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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\n // 使用默认无人机ID,如果没有选择的话\n const droneId = selectedDroneId.value || 1;\n try {\n console.log('开始路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点:', pathPoints.value);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据\n const planningData = {\n droneId: droneId,\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\n flightAltitude: flightAltitude.value,\n flightSpeed: flightSpeed.value,\n threatZones: threatZones.value.map(zone => ({\n id: zone.id,\n type: zone.type,\n level: zone.level,\n geometry: zone.geometry\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 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","droneId","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/e01c56e7fe0f19dc718be502c067346f38bf15d4751ab654df0c15527fe2e1e0.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e01c56e7fe0f19dc718be502c067346f38bf15d4751ab654df0c15527fe2e1e0.json
new file mode 100644
index 00000000..eb0391c8
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e01c56e7fe0f19dc718be502c067346f38bf15d4751ab654df0c15527fe2e1e0.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 const showDrones = ref(true);\n const showDroneInfo = 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 drones = computed(() => store.state.drones || []);\n const selectedDroneId = ref(null);\n const pathPoints = ref([]);\n const pathMarkers = ref([]);\n const pathLine = ref(null);\n const planningAlgorithm = ref('straight');\n const flightAltitude = ref(100);\n const flightSpeed = ref(10);\n const pathInfo = ref(null);\n\n // 绘制工具相关\n const mouseTool = ref(null);\n const droneMarkers = ref({});\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 initActivePanelFeatures();\n\n // 初始化无人机标记\n initDroneMarkers();\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 if (drones.value.length > 0 && !selectedDroneId.value) {\n selectedDroneId.value = drones.value[0].id;\n }\n break;\n }\n };\n\n // 添加测试威胁区(用于调试)\n const addTestThreatZone = () => {\n if (!mapInstance.value) return;\n try {\n const AMap = window.AMap;\n\n // 创建一个测试圆形威胁区\n const testCircle = new AMap.Circle({\n center: [116.397428, 39.90923],\n // 北京天安门\n radius: 1000,\n strokeColor: '#FF6B6B',\n strokeWeight: 2,\n strokeOpacity: 0.8,\n fillColor: '#FF6B6B',\n fillOpacity: 0.3\n });\n mapInstance.value.add(testCircle);\n\n // 创建威胁区数据\n const testZone = {\n id: 'test-' + Date.now(),\n type: 'radar',\n level: 'medium',\n description: '测试威胁区',\n timeRange: [new Date(), new Date(Date.now() + 24 * 60 * 60 * 1000)],\n geometry: {\n type: 'circle',\n center: [116.397428, 39.90923],\n radius: 1000\n },\n overlay: testCircle\n };\n threatZones.value.push(testZone);\n zoneOverlays[testZone.id] = testCircle;\n testCircle.on('click', () => selectZone(testZone.id));\n console.log('已添加测试威胁区:', testZone);\n ElMessage.success('已添加测试威胁区(红色圆形)');\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 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 const initDroneMarkers = async () => {\n if (!mapInstance.value) return;\n try {\n // 获取无人机数据\n await store.dispatch('fetchDrones');\n const AMap = window.AMap;\n if (!AMap || !drones.value || drones.value.length === 0) {\n console.log('跳过无人机标记初始化:条件不满足');\n return;\n }\n\n // 清除现有标记\n Object.values(droneMarkers.value).forEach(marker => {\n mapInstance.value.remove(marker);\n });\n droneMarkers.value = {};\n drones.value.forEach(drone => {\n if (!drone || typeof drone.longitude !== 'number' || typeof drone.latitude !== 'number') {\n console.warn('无效的无人机数据:', drone);\n return;\n }\n try {\n const marker = new AMap.Marker({\n position: [drone.longitude, drone.latitude],\n title: drone.name || `无人机-${drone.id}`,\n icon: new AMap.Icon({\n size: new AMap.Size(32, 32),\n image: getDroneIconSvg(drone.status),\n imageSize: new AMap.Size(32, 32)\n })\n });\n\n // 添加信息窗体\n const infoWindow = new AMap.InfoWindow({\n isCustom: true,\n content: `\n \n
${drone.name || `无人机-${drone.id}`}
\n
状态: ${getStatusText(drone.status)}
\n
电量: ${drone.battery || 0}%
\n
位置: ${drone.longitude.toFixed(6)}, ${drone.latitude.toFixed(6)}
\n
\n `,\n offset: new AMap.Pixel(16, -45)\n });\n marker.on('click', () => {\n try {\n infoWindow.open(mapInstance.value, marker.getPosition());\n } catch (infoError) {\n console.warn('信息窗体打开失败:', infoError);\n }\n });\n droneMarkers.value[drone.id] = marker;\n if (showDrones.value) {\n mapInstance.value.add(marker);\n }\n } catch (markerError) {\n console.warn(`无人机 ${drone.id} 标记创建失败:`, markerError);\n }\n });\n } catch (error) {\n console.warn('无人机标记初始化出错:', error);\n\n // 使用示例数据作为备用\n const sampleDrones = [{\n id: 1,\n name: '侦察无人机-01',\n latitude: 39.9042,\n longitude: 116.4074,\n status: 'active',\n battery: 85\n }, {\n id: 2,\n name: '运输无人机-02',\n latitude: 39.9100,\n longitude: 116.4200,\n status: 'idle',\n battery: 60\n }];\n store.commit('setDrones', sampleDrones);\n }\n };\n const getDroneIconSvg = status => {\n const colors = {\n active: '#52C41A',\n idle: '#1890FF',\n error: '#FF4D4F'\n };\n const color = colors[status] || colors.idle;\n const svgString = `\n \n `;\n return 'data:image/svg+xml;base64,' + safeBase64Encode(svgString);\n };\n const getStatusText = status => {\n const statusMap = {\n active: '活动中',\n idle: '待机',\n error: '故障'\n };\n return statusMap[status] || status;\n };\n\n // 切换无人机显示\n const toggleDroneVisibility = value => {\n showDrones.value = value;\n Object.values(droneMarkers.value).forEach(marker => {\n if (value) {\n mapInstance.value.add(marker);\n } else {\n mapInstance.value.remove(marker);\n }\n });\n };\n\n // 切换无人机信息显示\n const toggleDroneInfo = value => {\n showDroneInfo.value = value;\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\n // 使用默认无人机ID,如果没有选择的话\n const droneId = selectedDroneId.value || 1;\n try {\n console.log('开始路径规划...');\n console.log('算法:', planningAlgorithm.value);\n console.log('路径点:', pathPoints.value);\n console.log('威胁区:', threatZones.value);\n const startPoint = pathPoints.value[0];\n const endPoint = pathPoints.value[pathPoints.value.length - 1];\n\n // 构建请求数据\n const planningData = {\n droneId: droneId,\n startPoint: {\n lng: startPoint.lng,\n lat: startPoint.lat\n },\n endPoint: {\n lng: endPoint.lng,\n lat: endPoint.lat\n },\n algorithm: planningAlgorithm.value,\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: zone.geometry\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 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 } = result;\n\n // 更新路径信息\n pathInfo.value = {\n distance: data.distance,\n duration: data.estimatedTime,\n pointCount: data.path.length,\n algorithm: data.algorithm,\n threatZonesAvoided: data.threatZonesAvoided || []\n };\n\n // 清除现有路径显示\n clearPathDisplay();\n\n // 渲染新路径\n renderPlannedPath(data.path);\n ElMessage.success(`${getAlgorithmName(data.algorithm)}路径规划完成!`);\n if (data.threatZonesAvoided && data.threatZonesAvoided.length > 0) {\n ElMessage.info(`成功避开 ${data.threatZonesAvoided.length} 个威胁区`);\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 renderPlannedPath = plannedPath => {\n if (!mapInstance.value || !plannedPath || plannedPath.length < 2) return;\n const AMap = window.AMap;\n console.log('渲染规划路径:', plannedPath);\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\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(30, 30),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new AMap.Size(30, 30)\n }),\n title: '起点'\n });\n const endMarker = new AMap.Marker({\n position: [plannedPath[plannedPath.length - 1].lng, plannedPath[plannedPath.length - 1].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: '终点'\n });\n mapInstance.value.add(startMarker);\n mapInstance.value.add(endMarker);\n pathMarkers.value = [startMarker, endMarker];\n\n // 适配地图视图\n setTimeout(() => {\n if (pathLine.value) {\n mapInstance.value.setFitView([pathLine.value]);\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 if (!selectedDroneId.value) {\n ElMessage.warning('请选择执行路径的无人机');\n return;\n }\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 selectDrone = id => {\n selectedDroneId.value = id;\n const drone = drones.value.find(d => d.id === id);\n if (drone) {\n ElMessage.success(`已选择无人机: ${drone.name}`);\n }\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 if (pathPoints.value.length === 0) return;\n const bounds = new window.AMap.Bounds();\n pathPoints.value.forEach(point => {\n bounds.extend([point.lng, point.lat]);\n });\n mapInstance.value.setBounds(bounds);\n };\n onMounted(() => {\n // 初始化功能\n });\n return {\n sharedMapRef,\n activePanel,\n addMode,\n targetPoints,\n showDrones,\n showDroneInfo,\n threatZones,\n selectedZoneId,\n currentThreatType,\n drawMode,\n threatLevel,\n circleRadius,\n threatDescription,\n threatTimeRange,\n visibleLayers,\n editDialogVisible,\n editForm,\n drones,\n selectedDroneId,\n pathPoints,\n planningAlgorithm,\n flightAltitude,\n flightSpeed,\n pathInfo,\n handleTabClick,\n onMapLoaded,\n onMapClick,\n toggleAddMode,\n clearTargets,\n toggleDroneVisibility,\n toggleDroneInfo,\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 selectDrone,\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","showDrones","showDroneInfo","targetPoints","targetMarkers","threatZones","zoneOverlays","drawMode","currentThreatType","threatLevel","circleRadius","threatDescription","threatTimeRange","Date","now","selectedZoneId","visibleLayers","editDialogVisible","editForm","id","type","level","description","geometry","drones","state","selectedDroneId","pathPoints","pathMarkers","pathLine","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","mouseTool","droneMarkers","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","initActivePanelFeatures","initDroneMarkers","loadThreatZones","length","addTestThreatZone","testCircle","Circle","center","radius","strokeColor","strokeWeight","strokeOpacity","fillColor","fillOpacity","add","testZone","timeRange","overlay","push","selectZone","success","onMapClick","e","lng","lat","lnglat","addTargetPoint","addPathPoint","handleTabClick","close","toggleAddMode","dispatch","Object","values","forEach","marker","remove","drone","longitude","latitude","Marker","position","title","icon","Icon","size","Size","image","getDroneIconSvg","status","imageSize","infoWindow","InfoWindow","isCustom","content","getStatusText","battery","toFixed","offset","Pixel","open","getPosition","infoError","markerError","sampleDrones","commit","colors","active","idle","svgString","statusMap","toggleDroneVisibility","toggleDroneInfo","getAddModeTip","message","clearTargets","getDrawTip","handleThreatTypeChange","handleThreatLevelChange","updateCircleRadius","updateThreatDescription","desc","updateThreatTimeRange","range","setDrawMode","mode","info","options","circle","polygon","rectangle","event","obj","className","CLASS_NAME","overlays","getAllOverlays","styleOptions","setOptions","setTimeout","setFitView","getGeometryFromOverlay","zoneData","response","fetch","method","headers","body","JSON","stringify","statusText","ok","errorText","text","Error","result","json","zone","data","renderThreatZoneOnMap","getCenter","getRadius","path","getPath","point","bounds","getBounds","getSouthWest","getNorthEast","clearAllZones","LngLat","Polygon","Bounds","Rectangle","existingIndex","findIndex","z","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","droneId","startPoint","endPoint","planningData","algorithm","distance","duration","estimatedTime","pointCount","threatZonesAvoided","clearPathDisplay","renderPlannedPath","getAlgorithmName","algorithmNames","astar","rrt","genetic","straight","plannedPath","pathCoords","startMarker","endMarker","calculateDistance","totalDistance","p1","p2","getDistance","lat1","lng1","lat2","lng2","R","φ1","Math","PI","φ2","Δφ","Δλ","a","sin","cos","c","atan2","sqrt","executePath","confirm","confirmButtonText","cancelButtonText","clearAll","selectDrone","d","updatePlanningAlgorithm","updateFlightAltitude","altitude","updateFlightSpeed","speed","centerToStart","setCenter","setZoom","centerToEnd","fitToPath","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 "],"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/e3d7ed0ee95f8fc0441c0236c2e6b51b1e815d26504fd1d4d3774edca8fba4c9.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e3d7ed0ee95f8fc0441c0236c2e6b51b1e815d26504fd1d4d3774edca8fba4c9.json
new file mode 100644
index 00000000..657b55c5
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/e3d7ed0ee95f8fc0441c0236c2e6b51b1e815d26504fd1d4d3774edca8fba4c9.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/ecc81229ca2f056e958308044ba1e46b1349060e39011058902babce8b06fc8c.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ecc81229ca2f056e958308044ba1e46b1349060e39011058902babce8b06fc8c.json
new file mode 100644
index 00000000..86263618
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ecc81229ca2f056e958308044ba1e46b1349060e39011058902babce8b06fc8c.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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/f135b0aa4e8ac423510e06886048d5c322f01d32298293a0be0d37e56670901b.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f135b0aa4e8ac423510e06886048d5c322f01d32298293a0be0d37e56670901b.json
new file mode 100644
index 00000000..d40c90f4
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f135b0aa4e8ac423510e06886048d5c322f01d32298293a0be0d37e56670901b.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: 'straight'\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 return {\n droneId,\n algorithm,\n altitude,\n speed,\n onSelectDrone,\n onAlgorithmChange,\n onAltitudeChange,\n onSpeedChange\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"],"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 {{ drone.name }}\r\n \r\n 电量: {{ drone.battery }}%\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径点 ({{ pathPoints.length }}个)
\r\n
\r\n \r\n {{ addMode ? '停止添加' : '添加路径点' }}\r\n \r\n \r\n 规划路径\r\n \r\n
\r\n \r\n
\r\n
\r\n {{ index + 1 }}\r\n \r\n {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
规划参数
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
路径信息
\r\n
\r\n
总距离: {{ pathInfo.distance }}米
\r\n
预计时间: {{ pathInfo.duration }}分钟
\r\n
路径点数: {{ pathInfo.pointCount }}个
\r\n
\r\n
\r\n 执行路径\r\n \r\n
\r\n \r\n \r\n \r\n
地图显示
\r\n
\r\n \r\n \r\n 起点\r\n \r\n \r\n 终点\r\n \r\n \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":"AAsKA,SAASA,GAAG,EAAEC,QAAO,QAAS,KAAI;AAElC,eAAe;EACbC,IAAI,EAAE,mBAAmB;EACzBC,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,cAAa,CACd;EACDC,KAAKA,CAACjB,KAAK,EAAE;IAAEkB;EAAK,CAAC,EAAE;IACrB;IACA,MAAMC,OAAM,GAAIrB,QAAQ,CAAC;MACvBsB,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACK,eAAe;MAChCgB,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,cAAc,EAAEI,KAAK;IAC5C,CAAC;IAED,MAAMC,SAAQ,GAAIzB,QAAQ,CAAC;MACzBsB,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACW,iBAAiB;MAClCU,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,2BAA2B,EAAEI,KAAK;IACzD,CAAC;IAED,MAAME,QAAO,GAAI1B,QAAQ,CAAC;MACxBsB,GAAG,EAAEA,CAAA,KAAMpB,KAAK,CAACY,cAAc;MAC/BS,GAAG,EAAGC,KAAK,IAAKJ,IAAI,CAAC,wBAAwB,EAAEI,KAAK;IACtD,CAAC;IAED,MAAMG,KAAI,GAAI3B,QAAQ,CAAC;MACrBsB,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,OAAO;MACLH,OAAO;MACPI,SAAS;MACTC,QAAQ;MACRC,KAAK;MACLC,aAAa;MACbC,iBAAiB;MACjBC,gBAAgB;MAChBC;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/f298c7707899372fe1050636e35f94b72a8ccc99c0b17f5c2878a83b0cc48a3d.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f298c7707899372fe1050636e35f94b72a8ccc99c0b17f5c2878a83b0cc48a3d.json
new file mode 100644
index 00000000..6a7a35cf
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f298c7707899372fe1050636e35f94b72a8ccc99c0b17f5c2878a83b0cc48a3d.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 markers = ref({});\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: 11,\n center: [112.982279, 28.19409],\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\n // 主动获取无人机数据,而不是直接初始化\n fetchDrones();\n });\n } catch (error) {\n console.error('地图加载失败:', error);\n ElMessage.error(`地图加载失败: ${error.message}`);\n }\n };\n\n // 添加主动获取无人机数据的方法\n const fetchDrones = async () => {\n try {\n console.log('获取无人机数据...');\n await store.dispatch('fetchDrones');\n\n // 查看完整状态\n console.log('Store状态:', store.state);\n\n // 尝试直接获取正确的无人机数据\n const drones = store.state.drones;\n console.log('无人机数据状态:', drones);\n if (Array.isArray(drones)) {\n initDroneMarkers();\n } else {\n console.warn('无人机数据格式不正确,从模块中获取');\n const dronesFromModule = store.state.drones?.list;\n console.log('无人机模块数据:', dronesFromModule);\n if (Array.isArray(dronesFromModule)) {\n // 先将数据设置到根状态,以便标记初始化能正常工作\n store.commit('SET_DRONES', dronesFromModule);\n initDroneMarkers();\n }\n }\n } catch (error) {\n console.error('获取无人机数据失败:', error);\n }\n };\n\n // 初始化无人机标记\n const initDroneMarkers = () => {\n if (!mapInstance.value || !window.AMap) return;\n\n // 从store获取无人机数据,确保是数组\n const drones = store.state.drones || [];\n\n // 检查drones是否为数组\n if (!Array.isArray(drones)) {\n console.warn('无人机数据不是数组格式:', drones);\n return; // 如果不是数组,直接返回\n }\n console.log('无人机数据:', drones);\n\n // 遍历添加无人机标记\n drones.forEach(drone => {\n if (drone && drone.latitude && drone.longitude) {\n addDroneMarker(drone);\n }\n });\n };\n\n // 添加无人机标记\n const addDroneMarker = drone => {\n if (!mapInstance.value || !window.AMap) return;\n\n // 如果已存在该无人机的标记,先移除\n if (markers.value[drone.id]) {\n mapInstance.value.remove(markers.value[drone.id]);\n }\n\n // 根据无人机状态设置不同的颜色\n let statusColor = '#2ecc71'; // 默认绿色 - active\n if (drone.status === 'idle') {\n statusColor = '#3498db'; // 蓝色\n } else if (drone.status === 'error') {\n statusColor = '#e74c3c'; // 红色\n }\n\n // 创建无人机标记\n const marker = new window.AMap.Marker({\n position: [drone.longitude, drone.latitude],\n icon: new window.AMap.Icon({\n size: new window.AMap.Size(40, 40),\n image: 'data:image/svg+xml;base64,' + safeBase64Encode(`\n \n `),\n imageSize: new window.AMap.Size(40, 40)\n }),\n anchor: 'center',\n zIndex: 100,\n angle: drone.heading || 0\n });\n\n // 保存标记\n markers.value[drone.id] = marker;\n mapInstance.value.add(marker);\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","markers","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","fetchDrones","message","dispatch","state","drones","Array","isArray","initDroneMarkers","dronesFromModule","list","commit","forEach","drone","latitude","longitude","addDroneMarker","id","remove","statusColor","status","marker","Marker","icon","Icon","size","Size","image","imageSize","anchor","angle","heading","add","changeMapStyle","style","setMapStyle","changeViewMode","setViewMode","setPitch","terrain","getTileUrl","x","y","z","showWeatherInfo","hideWeatherInfo","weatherMarkers","length","cities","city","weatherInfo","temperature","windDirection","windPower","humidity","weatherIcon","getWeatherIcon","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;IAC3B,MAAMsB,OAAM,GAAItB,GAAG,CAAC,CAAC,CAAC;IACtB,MAAMuB,QAAO,GAAIvB,GAAG,CAAC,IAAI;IACzB,MAAMwB,eAAc,GAAIxB,GAAG,CAAC,QAAQ;IACpC,MAAMyB,aAAY,GAAIzB,GAAG,CAAC,CAAC,WAAW,CAAC;IACvC,MAAM0B,cAAa,GAAI1B,GAAG,CAAC,CAAC,CAAC;IAE7B,MAAM2B,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;QACvB3B,SAAS,CAAC2B,KAAK,CAAC,SAAS;QACzB;MACF;MAEA,IAAI;QACFC,OAAO,CAACO,GAAG,CAAC,aAAa;;QAEzB;QACA,MAAMC,IAAG,GAAI,MAAMnC,UAAU,CAACoC,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;QACApB,WAAW,CAACN,KAAI,GAAI,IAAI2B,IAAI,CAACK,GAAG,CAAC,WAAW,EAAE;UAC5CC,IAAI,EAAE,EAAE;UACRC,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;UAAE;UAChCzB,QAAQ,EAAEA,QAAQ,CAACT,KAAK;UACxBmC,KAAK,EAAE1B,QAAQ,CAACT,KAAI,KAAM,IAAG,GAAI,EAAC,GAAI,CAAC;UACvCoC,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;QAEDpD,WAAW,CAACN,KAAK,CAAC2D,UAAU,CAACZ,OAAO;QACpCzC,WAAW,CAACN,KAAK,CAAC2D,UAAU,CAACP,KAAK;QAClC9C,WAAW,CAACN,KAAK,CAAC2D,UAAU,CAACJ,UAAU;;QAEvC;QACAjD,WAAW,CAACN,KAAK,CAAC4D,EAAE,CAAC,OAAO,EAAGC,CAAC,IAAK;UACnCzD,IAAI,CAAC,WAAW,EAAEyD,CAAC;QACrB,CAAC;QAEDvD,WAAW,CAACN,KAAK,CAAC4D,EAAE,CAAC,UAAU,EAAE,MAAM;UACrCzC,OAAO,CAACO,GAAG,CAAC,QAAQ;UACpBnB,SAAS,CAACP,KAAI,GAAI,IAAG;UACrBI,IAAI,CAAC,YAAY,EAAEE,WAAW,CAACN,KAAK;UAEpC,IAAI;YACF;YACA;YACAY,cAAc,CAACZ,KAAK,CAAC8D,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,CAACZ,KAAK,CAACoE,SAAQ,GAAI,IAAIL,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAACK,SAAS,CAAC;cACnEH,MAAM,EAAE;YACV,CAAC,CAAC;;YAEF;YACAtD,cAAc,CAACZ,KAAK,CAACsE,SAAQ,GAAI,IAAIP,MAAM,CAACpC,IAAI,CAAC4C,SAAS,CAAC;cACzDL,MAAM,EAAE,EAAE;cACVM,YAAY,EAAE/D,QAAQ,CAACT,KAAI,KAAM,IAAG,GAAI,IAAI;YAC9C,CAAC,CAAC;;YAEF;YACAyE,mBAAmB,CAAC;;YAEpB;YACA,IAAI;cACF;cACA,MAAMC,OAAM,GAAI,IAAIX,MAAM,CAACpC,IAAI,CAACgD,OAAO,CAAC,CAAC;cACzC/D,cAAc,CAACZ,KAAK,CAAC4E,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;;UAEA;UACAC,WAAW,CAAC;QACd,CAAC;MAEH,EAAE,OAAOhE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9B3B,SAAS,CAAC2B,KAAK,CAAC,WAAWA,KAAK,CAACiE,OAAO,EAAE;MAC5C;IACF;;IAEA;IACA,MAAMD,WAAU,GAAI,MAAAA,CAAA,KAAY;MAC9B,IAAI;QACF/D,OAAO,CAACO,GAAG,CAAC,YAAY;QACxB,MAAMrB,KAAK,CAAC+E,QAAQ,CAAC,aAAa;;QAElC;QACAjE,OAAO,CAACO,GAAG,CAAC,UAAU,EAAErB,KAAK,CAACgF,KAAK;;QAEnC;QACA,MAAMC,MAAK,GAAIjF,KAAK,CAACgF,KAAK,CAACC,MAAK;QAChCnE,OAAO,CAACO,GAAG,CAAC,UAAU,EAAE4D,MAAM;QAE9B,IAAIC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;UACzBG,gBAAgB,CAAC;QACnB,OAAO;UACLtE,OAAO,CAACC,IAAI,CAAC,mBAAmB;UAChC,MAAMsE,gBAAe,GAAIrF,KAAK,CAACgF,KAAK,CAACC,MAAM,EAAEK,IAAG;UAChDxE,OAAO,CAACO,GAAG,CAAC,UAAU,EAAEgE,gBAAgB;UAExC,IAAIH,KAAK,CAACC,OAAO,CAACE,gBAAgB,CAAC,EAAE;YACnC;YACArF,KAAK,CAACuF,MAAM,CAAC,YAAY,EAAEF,gBAAgB;YAC3CD,gBAAgB,CAAC;UACnB;QACF;MACF,EAAE,OAAOvE,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,YAAY,EAAEA,KAAK;MACnC;IACF;;IAEA;IACA,MAAMuE,gBAAe,GAAIA,CAAA,KAAM;MAC7B,IAAI,CAACnF,WAAW,CAACN,KAAI,IAAK,CAAC+D,MAAM,CAACpC,IAAI,EAAE;;MAExC;MACA,MAAM2D,MAAK,GAAIjF,KAAK,CAACgF,KAAK,CAACC,MAAK,IAAK,EAAC;;MAEtC;MACA,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;QAC1BnE,OAAO,CAACC,IAAI,CAAC,cAAc,EAAEkE,MAAM;QACnC,OAAK,CAAE;MACT;MAEAnE,OAAO,CAACO,GAAG,CAAC,QAAQ,EAAE4D,MAAM;;MAE5B;MACAA,MAAM,CAACO,OAAO,CAACC,KAAI,IAAK;QACtB,IAAIA,KAAI,IAAKA,KAAK,CAACC,QAAO,IAAKD,KAAK,CAACE,SAAS,EAAE;UAC9CC,cAAc,CAACH,KAAK;QACtB;MACF,CAAC;IACH;;IAEA;IACA,MAAMG,cAAa,GAAKH,KAAK,IAAK;MAChC,IAAI,CAACxF,WAAW,CAACN,KAAI,IAAK,CAAC+D,MAAM,CAACpC,IAAI,EAAE;;MAExC;MACA,IAAInB,OAAO,CAACR,KAAK,CAAC8F,KAAK,CAACI,EAAE,CAAC,EAAE;QAC3B5F,WAAW,CAACN,KAAK,CAACmG,MAAM,CAAC3F,OAAO,CAACR,KAAK,CAAC8F,KAAK,CAACI,EAAE,CAAC;MAClD;;MAEA;MACA,IAAIE,WAAU,GAAI,SAAQ,EAAE;MAC5B,IAAIN,KAAK,CAACO,MAAK,KAAM,MAAM,EAAE;QAC3BD,WAAU,GAAI,SAAQ,EAAE;MAC1B,OAAO,IAAIN,KAAK,CAACO,MAAK,KAAM,OAAO,EAAE;QACnCD,WAAU,GAAI,SAAQ,EAAE;MAC1B;;MAEA;MACA,MAAME,MAAK,GAAI,IAAIvC,MAAM,CAACpC,IAAI,CAAC4E,MAAM,CAAC;QACpCtD,QAAQ,EAAE,CAAC6C,KAAK,CAACE,SAAS,EAAEF,KAAK,CAACC,QAAQ,CAAC;QAC3CS,IAAI,EAAE,IAAIzC,MAAM,CAACpC,IAAI,CAAC8E,IAAI,CAAC;UACzBC,IAAI,EAAE,IAAI3C,MAAM,CAACpC,IAAI,CAACgF,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;UAClCC,KAAK,EAAE,4BAA2B,GAAI/F,gBAAgB,CAAC;;qDAEZuF,WAAW;qFACqBN,KAAK,CAACI,EAAE;;WAElF,CAAC;UACFW,SAAS,EAAE,IAAI9C,MAAM,CAACpC,IAAI,CAACgF,IAAI,CAAC,EAAE,EAAE,EAAE;QACxC,CAAC,CAAC;QACFG,MAAM,EAAE,QAAQ;QAChB5C,MAAM,EAAE,GAAG;QACX6C,KAAK,EAAEjB,KAAK,CAACkB,OAAM,IAAK;MAC1B,CAAC;;MAED;MACAxG,OAAO,CAACR,KAAK,CAAC8F,KAAK,CAACI,EAAE,IAAII,MAAK;MAC/BhG,WAAW,CAACN,KAAK,CAACiH,GAAG,CAACX,MAAM;IAC9B;;IAEA;IACA,MAAMY,cAAa,GAAKC,KAAK,IAAK;MAChC,IAAI,CAAC7G,WAAW,CAACN,KAAK,EAAE;MAExB,IAAI;QACFU,eAAe,CAACV,KAAI,GAAImH,KAAI;QAE5B,QAAQA,KAAK;UACX,KAAK,WAAW;YACd;YACA,IAAI,CAACvG,cAAc,CAACZ,KAAK,CAACoE,SAAS,EAAE;cACnCxD,cAAc,CAACZ,KAAK,CAACoE,SAAQ,GAAI,IAAIL,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAACK,SAAS,CAAC;gBACnEH,MAAM,EAAE;cACV,CAAC;YACH;;YAEA;YACA5D,WAAW,CAACN,KAAK,CAACiH,GAAG,CAACrG,cAAc,CAACZ,KAAK,CAACoE,SAAS;;YAEpD;YACAK,mBAAmB,CAAC;YACpB;UAEF,KAAK,MAAM;YACT;YACA,IAAI7D,cAAc,CAACZ,KAAK,CAACoE,SAAS,EAAE;cAClC9D,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACvF,cAAc,CAACZ,KAAK,CAACoE,SAAS;YACzD;YACA;YACA9D,WAAW,CAACN,KAAK,CAACoH,WAAW,CAAC,oBAAoB;;YAElD;YACA3C,mBAAmB,CAAC;YACpB;UAEF;YACE;YACA,IAAI7D,cAAc,CAACZ,KAAK,CAACoE,SAAS,EAAE;cAClC9D,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACvF,cAAc,CAACZ,KAAK,CAACoE,SAAS;YACzD;YACA;YACA9D,WAAW,CAACN,KAAK,CAACoH,WAAW,CAAC,sBAAsB;;YAEpD;YACA3C,mBAAmB,CAAC;QACxB;QAEAtD,OAAO,CAACO,GAAG,CAAC,OAAOyF,KAAK,MAAM;MAChC,EAAE,OAAOjG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChC3B,SAAS,CAAC2B,KAAK,CAAC,aAAaA,KAAK,CAACiE,OAAO,EAAE;MAC9C;IACF;;IAEA;IACA,MAAMkC,cAAa,GAAK1H,IAAI,IAAK;MAC/B,IAAI,CAACW,WAAW,CAACN,KAAK,EAAE;MAExB,IAAI;QACF;QACA,IAAIL,IAAG,KAAM,IAAI,EAAE;UACjB;UACAW,WAAW,CAACN,KAAK,CAACsH,WAAW,CAAC,IAAI,CAAC;UACnChH,WAAW,CAACN,KAAK,CAACuH,QAAQ,CAAC,EAAE,CAAC,EAAE;UAChCpG,OAAO,CAACO,GAAG,CAAC,YAAY,CAAC;QAC3B,OAAO;UACL;UACApB,WAAW,CAACN,KAAK,CAACsH,WAAW,CAAC,IAAI,CAAC;UACnChH,WAAW,CAACN,KAAK,CAACuH,QAAQ,CAAC,CAAC,CAAC,EAAE;UAC/BpG,OAAO,CAACO,GAAG,CAAC,YAAY,CAAC;QAC3B;;QAEA;QACA,IAAIf,aAAa,CAACX,KAAK,CAACC,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC7C,IAAIW,cAAc,CAACZ,KAAK,CAACsE,SAAS,EAAE;YAClChE,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACvF,cAAc,CAACZ,KAAK,CAACsE,SAAS;UACzD;UACA1D,cAAc,CAACZ,KAAK,CAACsE,SAAQ,GAAI,IAAIP,MAAM,CAACpC,IAAI,CAAC4C,SAAS,CAAC;YACzDL,MAAM,EAAE,EAAE;YACV;YACAM,YAAY,EAAE7E,IAAG,KAAM,IAAG,GAAI,IAAI;UACpC,CAAC;UACDW,WAAW,CAACN,KAAK,CAACiH,GAAG,CAACrG,cAAc,CAACZ,KAAK,CAACsE,SAAS;QACtD;;QAEA;QACA,IAAI5D,eAAe,CAACV,KAAI,KAAM,WAAW,EAAE;UACzCkH,cAAc,CAAC,WAAW;QAC5B;MACF,EAAE,OAAOhG,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;QAChC3B,SAAS,CAAC2B,KAAK,CAAC,MAAMvB,IAAI,SAASuB,KAAK,CAACiE,OAAO,EAAE;MACpD;IACF;;IAEA;IACA,MAAMV,mBAAkB,GAAIA,CAAA,KAAM;MAChC,IAAI,CAACnE,WAAW,CAACN,KAAI,IAAK,CAAC+D,MAAM,CAACpC,IAAI,EAAE;MAExC,IAAI;QACFR,OAAO,CAACO,GAAG,CAAC,SAAS,EAAEf,aAAa,CAACX,KAAK;;QAE1C;QACA,IAAIW,aAAa,CAACX,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C,IAAI,CAACW,cAAc,CAACZ,KAAK,CAAC8D,OAAO,EAAE;YACjClD,cAAc,CAACZ,KAAK,CAAC8D,OAAM,GAAI,IAAIC,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAACC,OAAO,CAAC;cAC/DC,MAAM,EAAE,EAAE;cACVC,OAAO,EAAE;YACX,CAAC;UACH;UACA7D,WAAW,CAACN,KAAK,CAACiH,GAAG,CAACrG,cAAc,CAACZ,KAAK,CAAC8D,OAAO;UAClD3C,OAAO,CAACO,GAAG,CAAC,WAAW;QACzB,OAAO,IAAId,cAAc,CAACZ,KAAK,CAAC8D,OAAO,EAAE;UACvCxD,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACvF,cAAc,CAACZ,KAAK,CAAC8D,OAAO;UACrD3C,OAAO,CAACO,GAAG,CAAC,WAAW;QACzB;;QAEA;QACA,IAAIf,aAAa,CAACX,KAAK,CAACC,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC7C,IAAI,CAACW,cAAc,CAACZ,KAAK,CAACsE,SAAS,EAAE;YACnC1D,cAAc,CAACZ,KAAK,CAACsE,SAAQ,GAAI,IAAIP,MAAM,CAACpC,IAAI,CAAC4C,SAAS,CAAC;cACzDL,MAAM,EAAE,EAAE;cACVM,YAAY,EAAE/D,QAAQ,CAACT,KAAI,KAAM,IAAG,GAAI,IAAI;YAC9C,CAAC;UACH;UACAM,WAAW,CAACN,KAAK,CAACiH,GAAG,CAACrG,cAAc,CAACZ,KAAK,CAACsE,SAAS;UACpDnD,OAAO,CAACO,GAAG,CAAC,UAAU;QACxB,OAAO,IAAId,cAAc,CAACZ,KAAK,CAACsE,SAAS,EAAE;UACzChE,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACvF,cAAc,CAACZ,KAAK,CAACsE,SAAS;UACvDnD,OAAO,CAACO,GAAG,CAAC,UAAU;QACxB;;QAEA;QACA,IAAIf,aAAa,CAACX,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C,IAAI,CAACW,cAAc,CAACZ,KAAK,CAACwH,OAAO,EAAE;YACjC;YACA5G,cAAc,CAACZ,KAAK,CAACwH,OAAM,GAAI,IAAIzD,MAAM,CAACpC,IAAI,CAACqC,SAAS,CAAC;cACvDE,MAAM,EAAE,CAAC;cACTuD,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;UACAtH,WAAW,CAACN,KAAK,CAACiH,GAAG,CAACrG,cAAc,CAACZ,KAAK,CAACwH,OAAO;UAClDrG,OAAO,CAACO,GAAG,CAAC,SAAS;QACvB,OAAO,IAAId,cAAc,CAACZ,KAAK,CAACwH,OAAO,EAAE;UACvClH,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACvF,cAAc,CAACZ,KAAK,CAACwH,OAAO;UACrDrG,OAAO,CAACO,GAAG,CAAC,SAAS;QACvB;;QAEA;QACA,IAAIf,aAAa,CAACX,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C;UACA4H,eAAe,CAAC;QAClB,OAAO;UACL;UACAC,eAAe,CAAC;QAClB;;QAEA;QACA,IAAInH,aAAa,CAACX,KAAK,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C;UACAkB,OAAO,CAACO,GAAG,CAAC,YAAY;QAC1B;MACF,EAAE,OAAOR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,SAAS,EAAEA,KAAK;QAC9B3B,SAAS,CAAC2B,KAAK,CAAC,WAAWA,KAAK,CAACiE,OAAO,EAAE;MAC5C;IACF;;IAEA;IACA,MAAM0C,eAAc,GAAIA,CAAA,KAAM;MAC5B,IAAI,CAACvH,WAAW,CAACN,KAAI,IAAK,CAAC+D,MAAM,CAACpC,IAAI,EAAE;MAExC,IAAI;QACF;QACA,IAAIf,cAAc,CAACZ,KAAK,CAAC+H,cAAa,IAAKnH,cAAc,CAACZ,KAAK,CAAC+H,cAAc,CAACC,MAAK,GAAI,CAAC,EAAE;UACzFpH,cAAc,CAACZ,KAAK,CAAC+H,cAAc,CAAClC,OAAO,CAACS,MAAK,IAAK;YACpDhG,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACG,MAAM;UACjC,CAAC;QACH;;QAEA;QACA1F,cAAc,CAACZ,KAAK,CAAC+H,cAAa,GAAI,EAAC;;QAEvC;QACA,IAAI,CAACnH,cAAc,CAACZ,KAAK,CAAC4E,cAAc,EAAE;UACxChE,cAAc,CAACZ,KAAK,CAAC4E,cAAa,GAAI,IAAIb,MAAM,CAACpC,IAAI,CAACgD,OAAO,CAAC;QAChE;;QAEA;QACA,MAAMsD,MAAK,GAAI,CACb;UAAExI,IAAI,EAAE,IAAI;UAAEwD,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ;QAAE,CAAC,EAChD;UAAExD,IAAI,EAAE,IAAI;UAAEwD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,CAAC,EACjD;UAAExD,IAAI,EAAE,IAAI;UAAEwD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,CAAC,EACjD;UAAExD,IAAI,EAAE,IAAI;UAAEwD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,CAAC,EACjD;UAAExD,IAAI,EAAE,IAAI;UAAEwD,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS;QAAE,EAClD;;QAEA;QACAgF,MAAM,CAACpC,OAAO,CAACqC,IAAG,IAAK;UACrBtH,cAAc,CAACZ,KAAK,CAAC4E,cAAc,CAACC,OAAO,CAACqD,IAAI,CAACzI,IAAI,EAAE,CAACqF,GAAG,EAAEC,IAAI,KAAK;YACpE,IAAI,CAACD,GAAE,IAAKC,IAAI,EAAE;cAChB;cACA,MAAMoD,WAAU,GAAI;;mDAEiBD,IAAI,CAACzI,IAAI;kDACVsF,IAAI,CAACL,OAAO;kDACZK,IAAI,CAACqD,WAAW;kDAChBrD,IAAI,CAACsD,aAAa;kDAClBtD,IAAI,CAACuD,SAAS;kDACdvD,IAAI,CAACwD,QAAQ;;eAEjD;;cAEA;cACA,MAAMC,WAAU,GAAIC,cAAc,CAAC1D,IAAI,CAACL,OAAO;;cAE/C;cACA,MAAM4B,MAAK,GAAI,IAAIvC,MAAM,CAACpC,IAAI,CAAC4E,MAAM,CAAC;gBACpCtD,QAAQ,EAAEiF,IAAI,CAACjF,QAAQ;gBACvByF,OAAO,EAAE,+BAA+BF,WAAW,QAAQ;gBAC3DG,MAAM,EAAE,IAAI5E,MAAM,CAACpC,IAAI,CAACiH,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACvC1E,MAAM,EAAE,GAAG;gBACX2E,KAAK,EAAE,GAAGX,IAAI,CAACzI,IAAI,OAAOsF,IAAI,CAACL,OAAO,KAAKK,IAAI,CAACqD,WAAW;cAC7D,CAAC;;cAED;cACA,MAAMU,UAAS,GAAI,IAAI/E,MAAM,CAACpC,IAAI,CAACoH,UAAU,CAAC;gBAC5CL,OAAO,EAAEP,WAAW;gBACpBQ,MAAM,EAAE,IAAI5E,MAAM,CAACpC,IAAI,CAACiH,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;cACtC,CAAC;;cAED;cACAtC,MAAM,CAAC1C,EAAE,CAAC,OAAO,EAAE,MAAM;gBACvBkF,UAAU,CAACE,IAAI,CAAC1I,WAAW,CAACN,KAAK,EAAEkI,IAAI,CAACjF,QAAQ;cAClD,CAAC;;cAED;cACA3C,WAAW,CAACN,KAAK,CAACiH,GAAG,CAACX,MAAM;;cAE5B;cACA1F,cAAc,CAACZ,KAAK,CAAC+H,cAAc,CAACkB,IAAI,CAAC3C,MAAM;YACjD;UACF,CAAC;QACH,CAAC;QAEDnF,OAAO,CAACO,GAAG,CAAC,WAAW;MACzB,EAAE,OAAOR,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAAC,WAAW,EAAEA,KAAK;MAClC;IACF;;IAEA;IACA,MAAM4G,eAAc,GAAIA,CAAA,KAAM;MAC5B,IAAI,CAACxH,WAAW,CAACN,KAAK,EAAE;;MAExB;MACA,IAAIY,cAAc,CAACZ,KAAK,CAAC+H,cAAa,IAAKnH,cAAc,CAACZ,KAAK,CAAC+H,cAAc,CAACC,MAAK,GAAI,CAAC,EAAE;QACzFpH,cAAc,CAACZ,KAAK,CAAC+H,cAAc,CAAClC,OAAO,CAACS,MAAK,IAAK;UACpDhG,WAAW,CAACN,KAAK,CAACmG,MAAM,CAACG,MAAM;QACjC,CAAC;QACD1F,cAAc,CAACZ,KAAK,CAAC+H,cAAa,GAAI,EAAC;QACvC5G,OAAO,CAACO,GAAG,CAAC,WAAW;MACzB;IACF;;IAEA;IACA,MAAM+G,cAAa,GAAK/D,OAAO,IAAK;MAClC;MACA,MAAMwE,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,MAAMrH,GAAE,IAAKqH,KAAK,EAAE;QACvB,IAAIxE,OAAO,CAACzE,QAAQ,CAAC4B,GAAG,CAAC,EAAE;UACzB,OAAOqH,KAAK,CAACrH,GAAG;QAClB;MACF;;MAEA;MACA,OAAO,2OAA0O;IACnP;;IAEA;IACAxC,OAAO,CAAC,aAAa,EAAEiB,WAAW;;IAElC;IACA,MAAM6I,aAAY,GAAIA,CAAA,KAAM;MAC1B,IAAI7I,WAAW,CAACN,KAAK,EAAE;QACrBM,WAAW,CAACN,KAAK,CAACoJ,MAAM,CAAC;MAC3B;IACF;IAEAjK,SAAS,CAAC,MAAM;MACdmC,OAAO,CAAC;MACRyC,MAAM,CAACsF,gBAAgB,CAAC,QAAQ,EAAEF,aAAa;IACjD,CAAC;IAED/J,WAAW,CAAC,MAAM;MAChB2E,MAAM,CAACuF,mBAAmB,CAAC,QAAQ,EAAEH,aAAa;MAClD,IAAI7I,WAAW,CAACN,KAAK,EAAE;QACrBM,WAAW,CAACN,KAAK,CAACuJ,OAAO,CAAC;MAC5B;IACF,CAAC;;IAED;IACA,MAAMC,MAAK,GAAIA,CAAA,KAAMlJ,WAAW,CAACN,KAAI;IAErC,OAAO;MACLM,WAAW;MACXC,SAAS;MACTE,QAAQ;MACRC,eAAe;MACfC,aAAa;MACbuG,cAAc;MACdG,cAAc;MACd5C,mBAAmB;MACnB+E;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/f3ad4e7365a0d8bf1c105878117b3a9850c50e27a7ea7bdb91b7f3c251ad3ec2.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f3ad4e7365a0d8bf1c105878117b3a9850c50e27a7ea7bdb91b7f3c251ad3ec2.json
new file mode 100644
index 00000000..4fe2cf0e
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/f3ad4e7365a0d8bf1c105878117b3a9850c50e27a7ea7bdb91b7f3c251ad3ec2.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/ffd20f0e30f60fd876c29b1962c015751e0d48ed58aadb715771e3a226abfda6.json b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ffd20f0e30f60fd876c29b1962c015751e0d48ed58aadb715771e3a226abfda6.json
new file mode 100644
index 00000000..6afadec0
--- /dev/null
+++ b/Src/command_center/web-command-center/frontend/node_modules/.cache/babel-loader/ffd20f0e30f60fd876c29b1962c015751e0d48ed58aadb715771e3a226abfda6.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: \"map-container\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"add-mode-tip\"\n};\nconst _hoisted_9 = {\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_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 \"show-drones\": $setup.showDrones,\n \"show-drone-info\": $setup.showDroneInfo,\n onToggleDroneVisibility: $setup.toggleDroneVisibility,\n onToggleDroneInfo: $setup.toggleDroneInfo\n }, null, 8 /* PROPS */, [\"onToggleAddMode\", \"onClearTargets\", \"add-mode\", \"target-points\", \"show-drones\", \"show-drone-info\", \"onToggleDroneVisibility\", \"onToggleDroneInfo\"])])]),\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 drones: $setup.drones,\n \"selected-drone-id\": $setup.selectedDroneId,\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 onSelectDrone: $setup.selectDrone,\n onUpdatePlanningAlgorithm: $setup.updatePlanningAlgorithm,\n onUpdateFlightAltitude: $setup.updateFlightAltitude,\n onUpdateFlightSpeed: $setup.updateFlightSpeed\n }, null, 8 /* PROPS */, [\"drones\", \"selected-drone-id\", \"path-points\", \"add-mode\", \"planning-algorithm\", \"flight-altitude\", \"flight-speed\", \"path-info\", \"onToggleAddMode\", \"onClearAll\", \"onPlanPath\", \"onExecutePath\", \"onRemovePoint\", \"onCenterToStart\", \"onCenterToEnd\", \"onFitToPath\", \"onSelectDrone\", \"onUpdatePlanningAlgorithm\", \"onUpdateFlightAltitude\", \"onUpdateFlightSpeed\"])])]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\", \"onTabClick\"])])]), _createCommentVNode(\" 右侧地图区域 \"), _createElementVNode(\"div\", _hoisted_7, [_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_8, [_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_9, [_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","showDrones","showDroneInfo","onToggleDroneVisibility","toggleDroneVisibility","onToggleDroneInfo","toggleDroneInfo","_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","drones","selectedDroneId","pathPoints","planningAlgorithm","flightAltitude","flightSpeed","pathInfo","onClearAll","clearAll","onPlanPath","planPath","onExecutePath","executePath","onRemovePoint","removePoint","onCenterToStart","centerToStart","onCenterToEnd","centerToEnd","onFitToPath","fitToPath","onSelectDrone","selectDrone","onUpdatePlanningAlgorithm","updatePlanningAlgorithm","onUpdateFlightAltitude","updateFlightAltitude","onUpdateFlightSpeed","updateFlightSpeed","_hoisted_7","_component_SharedMap","mode","onMapLoaded","onMapClick","ref","_hoisted_8","_component_el_alert","title","getAddModeTip","type","_hoisted_9","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 "],"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 5381c8b9..4ee79288 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
@@ -62,7 +62,7 @@ export default {
const store = useStore()
const mapInstance = ref(null)
const mapLoaded = ref(false)
- const markers = ref({})
+
const viewMode = ref('3D')
const currentMapStyle = ref('normal')
const overlayLayers = ref(['buildings'])
@@ -128,7 +128,7 @@ export default {
// 创建地图实例
mapInstance.value = new AMap.Map('sharedMap', {
zoom: 11,
- center: [116.397428, 39.90923],
+ center: [112.982279, 28.19409], // 长沙坐标
viewMode: viewMode.value,
pitch: viewMode.value === '3D' ? 45 : 0,
rotation: 0,
@@ -226,8 +226,7 @@ export default {
console.error('图层初始化失败:', layerError);
}
- // 主动获取无人机数据,而不是直接初始化
- fetchDrones()
+ console.log('地图初始化完成')
})
} catch (error) {
@@ -237,98 +236,7 @@ export default {
}
// 添加主动获取无人机数据的方法
- const fetchDrones = async () => {
- try {
- console.log('获取无人机数据...')
- await store.dispatch('fetchDrones')
-
- // 查看完整状态
- console.log('Store状态:', store.state)
-
- // 尝试直接获取正确的无人机数据
- const drones = store.state.drones
- console.log('无人机数据状态:', drones)
-
- if (Array.isArray(drones)) {
- initDroneMarkers()
- } else {
- console.warn('无人机数据格式不正确,从模块中获取')
- const dronesFromModule = store.state.drones?.list
- console.log('无人机模块数据:', dronesFromModule)
-
- if (Array.isArray(dronesFromModule)) {
- // 先将数据设置到根状态,以便标记初始化能正常工作
- store.commit('SET_DRONES', dronesFromModule)
- initDroneMarkers()
- }
- }
- } catch (error) {
- console.error('获取无人机数据失败:', error)
- }
- }
- // 初始化无人机标记
- const initDroneMarkers = () => {
- if (!mapInstance.value || !window.AMap) return
-
- // 从store获取无人机数据,确保是数组
- const drones = store.state.drones || []
-
- // 检查drones是否为数组
- if (!Array.isArray(drones)) {
- console.warn('无人机数据不是数组格式:', drones)
- return // 如果不是数组,直接返回
- }
-
- console.log('无人机数据:', drones)
-
- // 遍历添加无人机标记
- drones.forEach(drone => {
- if (drone && drone.latitude && drone.longitude) {
- addDroneMarker(drone)
- }
- })
- }
-
- // 添加无人机标记
- const addDroneMarker = (drone) => {
- if (!mapInstance.value || !window.AMap) return
-
- // 如果已存在该无人机的标记,先移除
- if (markers.value[drone.id]) {
- mapInstance.value.remove(markers.value[drone.id])
- }
-
- // 根据无人机状态设置不同的颜色
- let statusColor = '#2ecc71' // 默认绿色 - active
- if (drone.status === 'idle') {
- statusColor = '#3498db' // 蓝色
- } else if (drone.status === 'error') {
- statusColor = '#e74c3c' // 红色
- }
-
- // 创建无人机标记
- const marker = new window.AMap.Marker({
- position: [drone.longitude, drone.latitude],
- icon: new window.AMap.Icon({
- size: new window.AMap.Size(40, 40),
- image: 'data:image/svg+xml;base64,' + safeBase64Encode(`
-
- `),
- imageSize: new window.AMap.Size(40, 40)
- }),
- anchor: 'center',
- zIndex: 100,
- angle: drone.heading || 0,
- })
-
- // 保存标记
- markers.value[drone.id] = marker
- mapInstance.value.add(marker)
- }
// 修改地图样式切换功能
const changeMapStyle = (style) => {
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 70ac5adf..e7102e08 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
@@ -10,8 +10,8 @@
-
-
+
+
-
路径点 ({{ pathPoints.length }}个)
+
路径规划 (1对多)
+
+
+
+
+
• 第1个点为起点,其余为目标点
+
• 系统将按最优顺序访问所有目标点
+
• 优先访问安全区域的目标点
+
+
+
+
+
- 规划路径
+ A*规划路径
@@ -59,11 +76,19 @@
v-for="(point, index) in pathPoints"
:key="index"
class="path-point-item"
+ :class="{ 'start-point': index === 0, 'target-point': index > 0 }"
>
-
{{ index + 1 }}
-
- {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}
+
+ {{ index === 0 ? '起' : index }}
+
+
+ {{ point.lng.toFixed(4) }}, {{ point.lat.toFixed(4) }}
+
+
+ {{ index === 0 ? '起点' : `目标点${index}` }}
+
+
+
+
+ 点击地图添加路径点
+
+
+
+ 再添加至少1个目标点
+
+
+
+ 总计: 1个起点 + {{ pathPoints.length - 1 }}个目标点
+
-
规划参数
+
A*算法参数
-
-
-
-
+
+
+
+ 智能避开威胁区域,优化访问顺序
+
+ 米
+ m/s
-
路径信息
+
路径规划结果
-
总距离: {{ pathInfo.distance }}米
-
预计时间: {{ pathInfo.duration }}分钟
-
路径点数: {{ pathInfo.pointCount }}个
+
+ 算法:
+ {{ getAlgorithmName(pathInfo.algorithm) }}
+
+
+ 总距离:
+ {{ (pathInfo.distance / 1000).toFixed(2) }} km
+
+
+ 预计时间:
+ {{ pathInfo.duration }} 分钟
+
+
+ 路径点数:
+ {{ pathInfo.pointCount }} 个
+
+
+ 避开威胁:
+ {{ pathInfo.threatZonesAvoided.length }} 个区域
+
+
+ 访问顺序:
+ 已优化
+
-
- 执行路径
+
+ 执行路径规划
@@ -186,7 +247,7 @@ export default {
},
planningAlgorithm: {
type: String,
- default: 'straight'
+ default: 'astar'
},
flightAltitude: {
type: Number,
@@ -251,6 +312,17 @@ export default {
emit('update-flight-speed', value)
}
+ // 获取算法显示名称
+ const getAlgorithmName = (algorithm) => {
+ const algorithmNames = {
+ astar: 'A*算法',
+ rrt: 'RRT算法',
+ genetic: '遗传算法',
+ straight: '直线规划'
+ }
+ return algorithmNames[algorithm] || algorithm
+ }
+
return {
droneId,
algorithm,
@@ -259,7 +331,8 @@ export default {
onSelectDrone,
onAlgorithmChange,
onAltitudeChange,
- onSpeedChange
+ onSpeedChange,
+ getAlgorithmName
}
}
}
@@ -301,28 +374,67 @@ h4 {
.path-point-item {
display: flex;
align-items: center;
- padding: 5px;
- margin-bottom: 5px;
- background-color: #f5f7fa;
- border-radius: 4px;
+ padding: 8px;
+ margin-bottom: 6px;
+ background: #f9f9f9;
+ border-radius: 6px;
+ border-left: 3px solid #e6e6e6;
+ transition: all 0.3s ease;
+}
+
+.path-point-item:hover {
+ background: #f0f0f0;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+}
+
+.path-point-item.start-point {
+ border-left-color: #1890FF;
+ background: linear-gradient(90deg, #e6f7ff 0%, #f9f9f9 100%);
+}
+
+.path-point-item.target-point {
+ border-left-color: #52C41A;
+ background: linear-gradient(90deg, #f6ffed 0%, #f9f9f9 100%);
}
.point-index {
- width: 24px;
- height: 24px;
display: flex;
align-items: center;
justify-content: center;
- background-color: #409EFF;
- color: white;
+ width: 24px;
+ height: 24px;
border-radius: 50%;
- margin-right: 10px;
+ background: #52C41A;
+ color: white;
font-size: 12px;
+ font-weight: bold;
+ margin-right: 10px;
+ flex-shrink: 0;
+}
+
+.point-index.start {
+ background: #1890FF;
+ width: 28px;
+ height: 28px;
+ font-size: 14px;
+}
+
+.point-info {
+ flex: 1;
+ min-width: 0;
}
.point-coords {
- flex-grow: 1;
- font-size: 12px;
+ font-size: 13px;
+ font-family: monospace;
+ color: #333;
+ font-weight: 500;
+}
+
+.point-type {
+ font-size: 11px;
+ color: #666;
+ margin-top: 2px;
}
.path-info {
@@ -341,4 +453,55 @@ h4 {
display: flex;
justify-content: space-between;
}
+
+.planning-info {
+ margin-bottom: 12px;
+}
+
+.algorithm-desc {
+ font-size: 12px;
+ color: #909399;
+}
+
+.unit {
+ margin-left: 10px;
+ font-size: 12px;
+ color: #909399;
+}
+
+.info-item {
+ margin-bottom: 5px;
+}
+
+.label {
+ font-size: 12px;
+ color: #909399;
+}
+
+.value {
+ font-size: 14px;
+ font-weight: 600;
+}
+
+.empty-hint {
+ text-align: center;
+ color: #909399;
+ font-size: 12px;
+}
+
+.hint {
+ text-align: center;
+ color: #909399;
+ font-size: 12px;
+}
+
+.summary {
+ text-align: center;
+ color: #909399;
+ font-size: 12px;
+}
+
+.threat-avoided {
+ color: #f56c6c;
+}
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/src/store/index.js b/Src/command_center/web-command-center/frontend/src/store/index.js
index b6934880..151699f4 100644
--- a/Src/command_center/web-command-center/frontend/src/store/index.js
+++ b/Src/command_center/web-command-center/frontend/src/store/index.js
@@ -46,100 +46,46 @@ const auth = {
}
}
-const drones = {
- namespaced: true,
- state: () => ({
- list: []
- }),
- mutations: {
- setDrones(state, drones) {
- state.list = drones
- }
- },
- actions: {
- async fetchDrones({ commit, rootState }) {
- // 这里应调用后端API获取无人机列表
- const token = rootState.auth.token
- try {
- const res = await axios.get(`${API_URL}/api/drones`, {
- headers: { Authorization: `Bearer ${token}` }
- })
- commit('setDrones', res.data.data || [])
- } catch {
- commit('setDrones', [])
- }
- }
- }
-}
-
export default createStore({
state: {
- // 根级别的无人机状态,用于兼容MapView
- drones: []
+ // 威胁区域数据
+ threatZones: [],
+ // 路径规划数据
+ pathPlans: []
},
mutations: {
- // 根级别的无人机mutations
- SET_DRONES(state, drones) {
- state.drones = drones
+ SET_THREAT_ZONES(state, zones) {
+ state.threatZones = zones
},
- setDrones(state, drones) {
- state.drones = drones
+ SET_PATH_PLANS(state, plans) {
+ state.pathPlans = plans
}
},
actions: {
- // 根级别的无人机actions
- async fetchDrones({ commit, state }) {
+ async fetchThreatZones({ commit }) {
try {
- const token = state.auth?.token || localStorage.getItem('token')
- const headers = {}
- if (token) {
- headers['Authorization'] = `Bearer ${token}`
+ const res = await axios.get(`${API_URL}/api/threat-zones`)
+ if (res.data && res.data.success) {
+ commit('SET_THREAT_ZONES', res.data.data)
}
-
- const res = await axios.get(`${API_URL}/api/drones`, { headers })
-
- if (res.data && res.data.success && Array.isArray(res.data.data)) {
- commit('SET_DRONES', res.data.data)
- } else if (res.data && Array.isArray(res.data)) {
- commit('SET_DRONES', res.data)
- } else {
- throw new Error('无效的数据格式')
+ } catch (error) {
+ console.error('获取威胁区域数据失败:', error)
+ commit('SET_THREAT_ZONES', [])
+ }
+ },
+ async fetchPathPlans({ commit }) {
+ try {
+ const res = await axios.get(`${API_URL}/api/path-planning`)
+ if (res.data && res.data.success) {
+ commit('SET_PATH_PLANS', res.data.data)
}
} catch (error) {
- console.warn('获取无人机数据失败,使用模拟数据:', error)
- // 使用模拟数据
- const mockDrones = [
- {
- id: 1,
- name: '侦察无人机-01',
- latitude: 39.9042,
- longitude: 116.4074,
- status: 'active',
- battery: 85
- },
- {
- id: 2,
- name: '运输无人机-02',
- latitude: 39.9100,
- longitude: 116.4200,
- status: 'idle',
- battery: 60
- },
- {
- id: 3,
- name: '攻击无人机-03',
- latitude: 39.8950,
- longitude: 116.3900,
- status: 'active',
- battery: 95
- }
- ]
- commit('SET_DRONES', mockDrones)
+ console.error('获取路径规划数据失败:', error)
+ commit('SET_PATH_PLANS', [])
}
}
},
modules: {
- auth,
- drones
+ auth
}
})
\ No newline at end of file
diff --git a/Src/command_center/web-command-center/frontend/src/views/UnifiedMapView.vue b/Src/command_center/web-command-center/frontend/src/views/UnifiedMapView.vue
index d8403699..e40029a1 100644
--- a/Src/command_center/web-command-center/frontend/src/views/UnifiedMapView.vue
+++ b/Src/command_center/web-command-center/frontend/src/views/UnifiedMapView.vue
@@ -13,10 +13,6 @@
@clear-targets="clearTargets"
:add-mode="addMode"
:target-points="targetPoints"
- :show-drones="showDrones"
- :show-drone-info="showDroneInfo"
- @toggle-drone-visibility="toggleDroneVisibility"
- @toggle-drone-info="toggleDroneInfo"
/>
@@ -55,8 +51,6 @@