+
@@ -51,7 +55,12 @@ const handleToggle = () => {
height: 100%;
position: relative;
box-sizing: border-box;
- pointer-events: all;
+ // 收起时不拦截点击,点击穿透到页面局部抽屉;展开时恢复交互
+ pointer-events: none;
+
+ &.is-open {
+ pointer-events: all;
+ }
.drawerController1 {
width: 18px;
@@ -61,13 +70,14 @@ const handleToggle = () => {
z-index: 10;
height: 88px;
line-height: 88px;
- top: 45%;
+ top: 44%;
vertical-align: middle;
background-image: url(../../assets/components/bg-toggle.e1dabcf3.svg);
background-repeat: no-repeat;
display: flex;
justify-content: center;
align-items: center;
+ pointer-events: all;
}
.drawerController {
@@ -86,6 +96,7 @@ const handleToggle = () => {
display: flex;
justify-content: center;
align-items: center;
+ pointer-events: all;
}
}
diff --git a/frontend/src/components/MapModal/components/FishFacilityRunState.vue b/frontend/src/components/MapModal/components/FishFacilityRunState.vue
index f93afe69..5be1038c 100644
--- a/frontend/src/components/MapModal/components/FishFacilityRunState.vue
+++ b/frontend/src/components/MapModal/components/FishFacilityRunState.vue
@@ -243,6 +243,7 @@ const columns = [
}
}
];
+const planFtp = ref('');
const queryBtn = () => {
console.log('5');
const filter = {
@@ -292,30 +293,30 @@ const queryBtn = () => {
nextTick(() => {
tableRef.value?.getList(filter);
});
- // const params = {
- // filter: {
- // logic: 'and',
- // filters: [
- // {
- // field: 'stcd',
- // operator: 'eq',
- // dataType: 'string',
- // value: modelStore.params.stcd
- // },
- // {
- // field: 'yr',
- // operator: 'eq',
- // dataType: 'string',
- // value: searchParams.value.tm.format('YYYY')
- // },
- // { field: 'direction', operator: 'eq', dataType: 'string', value: '0' }
- // ]
- // }
- // };
- // getRunStateSecondPlan(params).then(res => {
- // console.log(res);
- // planFtp.value = res.data.ftp || '暂无数据';
- // });
+ const params = {
+ filter: {
+ logic: 'and',
+ filters: [
+ {
+ field: 'stcd',
+ operator: 'eq',
+ dataType: 'string',
+ value: modelStore.params.stcd
+ },
+ {
+ field: 'yr',
+ operator: 'eq',
+ dataType: 'string',
+ value: searchParams.value.tm.format('YYYY')
+ },
+ { field: 'direction', operator: 'eq', dataType: 'string', value: '0' }
+ ]
+ }
+ };
+ getRunStateSecondPlan(params).then(res => {
+ console.log(res);
+ planFtp.value = res.data.ftp || '暂无数据';
+ });
};
const initData = async () => {
queryBtn();
diff --git a/frontend/src/components/developStatusChart/index.vue b/frontend/src/components/developStatusChart/index.vue
index 70c329da..295d1b7e 100644
--- a/frontend/src/components/developStatusChart/index.vue
+++ b/frontend/src/components/developStatusChart/index.vue
@@ -1,25 +1,25 @@
-
+
diff --git a/frontend/src/components/mapFilter/index.vue b/frontend/src/components/mapFilter/index.vue
index 71f4c1b3..3eafe819 100644
--- a/frontend/src/components/mapFilter/index.vue
+++ b/frontend/src/components/mapFilter/index.vue
@@ -1,5 +1,8 @@
-
+
-
@@ -76,6 +75,7 @@ const isZhiNengPeiTu = computed(() => {
width: 450px;
height: 100%;
z-index: 100;
- pointer-events: all;
+ // 收起时整体不拦截点击,不遮挡页面局部抽屉;展开状态由 GlobalRightDrawer 内部 is-open 控制
+ pointer-events: none;
}
diff --git a/frontend/src/modules/BaseStatistics/index.vue b/frontend/src/modules/BaseStatistics/index.vue
new file mode 100644
index 00000000..3fd48d43
--- /dev/null
+++ b/frontend/src/modules/BaseStatistics/index.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/modules/EquipmentStatistics/index.vue b/frontend/src/modules/EquipmentStatistics/index.vue
new file mode 100644
index 00000000..3d68a099
--- /dev/null
+++ b/frontend/src/modules/EquipmentStatistics/index.vue
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
![设备图标]()
+
+
+
+
+
{{ facility.name }}
+
+ {{ facility.count }}个
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/modules/rightSearchDrawer/basicInfo/index.vue b/frontend/src/modules/rightSearchDrawer/basicInfo/index.vue
index 5eaa554c..747c5d82 100644
--- a/frontend/src/modules/rightSearchDrawer/basicInfo/index.vue
+++ b/frontend/src/modules/rightSearchDrawer/basicInfo/index.vue
@@ -14,14 +14,16 @@
-
- {{
- info[item.value]
- ? dayjs(info[item.value]).format('YYYY-MM-DD')
- : '-'
- }}
-
- {{ info[item.value] || '-' }}
+
+
+ {{
+ info[item.value]
+ ? dayjs(info[item.value]).format('YYYY-MM-DD')
+ : '-'
+ }}
+
+ {{ info[item.value] || '-' }}
+
diff --git a/frontend/src/modules/rightSearchDrawer/monitoringTable/components/NormalOperationData.vue b/frontend/src/modules/rightSearchDrawer/monitoringTable/components/NormalOperationData.vue
new file mode 100644
index 00000000..1507ebe1
--- /dev/null
+++ b/frontend/src/modules/rightSearchDrawer/monitoringTable/components/NormalOperationData.vue
@@ -0,0 +1,254 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/modules/rightSearchDrawer/monitoringTable/components/VideoInfo.vue b/frontend/src/modules/rightSearchDrawer/monitoringTable/components/VideoInfo.vue
new file mode 100644
index 00000000..96adf391
--- /dev/null
+++ b/frontend/src/modules/rightSearchDrawer/monitoringTable/components/VideoInfo.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/modules/rightSearchDrawer/monitoringTable/index.vue b/frontend/src/modules/rightSearchDrawer/monitoringTable/index.vue
index 06dacdb2..9262166f 100644
--- a/frontend/src/modules/rightSearchDrawer/monitoringTable/index.vue
+++ b/frontend/src/modules/rightSearchDrawer/monitoringTable/index.vue
@@ -1,5 +1,9 @@
+
@@ -21,7 +25,17 @@
+
+
+
+
+
+
@@ -38,6 +52,8 @@ import FlowMeasure from '@/modules/rightSearchDrawer/monitoringTable/components/
import Plant from '@/modules/rightSearchDrawer/monitoringTable/components/Plant.vue';
import Animal from '@/modules/rightSearchDrawer/monitoringTable/components/Animal.vue';
import FlowDischarge from '@/modules/rightSearchDrawer/monitoringTable/components/FlowDischarge.vue';
+import NormalOperationData from '@/modules/rightSearchDrawer/monitoringTable/components/NormalOperationData.vue';
+import VideoInfo from '@/modules/rightSearchDrawer/monitoringTable/components/VideoInfo.vue';
const modelStore = useModelStore();
const sttpValue = ref('');
diff --git a/frontend/src/modules/shuishengshengtaijiance/index.vue b/frontend/src/modules/shuishengshengtaijiance/index.vue
index 3ca30f8e..6a59924e 100644
--- a/frontend/src/modules/shuishengshengtaijiance/index.vue
+++ b/frontend/src/modules/shuishengshengtaijiance/index.vue
@@ -324,7 +324,9 @@ const getSelectData = async () => {
// 监听电站变化(优先使用父组件 provide 的电站上下文,兜底 jidiStore)
const injectedStation = inject('dianZhanStation', null);
-const stationSource = computed(() => injectedStation?.value || JidiSelectEventStore.selectedItem);
+const stationSource = computed(
+ () => injectedStation?.value || JidiSelectEventStore.selectedItem
+);
// ==================== 监听基地变化 ====================
watch(
diff --git a/frontend/src/modules/shuishengtaidiaochaduanmian/SsstdcgkTk.vue b/frontend/src/modules/shuishengtaidiaochaduanmian/SsstdcgkTk.vue
new file mode 100644
index 00000000..0dda5882
--- /dev/null
+++ b/frontend/src/modules/shuishengtaidiaochaduanmian/SsstdcgkTk.vue
@@ -0,0 +1,363 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+
+
+
+
+ {{ record.stnm }}
+
+
+
+ {{ record.tm ? dayjs(record.tm).format('YYYY-MM-DD') : '-' }}
+
+
+
+ 查看附件
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/modules/shuishengtaidiaochaduanmian/index.vue b/frontend/src/modules/shuishengtaidiaochaduanmian/index.vue
new file mode 100644
index 00000000..a5c97e60
--- /dev/null
+++ b/frontend/src/modules/shuishengtaidiaochaduanmian/index.vue
@@ -0,0 +1,319 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/store/modules/ui.ts b/frontend/src/store/modules/ui.ts
index 818e5703..93574891 100644
--- a/frontend/src/store/modules/ui.ts
+++ b/frontend/src/store/modules/ui.ts
@@ -8,12 +8,16 @@ export const useUiStore = defineStore('ui', () => {
const mapSwitchCompletedTick = ref(0);
// 3d 流域三维漫游
const isRoaming = ref(false);
+ // 智慧装备
+ const isSmartEquipment = ref(false);
// dim 切换时跳过漫游相机还原(由地图模式切换自行处理)
const skipRoamCameraRestore = ref(false);
// 搜索抽屉状态
const searchDrawerOpen = ref(false);
// 全局兜底抽屉状态(AppMain 通用抽屉,给未自带抽屉的页面用)
const globalDrawerOpen = ref(false);
+ // 是否处于锚点搜索状态(选中命中 DRAWER_STTP_CODES 的锚点时 true;清空/切页等 false)
+ const isSearchActive = ref(false);
// 切换抽屉状态
const toggleDrawer = () => {
@@ -31,6 +35,10 @@ export const useUiStore = defineStore('ui', () => {
const setGlobalDrawerOpen = (open: boolean) => {
globalDrawerOpen.value = open;
};
+ // 设置锚点搜索状态
+ const setIsSearchActive = (active: boolean) => {
+ isSearchActive.value = active;
+ };
const markMapSwitchCompleted = () => {
mapSwitchCompletedTick.value += 1;
@@ -39,6 +47,7 @@ export const useUiStore = defineStore('ui', () => {
return {
drawerOpen,
isRoaming,
+ isSmartEquipment,
skipRoamCameraRestore,
toggleDrawer,
setDrawerOpen,
@@ -46,6 +55,8 @@ export const useUiStore = defineStore('ui', () => {
searchDrawerOpen,
globalDrawerOpen,
setGlobalDrawerOpen,
+ isSearchActive,
+ setIsSearchActive,
mapType,
mapSwitchCompletedTick,
markMapSwitchCompleted
diff --git a/frontend/src/views/moXingGuanLi/shiXuMoXingGuanLi/index.vue b/frontend/src/views/moXingGuanLi/shiXuMoXingGuanLi/index.vue
index 5078905a..93636375 100644
--- a/frontend/src/views/moXingGuanLi/shiXuMoXingGuanLi/index.vue
+++ b/frontend/src/views/moXingGuanLi/shiXuMoXingGuanLi/index.vue
@@ -1,7 +1,15 @@
-
- 时序模型管理
-
+ 时序模型管理
+
diff --git a/frontend/src/views/sanWeiFangZhen/index.vue b/frontend/src/views/sanWeiFangZhen/index.vue
index 570a75a0..f4d9c87a 100644
--- a/frontend/src/views/sanWeiFangZhen/index.vue
+++ b/frontend/src/views/sanWeiFangZhen/index.vue
@@ -1,5 +1,15 @@
- 三维仿真
+ 三维仿真
+
diff --git a/frontend/src/views/shengTaiDiaoCha/shuiShengShengTaiDiaoCha.vue b/frontend/src/views/shengTaiDiaoCha/shuiShengShengTaiDiaoCha.vue
index d8376bae..e6930161 100644
--- a/frontend/src/views/shengTaiDiaoCha/shuiShengShengTaiDiaoCha.vue
+++ b/frontend/src/views/shengTaiDiaoCha/shuiShengShengTaiDiaoCha.vue
@@ -3,8 +3,10 @@ import { ref, computed } from 'vue';
import JidiSelectorMod from '@/modules/jidiSelectorMod.vue';
import RightDrawer from '@/components/RightDrawer/index.vue';
import SSSTJCQKTT from '@/modules/shuishengshengtaijiance/index.vue';
+import Sstdcdm from '@/modules/shuishengtaidiaochaduanmian/index.vue';
import SSSTDCQK from '@/modules/shuiShengShengTaiDiaoCha/index.vue'; // 水生生态监测情况模块
import AlongFishMod from '@/modules/alongFishMod/index.vue'; //沿程鱼类变化情况
+import VideoInfo from '@/modules/rightSearchDrawer/monitoringTable/components/VideoInfo.vue';
import SSSTDCDB from './shuiShengShengTaiDiaoCha/SSSTDCDB.vue';
import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import { useDraggable } from '@/utils/drag';
@@ -26,9 +28,12 @@ const handleOpenModal = () => {
-
+
+
+
+
diff --git a/frontend/src/views/zhiHuiZhuangBei/index.vue b/frontend/src/views/zhiHuiZhuangBei/index.vue
index e99b7be0..31385b8a 100644
--- a/frontend/src/views/zhiHuiZhuangBei/index.vue
+++ b/frontend/src/views/zhiHuiZhuangBei/index.vue
@@ -1,31 +1,59 @@
- 888123
+
+
+
+
+
+
+
+ 金沙江干流
+
+
+ 两河口
+
+
+ 两河口库尾水温站
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/frontend/src/views/zhiNengFenXi/guoYuSheShiYunXingXiaoGuoFenXi/index.vue b/frontend/src/views/zhiNengFenXi/guoYuSheShiYunXingXiaoGuoFenXi/index.vue
index 2d843abd..825130b0 100644
--- a/frontend/src/views/zhiNengFenXi/guoYuSheShiYunXingXiaoGuoFenXi/index.vue
+++ b/frontend/src/views/zhiNengFenXi/guoYuSheShiYunXingXiaoGuoFenXi/index.vue
@@ -1,5 +1,544 @@
- 过鱼设施
+
+
+
+
+ 金沙江干流
+
+
+ 两河口
+
+
+ 两河口升鱼机
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+ 设施名称:盐锅峡入库水温站点
+
+
+ 设施类系:升鱼机
+
+
+ 地址:吉林市市辖区
+
+
+ 所属流域:长江流域-金沙江干流-雅砻江干流-雅砻江干流中游
+
+
+ 建成日期:2026-01-12
+
+
+ 过鱼对象:黄河裸裂尻鱼、花斑裸鲤、厚唇裸重唇鱼、极边扁咽齿鱼、骨唇黄河鱼、拟鲶高原鳅
+
+
+ 过鱼规模:4万尾
+
+
+
+
+
+
+
+
+
+
+
+ 两河口升鱼机共过鱼多少种多少尾,其中主要过鱼对象多少种多少尾。两河口升鱼机有效(大多数过鱼对象,过鱼数量达设计目标
+ /总体有效(有过鱼对象,过鱼数量未达设计目标)/无效(无过鱼对象)。
+
+
+ 两河口升鱼机过鱼效率为多少,过鱼效率较高(>50%)、一般(30%至50%)或较低(小于30%)。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+ {{ item.count }}
+ 次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
diff --git a/frontend/src/views/zhiNengFenXi/yuCeYuJing/index.vue b/frontend/src/views/zhiNengFenXi/yuCeYuJing/index.vue
index 76753c0c..49a15707 100644
--- a/frontend/src/views/zhiNengFenXi/yuCeYuJing/index.vue
+++ b/frontend/src/views/zhiNengFenXi/yuCeYuJing/index.vue
@@ -1,5 +1,417 @@
- 预测预警
+
+
+
+
+
+
+
+
+
+
+
+ 水电基地
+
+
+ 金沙江干流
+
+
+ 两河口
+
+
+ 两河口库尾水温站
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 测站名称:
+ 盐锅峡入库水温站点
+
+ 所属流域:
+ 长江流域-金沙江干流-雅磨江干流-雅磨江干流中游
+
+
+
+ 所属电站:
+ 两河口
+
+ 站址:
+ 甘肃省临夏回族自治州永靖县
+
+
+
+ 建成日期:
+ 2023-07-01
+
+ 测站类型:
+ 河道水温
+
+ 监测方式:
+ 自动
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 结果分析
+
+
1.技术工艺与设施设备
+
+ 人工繁育技术瓶颈:检查是否存在珍稀特有鱼类人工驯养和繁育技术不成熟的问题。部分鱼类的繁殖条件(如性腺发育、产卵行为)可能未被完全掌握。
+
+
+ 设施设备与工艺缺陷:检查生产设备是否老化。同时,需评估温度控制系统、供水供电方案、循环水处理工艺等关键设施是否满足要求,是否存在设计缺陷。
+
+
+ 养殖用水与模式:核查传统流水养殖模式是否效率低下、耗水过多,评估循环水养殖系统处理工艺的针对性是否不足。
+
+
+
2.运行管理与操作规范
+
+ 亲本数量与质量:检查亲鱼(种鱼)数量是否充足、质量是否健康。亲本不足会直接影响苗种产量。
+
+
+ 生产过程控制:核查苗种培育、鱼病防治、野化驯养等关键环节。温度和饵料控制不当、疾病爆发或鱼苗未经过野化训练,都会严重影响成活率和放流后的适应能力。
+
+
+
+ 意见建议
+
+
1.加强科研攻关与技术升级
+
+ 针对繁育技术瓶颈,联动科研单位加大投入进行攻关。同时,对老化或低效的生产设备进行更新换代,例如引入更高效的循环水处理系统。
+
+
+
2.优化运行管理与操作规范
+
+ 强化亲本培育,确保有足够数量和质量健康的种鱼。细化生产流程管理,严格控制水温、饵料、疾病防治等关键环节。建立健全监测评估体系,对放流后的鱼苗进行标记回捕、跟踪监测,用数据指导后续工作。
+
+
+
3.推动外部环境改善与流域协同
+
+ 积极与相关部门沟通,确保生态流量的足额下泄。在更大范围内,推动流域性的统筹规划,与上下游电站协同开展生态保护。同时,科学评估并修复或改善鱼类栖息地。
+
+
+
+
+
+
-
+
+
diff --git a/frontend/src/views/zhiNengFenXi/zhiNengBaoGaoShengCheng/index.vue b/frontend/src/views/zhiNengFenXi/zhiNengBaoGaoShengCheng/index.vue
index f7b44850..a5f683eb 100644
--- a/frontend/src/views/zhiNengFenXi/zhiNengBaoGaoShengCheng/index.vue
+++ b/frontend/src/views/zhiNengFenXi/zhiNengBaoGaoShengCheng/index.vue
@@ -1,7 +1,15 @@
-
- 智能报告生成
-
+ 智能报告生成
+