+
{{ field.label }}:
{{ field.value }}
@@ -149,12 +92,8 @@
-
@@ -163,11 +102,7 @@
-

+

-
+
-
+
-
+
-
+
-
+
-
+
@@ -770,6 +681,9 @@ const handleForcePresetToggle = async () => {
if (!showMarkersAndRange.value) {
// 当前隐藏,切换为显示
+ // 切换搜索范围为50km
+ disasterData.updateSearchRadius(50);
+
// 1. 关闭地图对比模式(使用统一助手)
if (isCompareMode.value) {
console.log("[index.vue] 快速匹配需要关闭对比模式");
@@ -1034,11 +948,11 @@ const handleDistanceChange = async (newDistance) => {
// 3. 重新加载应急资源数据并更新地图标记
// await loadEmergencyResources(DISASTER_CENTER.lon, DISASTER_CENTER.lat)
- // 4. 重新加载储备中心和预置点数据并更新地图标记
- await loadReserveCentersAndPresets(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
+ // 3. 重新加载储备中心和预置点数据并更新地图标记 并且 重新加载应急统计数据 (新增)
+ await loadReserveCentersAndPresetsAndStatistics(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
- // 5. 重新加载应急统计数据 (新增)
- await loadEmergencyBaseAndPreset(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
+ // // 5. 重新加载应急统计数据 (新增)
+ // await loadEmergencyBaseAndPreset(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
};
/**
@@ -1065,7 +979,7 @@ const showAllMarkersAndRange = async () => {
// 2. 加载全部储备中心/预置点到地图(不限制距离)
console.log("[index.vue] 加载全部储备中心/预置点到地图...");
- await loadReserveCentersAndPresets(
+ await loadReserveCentersAndPresetsAndStatistics(
DISASTER_CENTER.lon,
DISASTER_CENTER.lat,
true
@@ -1269,12 +1183,12 @@ const loadEmergencyResources = async (longitude, latitude) => {
};
/**
- * 加载储备中心和预置点数据
+ * 加载储备中心和预置点数据 以及加载应急力量统计数据
* @param {number} longitude - 经度(可选,不传则查询全部)
* @param {number} latitude - 纬度(可选,不传则查询全部)
* @param {boolean} loadAllForMap - 是否加载全部点位到地图(true时不限制距离)
*/
-const loadReserveCentersAndPresets = async (
+const loadReserveCentersAndPresetsAndStatistics = async (
longitude,
latitude,
loadAllForMap = false
@@ -1292,21 +1206,21 @@ const loadReserveCentersAndPresets = async (
// loadAllForMap 为 true 时,不传任何参数,获取全部数据
const response = await request({
- url: `/snow-ops-platform/yhYjll/list`,
+ url: `/snow-ops-platform/yhYjll/listWithStatistics`,
method: "GET",
params,
});
- if (response?.data && Array.isArray(response.data)) {
+ if (response?.data && Array.isArray(response.data?.list)) {
console.log(
"[index.vue] 储备中心和预置点数据加载成功:",
- response.data.length,
+ response.data?.list.length,
"个点位"
);
// 1. 转换数据为标准 stations 格式
const transformedStations = disasterData.transformReserveDataToStations(
- response.data,
+ response.data.list,
{ longitude, latitude }
);
@@ -1320,13 +1234,22 @@ const loadReserveCentersAndPresets = async (
);
}
- // 3. 添加地图标记(全部或范围内)
+ // 3.更新应急力量统计列表
+ if (response?.data?.statistics) {
+ // 保存统计数据到状态 (仅更新统计,不更新stations)
+ disasterData.updateForcePreset(response.data.statistics, { onlyStatistics: true });
+ console.log("[index.vue] 应急统计数据加载成功:", response.data.statistics);
+ } else {
+ console.warn("[index.vue] 应急统计数据接口返回数据为空");
+ }
+
+ // 4. 添加地图标记(全部或范围内)
if (mapStore.viewer) {
console.log("[index.vue] 添加储备中心和预置点地图标记...");
clearReserveCenterMarkers(mapStore.viewer);
await addReserveCenterMarkers(
mapStore.viewer,
- response.data,
+ response.data.list,
{
heightOffset: 10,
},
@@ -1354,36 +1277,36 @@ const loadReserveCentersAndPresets = async (
* 加载应急基地与预置点、应急装备、应急物资、应急人员的统计数量
* /snow-ops-platform/yhYjll/statistics
*/
-const loadEmergencyBaseAndPreset = async (longitude, latitude) => {
- try {
- const response = await request({
- url: `/snow-ops-platform/yhYjll/statistics`,
- method: "GET",
- params: {
- longitude,
- latitude,
- maxDistance: disasterData.forcePreset.value.searchRadius,
- },
- });
+// const loadEmergencyBaseAndPreset = async (longitude, latitude) => {
+// try {
+// const response = await request({
+// url: `/snow-ops-platform/yhYjll/statistics`,
+// method: "GET",
+// params: {
+// longitude,
+// latitude,
+// maxDistance: disasterData.forcePreset.value.searchRadius,
+// },
+// });
- if (response?.data) {
- // 保存统计数据到状态 (仅更新统计,不更新stations)
- disasterData.updateForcePreset(response.data, { onlyStatistics: true });
- console.log("[index.vue] 应急统计数据加载成功:", response.data);
- } else {
- console.warn("[index.vue] 应急统计数据接口返回数据为空");
- }
+// if (response?.data) {
+// // 保存统计数据到状态 (仅更新统计,不更新stations)
+// disasterData.updateForcePreset(response.data, { onlyStatistics: true });
+// console.log("[index.vue] 应急统计数据加载成功:", response.data);
+// } else {
+// console.warn("[index.vue] 应急统计数据接口返回数据为空");
+// }
- return response;
- } catch (error) {
- console.error("[index.vue] 加载应急统计数据失败:", error);
- ElMessage.warning({
- message: "应急统计数据加载失败",
- duration: 3000,
- });
- return null;
- }
-};
+// return response;
+// } catch (error) {
+// console.error("[index.vue] 加载应急统计数据失败:", error);
+// ElMessage.warning({
+// message: "应急统计数据加载失败",
+// duration: 3000,
+// });
+// return null;
+// }
+// };
/**
* 查询应急装备和应急物资列表 /snow-ops-platform/yhYjll/listMaterials
@@ -1635,13 +1558,13 @@ const initializeScene = async () => {
hideMarkers();
console.log("[index.vue] 已隐藏应急资源标记(等待快速匹配激活)");
- // 12. 加载储备中心和预置点数据
+ // 12. 加载储备中心和预置点数据 并且 加载应急统计数据(新增)
console.log("[index.vue] 加载储备中心和预置点数据...");
- await loadReserveCentersAndPresets(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
+ await loadReserveCentersAndPresetsAndStatistics(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
- // 13. 加载应急统计数据
- console.log("[index.vue] 加载应急统计数据...");
- await loadEmergencyBaseAndPreset(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
+ // // 13. 加载应急统计数据
+ // console.log("[index.vue] 加载应急统计数据...");
+ // await loadEmergencyBaseAndPreset(DISASTER_CENTER.lon, DISASTER_CENTER.lat);
cesiumViewer.value = viewer;
console.log("[index.vue] 场景初始化完成");
@@ -1748,6 +1671,7 @@ if (token) {
@supports (width: 1cqw) {
--cq-inline-100: min(100cqw, 1920px);
}
+
@supports (height: 1cqh) {
--cq-block-100: min(100cqh, 1080px);
}
@@ -1757,9 +1681,7 @@ if (token) {
--sa-right-width: calc(486 / 1920 * var(--cq-inline-100, 100vw));
--sa-gap: calc(16 / 1920 * var(--cq-inline-100, 100vw));
--sa-padding: calc(16 / 1920 * var(--cq-inline-100, 100vw));
- --sa-header-height: calc(
- 131 / 1080 * var(--cq-block-100, 100vh)
- ); // Header 高度
+ --sa-header-height: calc(131 / 1080 * var(--cq-block-100, 100vh)); // Header 高度
--sa-min-width: 1280px;
--sa-min-height: 720px;
@@ -1847,12 +1769,10 @@ if (token) {
top: 0;
bottom: 0;
width: 2px;
- background: linear-gradient(
- to bottom,
- rgba(255, 255, 255, 0.1),
- rgba(255, 255, 255, 0.5),
- rgba(255, 255, 255, 0.1)
- );
+ background: linear-gradient(to bottom,
+ rgba(255, 255, 255, 0.1),
+ rgba(255, 255, 255, 0.5),
+ rgba(255, 255, 255, 0.1));
z-index: 1;
pointer-events: none;
}
@@ -1864,8 +1784,7 @@ if (token) {
z-index: 1;
pointer-events: none; // 不阻挡交互
// 使用 cockpit 的遮罩层图片,保持视觉一致性
- background: url(@/views/cockpit/assets/img/遮罩层.png) center/cover
- no-repeat;
+ background: url(@/views/cockpit/assets/img/遮罩层.png) center/cover no-repeat;
}
// 场景标签层 - 显示在遮罩层和面板层之上
@@ -2091,8 +2010,7 @@ if (token) {
min-width: vw(100);
height: vh(36);
padding: 0 vw(24);
- background: url("./assets/images/地图tooltip-button.png") no-repeat
- center/100% 100%;
+ background: url("./assets/images/地图tooltip-button.png") no-repeat center/100% 100%;
border: none;
color: var(--text-white);
font-size: fs(14);