@@ -49,6 +49,7 @@ import SidePanelItem from '@/components/SidePanelItem/index.vue';
import { environmentalProtectionConstruction } from '@/api/home';
import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import HuanbaoModTwoLayers from './TwoLayers/HuanbaoModTwoLayers.vue';
+import { useDraggable } from '@/utils/drag';
// 定义组件名(便于调试和递归)
defineOptions({
@@ -82,7 +83,7 @@ const modalRes = ref({
bldstt: '',
hydrodtin: '1'
});
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
// 获取数据
const getData = async () => {
if (!baseid.value) return;
diff --git a/frontend/src/modules/huanbaozdjcgzkzQK/index.vue b/frontend/src/modules/huanbaozdjcgzkzQK/index.vue
index 8e09ea9a..179d5e07 100644
--- a/frontend/src/modules/huanbaozdjcgzkzQK/index.vue
+++ b/frontend/src/modules/huanbaozdjcgzkzQK/index.vue
@@ -68,6 +68,7 @@ import svg_liuliangjiancezhan from '@/assets/svg/liuliangjiancezhan.svg';
import svg_shuizhijiancezhan from '@/assets/svg/shuizhijiancezhan.svg';
import svg_zengzhizhanshuizhizhan from '@/assets/svg/zengzhizhanshuizhizhan.svg';
import svg_qixidi from '@/assets/svg/qixidi.svg';
+import { useDraggable } from '@/utils/drag';
defineOptions({
name: 'huanbaoMod'
@@ -103,7 +104,7 @@ const baseid = ref('');
// 弹框相关状态
const modalVisible = ref(false);
const currentFacility = ref
(null);
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
const fetchData = () => {
let params = {
filter: {
diff --git a/frontend/src/modules/liuyu/ai/spdzwaijc/AISPTK.vue b/frontend/src/modules/liuyu/ai/spdzwaijc/AISPTK.vue
index 074c4f03..ab353c35 100644
--- a/frontend/src/modules/liuyu/ai/spdzwaijc/AISPTK.vue
+++ b/frontend/src/modules/liuyu/ai/spdzwaijc/AISPTK.vue
@@ -316,7 +316,8 @@ import { postIdUrl } from '@/api/mapModal';
import dayjs from 'dayjs';
import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import videoCover from '@/assets/images/videFm.jpg';
-
+import { useDraggable } from '@/utils/drag';
+;
const baseUrl = import.meta.env.VITE_APP_ATTACHMENT_URL;
// ==================== Props ====================
@@ -397,7 +398,7 @@ const calendarValue = ref(searchData.value.month);
const detailModalVisible = ref(false);
const detailActiveKey = ref('2');
const detailDate = ref('');
-
+useDraggable(detailModalVisible, { boundary: true, resetOnOpen: true })
// 日历状态映射(运行/未运行)
const calendarStatusMap: Record<
string,
diff --git a/frontend/src/modules/liuyu/ai/spdzwaijc/index.vue b/frontend/src/modules/liuyu/ai/spdzwaijc/index.vue
index ffc41b99..5a61a858 100644
--- a/frontend/src/modules/liuyu/ai/spdzwaijc/index.vue
+++ b/frontend/src/modules/liuyu/ai/spdzwaijc/index.vue
@@ -51,6 +51,7 @@ import SidePanelItem from '@/components/SidePanelItem/index.vue';
import AISPTK from './AISPTK.vue';
import { getAiGyssList } from '@/api/zngj';
import dayjs from 'dayjs';
+import { useDraggable } from '@/utils/drag';
// 定义组件名(便于调试和递归)
defineOptions({
@@ -65,7 +66,7 @@ const panelDetail = ref({});
// ==================== 弹框状态 ====================
const modalVisible = ref(false);
const currentAction = ref('AI_5006');
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
const lyName = computed(() => baseid.value === '02' ? '升鱼斗运行' : '升鱼机运行');
// ==================== 日期选择器配置 ====================
diff --git a/frontend/src/modules/liuyu/yichangyujing/shengtailiuliangxianzhigaojing/shengtailiuliangxianshuju.vue b/frontend/src/modules/liuyu/yichangyujing/shengtailiuliangxianzhigaojing/shengtailiuliangxianshuju.vue
index 4f7d7759..a29ced40 100644
--- a/frontend/src/modules/liuyu/yichangyujing/shengtailiuliangxianzhigaojing/shengtailiuliangxianshuju.vue
+++ b/frontend/src/modules/liuyu/yichangyujing/shengtailiuliangxianzhigaojing/shengtailiuliangxianshuju.vue
@@ -40,6 +40,7 @@ import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import SidePanelItem from "@/components/SidePanelItem/index.vue";
import { getStllGaojingList } from '@/api/zngj';
import ModeGaoJing from './ModeGaoJing.vue';
+import { useDraggable } from '@/utils/drag';
// 定义组件名(便于调试和递归)
defineOptions({
@@ -51,7 +52,7 @@ const baseid = ref('');
const dataLoading = ref(false);
const isModalOpen = ref(false);
const currentWarnState = ref('');
-
+useDraggable(isModalOpen, { boundary: true, resetOnOpen: true });
const data = ref([
{
name:'正常',
diff --git a/frontend/src/modules/liuyu/yichangyujing/shuizhijiancegaojing/shuizhijianceshuju.vue b/frontend/src/modules/liuyu/yichangyujing/shuizhijiancegaojing/shuizhijianceshuju.vue
index 1b485eb3..418e21dd 100644
--- a/frontend/src/modules/liuyu/yichangyujing/shuizhijiancegaojing/shuizhijianceshuju.vue
+++ b/frontend/src/modules/liuyu/yichangyujing/shuizhijiancegaojing/shuizhijianceshuju.vue
@@ -38,6 +38,7 @@ import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import SidePanelItem from "@/components/SidePanelItem/index.vue";
import { getShuizhiGaojingList } from '@/api/zngj';
import ModeGaoJing from './ModeGaoJing.vue';
+import { useDraggable } from '@/utils/drag';
defineOptions({
name: "shuizhijianceshuju",
@@ -51,7 +52,7 @@ const defaultValue = ref('0');
// 弹框状态
const modalVisible = ref(false);
const currentWarnState = ref('');
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
const handleCardClick = (warnState: string) => {
currentWarnState.value = warnState;
modalVisible.value = true;
diff --git a/frontend/src/modules/lushengshengtaijiance/index.vue b/frontend/src/modules/lushengshengtaijiance/index.vue
index 3b2b33d9..06706870 100644
--- a/frontend/src/modules/lushengshengtaijiance/index.vue
+++ b/frontend/src/modules/lushengshengtaijiance/index.vue
@@ -68,6 +68,7 @@ import SidePanelItem from '@/components/SidePanelItem/index.vue';
import LsstjkTk from './LsstjkTk.vue';
import { wbsbGetKendoList, getEvnmAutoMonitor } from '@/api/stdc';
import moment from 'moment';
+import { useDraggable } from '@/utils/drag';
// 定义组件名
defineOptions({
@@ -81,7 +82,7 @@ const dataLoading = ref(false);
// ==================== 弹框状态 ====================
const modalVisible = ref(false);
const currentOrderIndex = ref('16');
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
// ==================== 响应式变量定义 ====================
// 选择器配置
const select = ref({
diff --git a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/TwoLayers/monthlyAverageMaxModal.vue b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/TwoLayers/monthlyAverageMaxModal.vue
index 9f31b064..c26fde8a 100644
--- a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/TwoLayers/monthlyAverageMaxModal.vue
+++ b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/TwoLayers/monthlyAverageMaxModal.vue
@@ -70,6 +70,7 @@ import dayjs from 'dayjs';
import { ZoomInOutlined } from '@ant-design/icons-vue';
import type { Dayjs } from 'dayjs';
import MonthlyAverage from '../monthlyAverage.vue';
+import { useDraggable } from '@/utils/drag';
defineOptions({
name: 'MonthlyAverageMaxModal'
@@ -101,7 +102,7 @@ const detailModalData = ref(null);
// 选择器相关 - 内部状态管理
const selectValue = ref('');
const selectOptions = ref([]);
-
+useDraggable(detailModalVisible, { boundary: true, resetOnOpen: true });
// 树形选择器展开状态管理
const treeExpandedKeys = ref([])
const nodeMap = new Map()
diff --git a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue
index 2e43cba5..fc37d643 100644
--- a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue
+++ b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue
@@ -41,6 +41,7 @@ import dayjs from 'dayjs'
import {
ZoomInOutlined
} from '@ant-design/icons-vue';
+import { useDraggable } from '@/utils/drag';
defineOptions({
name: 'monthlyAvgWaterTemCompareHistory'
@@ -68,7 +69,8 @@ const stationName = ref('');
// 图表放大展示弹框状态
const zoomModalVisible = ref(false);
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
+useDraggable(zoomModalVisible, { boundary: true, resetOnOpen: true });
// 选择器配置
const select = ref({
show: true,
diff --git a/frontend/src/modules/qixidibaohugongzuokaizhanQK/index.vue b/frontend/src/modules/qixidibaohugongzuokaizhanQK/index.vue
index 1015e9be..29fabddb 100644
--- a/frontend/src/modules/qixidibaohugongzuokaizhanQK/index.vue
+++ b/frontend/src/modules/qixidibaohugongzuokaizhanQK/index.vue
@@ -1,206 +1,237 @@
-
-
-
-
-
-
-
-
{{ facility.name }}
-
{{ facility.count
- }}个
-
-
+
+
+
+
+
+
+
+
{{ facility.name }}
+
+ {{ facility.count }}个
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
+
diff --git a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFangShi/index.vue b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFangShi/index.vue
index c5d0a8b0..15cf663d 100644
--- a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFangShi/index.vue
+++ b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFangShi/index.vue
@@ -57,6 +57,8 @@ import type { ECharts } from 'echarts';
import { msstbprptGetKendoList } from '@/api/stll';
import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import STLLXFFS from './TwoLayer/STLLXFFS.vue';
+import { useDraggable } from '@/utils/drag';
+
// 定义组件名(便于调试和递归)
defineOptions({
name: 'xieFangFangShi'
@@ -78,7 +80,7 @@ const apiRawData = ref
([]); // 保存原始 API 数据
const modalVisible = ref(false);
const modalTitle = ref('');
const selectedData = ref(null);
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
// 颜色配置(根据图片配色)
const colors = [
'#9556a4', // 基荷发电 - 紫色
diff --git a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue
index 30ae4cb3..58bf3cdc 100644
--- a/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue
+++ b/frontend/src/modules/shengTaiLiuLiangXieFangSheShiMod/xieFangFenBu/index.vue
@@ -38,6 +38,8 @@ import type { ECharts } from 'echarts';
import { vmsstbprptGetKendoList } from '@/api/stll';
import { useJidiSelectEventStore } from '@/store/modules/jidiSelectEvent';
import FBQKTwolayer from './TwoLayer/FenBuQingKuangTwoLayer.vue';
+import { useDraggable } from '@/utils/drag';
+
// 定义组件名
defineOptions({
name: 'XieFangFenBu'
@@ -59,7 +61,7 @@ const wbsCode = ref('');
const modalVisible = ref(false);
const selectData = ref(''); // 选中的设施类型名称
const jidiName = ref(''); // 选中的基地名称
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
// 设施类型配置
const typeName = [
{ label: '生态放流孔', eqtp: 'EQ_1' },
diff --git a/frontend/src/modules/shengtaidabiaoModJZ/index.vue b/frontend/src/modules/shengtaidabiaoModJZ/index.vue
index 643c913d..3f07c556 100644
--- a/frontend/src/modules/shengtaidabiaoModJZ/index.vue
+++ b/frontend/src/modules/shengtaidabiaoModJZ/index.vue
@@ -105,6 +105,8 @@ import { useMapViewStore } from '@/modules/map/stores/map-view.store';
import STLLXFFS from './TwoLayer/ShengTaiLiuLiangDaBQKTwoLayer.vue';
import ModalYkzhbzdjcgz from './TwoLayer/ModalYkzhbzdjcgz.vue';
import HuanbaoZDJCGZKZ from '@/modules/huanbaozdjcgzkzQK/index.vue';
+import { useDraggable } from '@/utils/drag';
+
// 定义组件名(便于调试和递归)
defineOptions({
name: 'shengtaidabiaoMod'
@@ -149,7 +151,8 @@ const modalVisible = ref(false);
const modalTitle = ref('');
const selectedItem = ref(null);
const huanbaoModalVisible = ref(false);
-
+useDraggable(modalVisible, { boundary: true, resetOnOpen: true });
+useDraggable(huanbaoModalVisible, { boundary: true, resetOnOpen: true });
// 处理电站数量点击事件
const handleStationClick = () => {
huanbaoModalVisible.value = true;
diff --git a/frontend/src/modules/shengtaidabiaoTwoMod/index.vue b/frontend/src/modules/shengtaidabiaoTwoMod/index.vue
index 15e013fd..cdf54d8b 100644
--- a/frontend/src/modules/shengtaidabiaoTwoMod/index.vue
+++ b/frontend/src/modules/shengtaidabiaoTwoMod/index.vue
@@ -67,6 +67,8 @@ import { eqqecRateCount, evnmAutoMonitorGetKendoListCust } from '@/api/stll';
import ModalYkzhbzdjcgz from '../shengtaidabiaoMod/TwoLayer/ModalYkzhbzdjcgz.vue';
import STLLXFFS from './TwoLayer/STLLXFFS.vue'
import { useMapViewStore } from '@/modules/map/stores/map-view.store';
+import { useDraggable } from '@/utils/drag';
+
// 定义组件名(便于调试和递归)
defineOptions({
name: 'shengtaidabiaoMod'
@@ -604,6 +606,8 @@ watch(
const detailModalVisible = ref(false);
const detailModalTitle = ref('');
const detailData = ref([]);
+useDraggable(huanbaoModalVisible, { boundary: true, resetOnOpen: true });
+useDraggable(detailModalVisible, { boundary: true, resetOnOpen: true });
const detailColumns = ref([
{
title: mode.value === 'top' ? '基地名称' : '调节性能',
diff --git a/frontend/src/modules/shengtaidabiaoTwoModJJ/index.vue b/frontend/src/modules/shengtaidabiaoTwoModJJ/index.vue
index 1f9299d0..bb397101 100644
--- a/frontend/src/modules/shengtaidabiaoTwoModJJ/index.vue
+++ b/frontend/src/modules/shengtaidabiaoTwoModJJ/index.vue
@@ -68,6 +68,8 @@ import { eqqecRateCount, evnmAutoMonitorGetKendoListCust } from '@/api/stll';
import ModalYkzhbzdjcgz from '../shengtaidabiaoMod/TwoLayer/ModalYkzhbzdjcgz.vue';
import STLLXFFS from './TwoLayer/STLLXFFS.vue'
import { useMapViewStore } from '@/modules/map/stores/map-view.store';
+import { useDraggable } from '@/utils/drag';
+
// 定义组件名(便于调试和递归)
defineOptions({
name: 'shengtaidabiaoMod'
@@ -97,6 +99,7 @@ const huanbaoModalVisible = ref(false);
const handleStationClick = () => {
huanbaoModalVisible.value = true;
};
+
// 加载数据
const loadData = async () => {
spinning.value = true;
@@ -633,6 +636,8 @@ const detailColumns = ref([
watch(mode, () => {
loadData();
});
+useDraggable(huanbaoModalVisible, { boundary: true, resetOnOpen: true });
+useDraggable(detailModalVisible, { boundary: true, resetOnOpen: true });