-
+
diff --git a/frontend/src/components/SidePanelItem/index.vue b/frontend/src/components/SidePanelItem/index.vue
index 085b7300..7741a801 100644
--- a/frontend/src/components/SidePanelItem/index.vue
+++ b/frontend/src/components/SidePanelItem/index.vue
@@ -51,6 +51,7 @@
+
{
+ console.log(_regionId, isAll);
if (!this.viewer || !this.hydropBaseConfig) {
console.warn('地图未初始化或 hydropBaseConfig 未配置');
return;
}
+ console.log(_regionId, isAll);
// 取消正在进行的裁切请求
if (this.clipRequestController) {
this.clipRequestController.abort();
this.clipRequestController = null;
}
+ console.log(this.BASEID);
this.BASEID = _regionId;
diff --git a/frontend/src/components/gis/map.ol.ts b/frontend/src/components/gis/map.ol.ts
index d3dceb50..ac65bf55 100644
--- a/frontend/src/components/gis/map.ol.ts
+++ b/frontend/src/components/gis/map.ol.ts
@@ -205,7 +205,6 @@ export class MapOl implements MapInterface {
}
this.popupManager.showPopup(undefined, undefined);
this.popupManager.handleMapClick(evt.pixel, detectedFeature => {
- console.log(detectedFeature);
if (detectedFeature.values_.sttpMap == 'ylfb') {
modelStore.ylfbModalVisible = true;
modelStore.params = detectedFeature.values_;
@@ -1876,6 +1875,8 @@ export class MapOl implements MapInterface {
this.layerRegistry.delete(layer.key);
}
+ console.log(layer);
+
if (layer.type === 'wmts') {
if (!layer.url) return;
const url = !isCache ? layer.url : layer.url_3d;
@@ -1993,7 +1994,8 @@ export class MapOl implements MapInterface {
this.layerRegistry.set(layer.key, tileLayer);
this.map.addLayer(tileLayer);
} else if (layer.type === 'vector') {
- if (layer.key === 'hydropBase') {
+ console.log(layer);
+ if (layer.id === 'hydropBase') {
this.hydropBaseConfig = layer;
}
}
@@ -2089,15 +2091,19 @@ export class MapOl implements MapInterface {
_regionId: string,
isAll: boolean
): Promise {
+ console.log(_regionId, isAll);
+ console.log(_regionId, this.hydropBaseConfig);
if (!this.map || !this.hydropBaseConfig) {
console.warn('地图未初始化或 hydropBaseConfig 未配置');
return;
}
+ console.log(123, 444);
if (this.clipRequestController) {
this.clipRequestController.abort();
this.clipRequestController = null;
}
+ console.log(this.BASEID);
this.BASEID = _regionId;
diff --git a/frontend/src/components/mapFilter/index.vue b/frontend/src/components/mapFilter/index.vue
index 93af03ad..73aa3fdf 100644
--- a/frontend/src/components/mapFilter/index.vue
+++ b/frontend/src/components/mapFilter/index.vue
@@ -125,6 +125,7 @@ import { useMapViewStore } from '@/modules/map/stores/map-view.store';
import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import { useUiStore } from '@/store/modules/ui';
import { useMapStore } from '@/store/modules/map';
+import { useModelStore } from '@/store/modules/model';
import { DateSetting } from '@/utils/enumeration';
import { getFishList, getFishPointList } from '@/api/map';
@@ -135,6 +136,7 @@ const mapViewStore = useMapViewStore();
const uiStore = useUiStore();
const jidiSelectEventStore = useJidiSelectEventStore();
const mapStore = useMapStore();
+const modelStore = useModelStore();
const mapClass = MapClass.getInstance();
const ENG_POINT_LAYER_KEY = 'eng_point';
const YLFB_POINT_LAYER_KEY = 'ylfb_point';
@@ -206,6 +208,15 @@ const anchorPointSelectValue = computed({
}
});
+// 备注:下拉检索选中点位后同步到 modelStore.selectedAnchorPoint,供基本信息等面板消费。
+watch(anchorPointSelectValue, value => {
+ if (!value) return;
+ const matched = anchorPointOptions.value.find(item => item.stcd === value);
+ if (matched) {
+ modelStore.selectedAnchorPoint = matched;
+ }
+});
+
// 备注:切页时只重置本地表单输入,并通过编排器复位时间范围,不再直接改运行态 store。
watch(
() => route.path,
@@ -220,6 +231,7 @@ watch(
anchorPointSelect: null,
fishSurveyZhuanZhi: false
};
+ handleSearch(false);
resetFishSurveyState();
}
);
@@ -587,6 +599,7 @@ watch(
return;
}
formModel.value.anchorPointSelect = null;
+ handleSearch(false);
},
{ immediate: true }
);
@@ -628,6 +641,7 @@ watch(
const handleCapacityChange = (value: string) => {
formModel.value.anchorPointSelect = null;
+ handleSearch(false);
mapOrchestrator.changeEngPointCapacity(value);
};
@@ -645,19 +659,32 @@ const focusSelectedAnchorPoint = () => {
return;
}
- mapOrchestrator.focusPoint(
- selectedValue,
- uiStore.mapType === '3D' ? 8 : 14,
- isFishSurveyMode.value ? anchorPointOptions.value : undefined
- );
+ // mapOrchestrator.focusPoint(
+ // selectedValue,
+ // uiStore.mapType === '3D' ? 8 : 14,
+ // isFishSurveyMode.value ? anchorPointOptions.value : undefined
+ // );
};
// 备注:搜索定位只分发定位命令,不在筛选组件里直接操作地图实例。
const handleAnchorPointChange = (value: string) => {
+ if (value == null) handleSearch(false);
if (!value) return;
focusSelectedAnchorPoint();
+ handleSearch(true);
};
+// 备注:用 function 声明以提升到作用域顶部,供上方 immediate watch 安全调用。
+function handleSearch(open: boolean) {
+ if (uiStore.searchDrawerOpen === open) {
+ return;
+ }
+ uiStore.setDrawerOpen(false);
+ setTimeout(() => {
+ uiStore.setSearchDrawerOpen(open);
+ uiStore.setDrawerOpen(true);
+ }, 500);
+}
watch(
() => uiStore.mapSwitchCompletedTick,
async (newVal, oldVal) => {
diff --git a/frontend/src/modules/map/application/map-orchestrator.ts b/frontend/src/modules/map/application/map-orchestrator.ts
index 0ca5c4be..3aa4d9d9 100644
--- a/frontend/src/modules/map/application/map-orchestrator.ts
+++ b/frontend/src/modules/map/application/map-orchestrator.ts
@@ -133,6 +133,7 @@ export const useMapOrchestrator = () => {
}
if (!initializedBaseLayerKeys.has(item.key)) {
+ console.log(item.config);
mapClass.addBaseDataLayer(item.config, item.checked === 1);
initializedBaseLayerKeys.add(item.key);
}
diff --git a/frontend/src/modules/rightSearchDrawer/basicInfo/config.ts b/frontend/src/modules/rightSearchDrawer/basicInfo/config.ts
new file mode 100644
index 00000000..64733972
--- /dev/null
+++ b/frontend/src/modules/rightSearchDrawer/basicInfo/config.ts
@@ -0,0 +1,382 @@
+const ENGInfo = [
+ {
+ label: '电站名称',
+ value: 'ennm',
+ col: 12
+ },
+ {
+ label: '所属基地',
+ value: 'baseName',
+ col: 12
+ },
+ {
+ label: '所在河段',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '详细地址',
+ value: 'stlc',
+ col: 24
+ },
+ {
+ label: '所属集团',
+ value: 'topHynm',
+ col: 24
+ },
+ {
+ label: '所属公司',
+ value: 'hynm',
+ col: 24
+ },
+ {
+ label: '装机容量(万kW)',
+ value: 'ttpwr',
+ col: 24
+ },
+ {
+ label: '多年平均年发电量(亿kW·h)',
+ value: 'yrge',
+ col: 24
+ },
+ {
+ label: '建设时间',
+ value: 'jcdt',
+ type: 'date',
+ col: 24
+ }
+];
+
+const DWInfo = [
+ {
+ label: '设施名称',
+ value: 'stnm',
+ col: 12
+ },
+ {
+ label: '设施类型',
+ value: 'sttpName',
+ col: 12
+ },
+ {
+ label: '所属基地',
+ value: 'baseName',
+ col: 24
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ }
+];
+
+const EQInfo = [
+ {
+ label: '设施名称',
+ value: 'stnm',
+ col: 24
+ },
+ {
+ label: '所属基地',
+ value: 'baseName',
+ col: 24
+ },
+ {
+ label: '所属电站',
+ value: 'ennm',
+ col: 24
+ }
+];
+const FBInfo = [
+ {
+ label: '增殖站名称',
+ value: 'stnm',
+ col: 24
+ },
+ {
+ label: '所属基地',
+ value: 'baseName',
+ col: 24
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '建成日期',
+ value: 'jcdt',
+ type: 'date',
+ col: 24
+ }
+];
+const VPInfo = [
+ {
+ label: '植物园名称',
+ value: 'stnm',
+ col: 24
+ },
+ {
+ label: '站址',
+ value: 'stlc',
+ col: 24
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '建成日期',
+ value: 'jcdt',
+ type: 'date',
+ col: 12
+ },
+ {
+ label: '面积(km²)',
+ value: 'area',
+ col: 12
+ },
+ {
+ label: '保护对象',
+ value: 'protObj',
+ col: 24
+ },
+ {
+ label: '保护方式',
+ value: 'bhfs',
+ col: 24
+ }
+];
+const VAInfo = [
+ {
+ label: '救助站名称',
+ value: 'stnm',
+ col: 24
+ },
+ {
+ label: '站址',
+ value: 'stlc',
+ col: 24
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '建成日期',
+ value: 'jcdt',
+ type: 'date',
+ col: 12
+ },
+ {
+ label: '保护对象',
+ value: 'protobj',
+ col: 24
+ },
+ {
+ label: '保护方式',
+ value: 'bhfs',
+ col: 24
+ }
+];
+const WTInfo = [
+ {
+ label: '测站名称',
+ value: 'stnm',
+ col: 12
+ },
+ {
+ label: '测站类型',
+ value: 'sttpName',
+ col: 12
+ },
+ {
+ label: '建成日期',
+ value: 'jcdt',
+ type: 'date',
+ col: 12
+ },
+ {
+ label: '监测方式',
+ value: 'mwayName',
+ col: 12
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '所属电站',
+ value: 'ennm',
+ col: 24
+ }
+];
+
+const WQInfo = [
+ {
+ label: '测站名称',
+ value: 'stnm',
+ col: 12
+ },
+ {
+ label: '测站类型',
+ value: 'sttpName',
+ col: 12
+ },
+ {
+ label: '水质要求',
+ value: 'wwqtgName',
+ col: 12
+ },
+ {
+ label: '监测方式',
+ value: 'mwayName',
+ col: 12
+ },
+ {
+ label: '类别',
+ value: 'dtinTypeName',
+ col: 12
+ },
+ {
+ label: '建成日期',
+ value: 'jcdt',
+ type: 'date',
+ col: 12
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '所属电站',
+ value: 'ennm',
+ col: 24
+ },
+ {
+ label: '站址',
+ value: 'stlc',
+ col: 24
+ }
+];
+const ZQInfo = [
+ {
+ label: '测站名称',
+ value: 'stnm',
+ col: 12
+ },
+ {
+ label: '测站类型',
+ value: 'sttpName',
+ col: 12
+ },
+ {
+ label: '建成日期',
+ value: 'jcdt',
+ type: 'date',
+ col: 12
+ },
+ {
+ label: '监测方式',
+ value: 'mwayName',
+ col: 12
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '站址',
+ value: 'stlc',
+ col: 24
+ }
+];
+
+const VDInfo = [
+ {
+ label: '监控点名',
+ value: 'stnm',
+ col: 24
+ },
+ {
+ label: '监控内容类型',
+ value: 'sttpName',
+ col: 12
+ },
+ {
+ label: '所属行政区',
+ value: 'addvcdName',
+ col: 24
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '监控点站址',
+ value: 'stlc',
+ col: 24
+ }
+];
+const FHInfo = [
+ // 栖息地
+ {
+ label: '栖息地名称',
+ value: 'stnm',
+ col: 24
+ },
+ {
+ label: '保护对象',
+ value: 'protobj',
+ col: 24
+ },
+ {
+ label: '保护范围',
+ value: 'qxdbhfw',
+ col: 24
+ },
+ {
+ label: '保护方式',
+ value: 'bhfs',
+ col: 24
+ },
+ {
+ label: '保护河流',
+ value: 'bhhl',
+ col: 12
+ },
+ {
+ label: '保护河段',
+ value: 'bhhd',
+ col: 12
+ },
+ {
+ label: '所属流域',
+ value: 'hbrvcdName',
+ col: 24
+ },
+ {
+ label: '站址',
+ value: 'stlc',
+ col: 24
+ }
+];
+export {
+ ENGInfo,
+ DWInfo,
+ EQInfo,
+ FBInfo,
+ VPInfo,
+ VAInfo,
+ WTInfo,
+ WQInfo,
+ ZQInfo,
+ VDInfo,
+ FHInfo
+};
diff --git a/frontend/src/modules/rightSearchDrawer/basicInfo/index.vue b/frontend/src/modules/rightSearchDrawer/basicInfo/index.vue
new file mode 100644
index 00000000..dafe8631
--- /dev/null
+++ b/frontend/src/modules/rightSearchDrawer/basicInfo/index.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ info[item.value]
+ ? dayjs(info[item.value]).format('YYYY-MM-DD')
+ : '-'
+ }}
+
+ {{ info[item.value] || '-' }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/modules/rightSearchDrawer/monitorInfo/index.vue b/frontend/src/modules/rightSearchDrawer/monitorInfo/index.vue
new file mode 100644
index 00000000..ce5d581a
--- /dev/null
+++ b/frontend/src/modules/rightSearchDrawer/monitorInfo/index.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/store/modules/model.ts b/frontend/src/store/modules/model.ts
index ada3f354..f0de1029 100644
--- a/frontend/src/store/modules/model.ts
+++ b/frontend/src/store/modules/model.ts
@@ -21,6 +21,7 @@ export const useModelStore = defineStore('model', () => {
const wtConfig = ref<{ ioWtrv?: boolean; hasRstcdWtvt?: boolean }>({}); // 水温配置
const wqShow = ref(false); // 水质 AI 预测显示
const fishTabInfo = ref(null); // 鱼类监测数据信息
+ const selectedAnchorPoint = ref(null); // 地图筛选下拉选中的点位对象(供基本信息等面板消费)
const params = ref<{
sttp: string;
@@ -47,14 +48,14 @@ export const useModelStore = defineStore('model', () => {
sttpMap: '',
dtinType: '',
bldstt: '',
- bldsttCcode:''
+ bldsttCcode: ''
});
const filter = ref({
stllgzlx: '', // 生态流量 - 规则类型
stllTmType: '', // 生态流量 - 时间类型
tm: '',
rangeTm: [],
- year:'',
+ year: ''
});
return {
params,
@@ -75,6 +76,7 @@ export const useModelStore = defineStore('model', () => {
aiSites,
wtConfig,
wqShow,
- fishTabInfo
+ fishTabInfo,
+ selectedAnchorPoint
};
});
diff --git a/frontend/src/store/modules/ui.ts b/frontend/src/store/modules/ui.ts
index 31992ca2..b00fa19f 100644
--- a/frontend/src/store/modules/ui.ts
+++ b/frontend/src/store/modules/ui.ts
@@ -10,16 +10,23 @@ export const useUiStore = defineStore('ui', () => {
const isRoaming = ref(false);
// dim 切换时跳过漫游相机还原(由地图模式切换自行处理)
const skipRoamCameraRestore = ref(false);
+ // 搜索抽屉状态
+ const searchDrawerOpen = ref(false);
// 切换抽屉状态
const toggleDrawer = () => {
drawerOpen.value = !drawerOpen.value;
};
-
// 设置抽屉状态
const setDrawerOpen = (open: boolean) => {
drawerOpen.value = open;
};
+ // 设置搜索抽屉状态
+ const setSearchDrawerOpen = (open: boolean) => {
+ console.log(open);
+
+ searchDrawerOpen.value = open;
+ };
const markMapSwitchCompleted = () => {
mapSwitchCompletedTick.value += 1;
@@ -31,6 +38,8 @@ export const useUiStore = defineStore('ui', () => {
skipRoamCameraRestore,
toggleDrawer,
setDrawerOpen,
+ setSearchDrawerOpen,
+ searchDrawerOpen,
mapType,
mapSwitchCompletedTick,
markMapSwitchCompleted
diff --git a/frontend/src/views/guoYuSheShi/sheShiZhuangKuang.vue b/frontend/src/views/guoYuSheShi/sheShiZhuangKuang.vue
index f2ffa96c..35c95a28 100644
--- a/frontend/src/views/guoYuSheShi/sheShiZhuangKuang.vue
+++ b/frontend/src/views/guoYuSheShi/sheShiZhuangKuang.vue
@@ -1,20 +1,23 @@
@@ -25,10 +28,15 @@ watch(
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/home/huanBaoSheShiYunXingZhuangKuang.vue b/frontend/src/views/home/huanBaoSheShiYunXingZhuangKuang.vue
index db3e01d6..e6ef66a3 100644
--- a/frontend/src/views/home/huanBaoSheShiYunXingZhuangKuang.vue
+++ b/frontend/src/views/home/huanBaoSheShiYunXingZhuangKuang.vue
@@ -1,21 +1,31 @@
-
+
-
-
-
-
-
-
-
-
-
-
+
diff --git a/frontend/src/views/home/huanBaoZhiLiangZhuangKuang.vue b/frontend/src/views/home/huanBaoZhiLiangZhuangKuang.vue
index 96a04bc4..51d1f0dd 100644
--- a/frontend/src/views/home/huanBaoZhiLiangZhuangKuang.vue
+++ b/frontend/src/views/home/huanBaoZhiLiangZhuangKuang.vue
@@ -1,32 +1,40 @@
-
-
-
-
-
diff --git a/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue b/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue
index 72ad15be..8e5474d4 100644
--- a/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue
+++ b/frontend/src/views/home/shuiDianKaiFaZhuangKuang.vue
@@ -1,10 +1,12 @@
@@ -14,8 +16,14 @@ import { useModelStore } from '@/store/modules/model';
diff --git a/frontend/src/views/moXingGuanLi/muBiaoJianCeMoXingGuanLi/index.vue b/frontend/src/views/moXingGuanLi/muBiaoJianCeMoXingGuanLi/index.vue
new file mode 100644
index 00000000..9b687fa5
--- /dev/null
+++ b/frontend/src/views/moXingGuanLi/muBiaoJianCeMoXingGuanLi/index.vue
@@ -0,0 +1,7 @@
+
+
+ 目标检测模型管理
+
+
+
+
diff --git a/frontend/src/views/moXingGuanLi/shiXuMoXingGuanLi/index.vue b/frontend/src/views/moXingGuanLi/shiXuMoXingGuanLi/index.vue
new file mode 100644
index 00000000..5078905a
--- /dev/null
+++ b/frontend/src/views/moXingGuanLi/shiXuMoXingGuanLi/index.vue
@@ -0,0 +1,7 @@
+
+
+ 时序模型管理
+
+
+
+
diff --git a/frontend/src/views/qiXiDi/shengTaiDiBaoHu.vue b/frontend/src/views/qiXiDi/shengTaiDiBaoHu.vue
index b0118642..14b6fbc7 100644
--- a/frontend/src/views/qiXiDi/shengTaiDiBaoHu.vue
+++ b/frontend/src/views/qiXiDi/shengTaiDiBaoHu.vue
@@ -1,10 +1,13 @@
@@ -14,10 +17,15 @@ import QiXiDiLiuLiangBianHua from '@/modules/qixidiliuliangbianhua/index.vue';