From cb5d2edfaaa08f27134a13303a6e851352afb1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E5=87=AF?= <2448379534@qq.com> Date: Tue, 26 May 2026 19:30:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E6=B8=A9=E6=8E=A5=E5=8F=A3-=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E5=92=8C=E5=BC=B9=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/.env.development | 2 +- frontend/src/api/mapModal/index.ts | 8 + frontend/src/api/sw/index.ts | 88 + frontend/src/components/BasicTable/index.vue | 2 +- .../src/components/MapModal/column.config.ts | 4 +- .../MapModal/components/BasicInfo.vue | 6990 +---------------- .../MapModal/components/WaterTemperature.vue | 12 + .../components/WaterTemperatureContrast.vue | 653 ++ frontend/src/components/MapModal/index.vue | 21 +- .../src/components/MapModal/setting.config.ts | 39 +- .../src/components/SidePanelItem/index.vue | 371 +- .../carouselIntroduce/ArtsDetail.vue | 270 + .../chuixiangshuiwenChangeMod/index.vue | 102 +- .../churukushuiwenMod/churukushuiwen.vue | 378 + .../src/modules/churukushuiwenMod/index.vue | 95 +- ...eixingzuchengjijieruqingkuangTwoLayers.vue | 525 ++ .../index.vue | 251 +- .../index.vue | 497 +- .../monthlyAverage.vue | 835 ++ .../modules/sheshileixingjieshao/index.vue | 169 +- .../TwoLayers/yaerAverage.vue | 379 + .../src/modules/shuiWenNianNeiFenBu/index.vue | 413 +- .../index.vue | 37 +- .../shuiwenjiancegongzuoEJ.vue | 548 ++ .../yanchengshuiwenChangeMod/index.vue | 61 +- frontend/src/store/modules/model.ts | 6 +- frontend/src/styles/index.scss | 3 + frontend/src/utils/request.ts | 3 +- .../views/home/shuiDianKaiFaZhuangKuang.vue | 4 +- frontend/vite.config.ts | 10 + 30 files changed, 5437 insertions(+), 7339 deletions(-) create mode 100644 frontend/src/api/mapModal/index.ts create mode 100644 frontend/src/components/MapModal/components/WaterTemperature.vue create mode 100644 frontend/src/components/MapModal/components/WaterTemperatureContrast.vue create mode 100644 frontend/src/components/carouselIntroduce/ArtsDetail.vue create mode 100644 frontend/src/modules/churukushuiwenMod/churukushuiwen.vue create mode 100644 frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/TwoLayers/diwenshuijianhuansheshileixingzuchengjijieruqingkuangTwoLayers.vue create mode 100644 frontend/src/modules/monthlyAvgWaterTemCompareHistory/monthlyAverage.vue create mode 100644 frontend/src/modules/shuiWenNianNeiFenBu/TwoLayers/yaerAverage.vue create mode 100644 frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/shuiwenjiancegongzuoEJ.vue diff --git a/frontend/.env.development b/frontend/.env.development index 5ab3d70..c9ce1af 100644 --- a/frontend/.env.development +++ b/frontend/.env.development @@ -9,7 +9,7 @@ VITE_APP_BASE_API = '/dev-api' # 本地环境 # VITE_APP_BASE_URL = 'http://localhost:8093' # 测试环境 -# VITE_APP_BASE_URL = 'http://172.16.21.142:8096' +# VITE_APP_BASE_URL = 'http://172.16.21.142:8093' # VITE_APP_BASE_URL = 'http://172.16.21.142:8096' # 汤伟 VITE_APP_BASE_URL = 'http://10.84.121.21:8093' diff --git a/frontend/src/api/mapModal/index.ts b/frontend/src/api/mapModal/index.ts new file mode 100644 index 0000000..2e80603 --- /dev/null +++ b/frontend/src/api/mapModal/index.ts @@ -0,0 +1,8 @@ +import request from '@/utils/request'; +export function getStcdDetail(url: string, stcd: string) { + return request({ + url: url, + method: 'get', + params: { stcd } + }); +} \ No newline at end of file diff --git a/frontend/src/api/sw/index.ts b/frontend/src/api/sw/index.ts index 02c35f3..85d80a2 100644 --- a/frontend/src/api/sw/index.ts +++ b/frontend/src/api/sw/index.ts @@ -64,3 +64,91 @@ export function baseEvnmAutoMonitorGetKendoListCust(data: any) { data }); } +////水温监测工作开展情况弹框 +export function vmsstbprptGetKendoList(data: any) { + return request({ + url: '/api/dec-lygk-base-server/base/vmsstbprpt/GetKendoList', + method: 'post', + data + }); +} +//出入库水温打开弹框api/wmp-env-server/sw/inOutOne/details +export function inOutOneDetails(data: any) { + return request({ + url: '/api/wmp-env-server/sw/inOutOne/details', + method: 'post', + data + }); +} +//鱼类适宜性分析 - select +export function infoGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/sw/wtrv/fish/info/GetKendoListCust', + method: 'post', + data + }); +} +//鱼类适宜性分析-图表和table +export function fishGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/sw/wtrv/fish/GetKendoListCust', + method: 'post', + data + }); +} +//月平均水温历史对比 +export function avgMonGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/sw/monthList/avgMon/GetKendoListCust', + method: 'post', + data + }); +} +//水温年内分布 +export function yearListGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/sw/yearList/GetKendoListCust', + method: 'post', + data + }); +} +//设施类型介绍 +export function sttpbGetKendoList(data: any) { + return request({ + url: '/api/dec-lygk-base-server/base/sttpb/GetKendoList', + method: 'post', + data + }); +} +//设施类型及接入情况 +export function dwInfoGetKendoListCust(data: any) { + return request({ + url: '/api/dec-lygk-base-server/base/dwInfo/GetKendoListCust', + method: 'post', + data + }); +} +//月均水温对比,图表,表格 /api/wmp-env-server/sw/monthDetail/Det/GetKendoListCust +export function DetGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/sw/monthDetail/Det/GetKendoListCust', + method: 'post', + data + }); +} +//水温年内分布 +export function yearDetailGetKendoListCust(data: any) { + return request({ + url: '/api/wmp-env-server/sw/yearDetail/GetKendoListCust', + method: 'post', + data + }); +} +//获取建设状态 +export function dictgetRemoteDictValue(data: any) { + return request({ + url: '/api/dec-modules-usm-springcloud-starter/usm/v1/dict/getRemoteDictValue', + method: 'get', + params: data + }); +} diff --git a/frontend/src/components/BasicTable/index.vue b/frontend/src/components/BasicTable/index.vue index 422bfee..0264488 100644 --- a/frontend/src/components/BasicTable/index.vue +++ b/frontend/src/components/BasicTable/index.vue @@ -82,7 +82,7 @@ const scrollConfig = computed(() => { else if (tableScrollY.value > 0) { config.y = tableScrollY.value; } - console.log(tableScrollY.value); + console.log(config); return config; }); diff --git a/frontend/src/components/MapModal/column.config.ts b/frontend/src/components/MapModal/column.config.ts index add6b12..0856aa0 100644 --- a/frontend/src/components/MapModal/column.config.ts +++ b/frontend/src/components/MapModal/column.config.ts @@ -2072,7 +2072,7 @@ const DwPointColumns: Array = [ }, { name: '站址', - filed: 'stlc', + filed: 'addvcdName', visible: true, type: 'select', url: '', @@ -2608,7 +2608,7 @@ const DwOnePointColumns: Array = [ url: '', }, { - name: '多层式进水口', + name: '夹岩双层取水', visible: false, ruleTips: '', type: '', diff --git a/frontend/src/components/MapModal/components/BasicInfo.vue b/frontend/src/components/MapModal/components/BasicInfo.vue index 2f46f99..1ac4afc 100644 --- a/frontend/src/components/MapModal/components/BasicInfo.vue +++ b/frontend/src/components/MapModal/components/BasicInfo.vue @@ -41,10 +41,13 @@ -
+ +
+
+
123 @@ -56,8 +59,10 @@ @@ -7077,7 +279,7 @@ onMounted(() => { justify-content: space-between; .img_box { - width: 20%; + // width: 20%; padding: 12px; box-sizing: border-box; border: 1px solid rgba(0, 127, 204, 0.65); @@ -7085,7 +287,7 @@ onMounted(() => { .img_box_img { width: 100%; - height: 100%; + // height: 100%; padding: 12px; box-sizing: border-box; border: 1px solid rgba(0, 127, 204, 0.65); @@ -7096,7 +298,7 @@ onMounted(() => { .ant-row { border-left: 1px solid rgba(0, 127, 204, 0.65); border-top: 1px solid rgba(0, 127, 204, 0.65); - + height: 100%; .ant-col:nth-last-child(-n + 2) { .col-left, diff --git a/frontend/src/components/MapModal/components/WaterTemperature.vue b/frontend/src/components/MapModal/components/WaterTemperature.vue new file mode 100644 index 0000000..17566ef --- /dev/null +++ b/frontend/src/components/MapModal/components/WaterTemperature.vue @@ -0,0 +1,12 @@ + + + + + diff --git a/frontend/src/components/MapModal/components/WaterTemperatureContrast.vue b/frontend/src/components/MapModal/components/WaterTemperatureContrast.vue new file mode 100644 index 0000000..62a838e --- /dev/null +++ b/frontend/src/components/MapModal/components/WaterTemperatureContrast.vue @@ -0,0 +1,653 @@ + + + + + diff --git a/frontend/src/components/MapModal/index.vue b/frontend/src/components/MapModal/index.vue index 0a9aa87..590459d 100644 --- a/frontend/src/components/MapModal/index.vue +++ b/frontend/src/components/MapModal/index.vue @@ -1,19 +1,15 @@ @@ -39,6 +34,8 @@ import { ref, watch } from "vue"; // 导入预定义的 Tab 内容组件 import BasicInfo from "./components/BasicInfo.vue"; +import WaterTemperature from "./components/WaterTemperature.vue"; +import WaterTemperatureContrast from "./components/WaterTemperatureContrast.vue"; import { useModelStore } from "@/store/modules/model"; import { handleTabs } from "./setting.config"; diff --git a/frontend/src/components/MapModal/setting.config.ts b/frontend/src/components/MapModal/setting.config.ts index 387ab57..4094836 100644 --- a/frontend/src/components/MapModal/setting.config.ts +++ b/frontend/src/components/MapModal/setting.config.ts @@ -17,7 +17,7 @@ const ENGTabs: Array = [ name: '基础信息', key: 'basicInfo', type: 'basic', - url: '/bbi/siteBipc/getSiteBasicInfo', + url: '/api/dec-lygk-base-server/base/msstbprpt/getStcdInfo', default: true // 默认显示 }, { @@ -724,7 +724,7 @@ const WTTabs: Array = [ name: '基础信息', key: 'basicInfo', type: 'basic', - url: '/bbi/siteBipc/getSiteBasicInfo' + url: '/api/dec-lygk-base-server/base/msstbprpt/getStcdInfo' }, { name: '监测数据', @@ -767,23 +767,24 @@ const DWTabs: Array = [ key: 'basicInfo', type: 'basic', default: true, // 默认显示 + url: '/api/dec-lygk-base-server/base/msstbprpt/getStcdInfo' }, - { - name: '实时视频', - key: 'videoInfo', - type: 'video', - url: '/video/dataStcdFrame/getVideoMonitorList' - }, - { - name: '监测数据', - key: 'VerticalWaterTemperature', - type: 'VerticalWaterTemperature', - }, - { - name: '叠梁门运行AI识别', - key: 'AIYXSB', - type: 'AIYXSB', - } + // { + // name: '实时视频', + // key: 'videoInfo', + // type: 'video', + // url: '/video/dataStcdFrame/getVideoMonitorList' + // }, + // { + // name: '监测数据', + // key: 'VerticalWaterTemperature', + // type: 'VerticalWaterTemperature', + // }, + // { + // name: '叠梁门运行AI识别', + // key: 'AIYXSB', + // type: 'AIYXSB', + // } ] // //低温水减缓设施这是旧的 // const DWTabs2: Array = [ @@ -887,7 +888,7 @@ const DEVICETABS: Array = [ name: '基础信息', key: 'basicInfo', type: 'basic', - url: '/bbi/siteBipc/getSiteBasicInfo', + url: '/api/dec-lygk-base-server/base/msstbprpt/getStcdInfo', default: true, // 默认显示 }, ] diff --git a/frontend/src/components/SidePanelItem/index.vue b/frontend/src/components/SidePanelItem/index.vue index faaa076..36e07e6 100644 --- a/frontend/src/components/SidePanelItem/index.vue +++ b/frontend/src/components/SidePanelItem/index.vue @@ -16,8 +16,7 @@ - + @@ -26,52 +25,38 @@
+ @focus="handleFocus" @blur="handleBlur" @change="handleChange">
- + tree-node-filter-prop="label" popup-class-name="no-wrap-tree-select" @select="handleTreeSelect" + @expand="handleTreeExpand">
-
- + :format="scopeDate.format" :range-separator="' 至 '" :size="'small'" + :presets="computedScopeDatePresets" :disabledDate="createDisabledDateFn(scopeDate.picker)" />
图片
@@ -86,7 +71,7 @@ diff --git a/frontend/src/components/carouselIntroduce/ArtsDetail.vue b/frontend/src/components/carouselIntroduce/ArtsDetail.vue new file mode 100644 index 0000000..d10aba4 --- /dev/null +++ b/frontend/src/components/carouselIntroduce/ArtsDetail.vue @@ -0,0 +1,270 @@ + + + + + + \ No newline at end of file diff --git a/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue b/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue index 610f38c..4f4f060 100644 --- a/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue +++ b/frontend/src/modules/chuixiangshuiwenChangeMod/index.vue @@ -21,7 +21,9 @@ import type { ECharts } from 'echarts'; import SidePanelItem from '@/components/SidePanelItem/index.vue'; import { useJidiSelectEventStore } from "@/store/modules/jidiSelectEvent"; import { getChuiXiangShuiWenTreeStcd, getCxswList } from "@/api/sw"; +import { useModelStore } from "@/store/modules/model"; +const modelStore = useModelStore(); const JidiSelectEventStore = useJidiSelectEventStore(); const baseid = ref(''); @@ -109,11 +111,26 @@ function arrMin(arr: number[]): number { /** * 将 API 返回的 aggregates 数据转换为图表数据格式 */ -function transformAggregatesToChartData(aggregates: Record): Array<{ +function transformAggregatesToChartData( + aggregates: Record, + stcd: string, + stnm: string +): Array<{ name: string; - dataXy: Array<[number, number]>; + dataXy: Array<{ + value: [number, number]; + stcd: string; + stnm: string; + }>; }> { - const result: Array<{ name: string; dataXy: Array<[number, number]> }> = []; + const result: Array<{ + name: string; + dataXy: Array<{ + value: [number, number]; + stcd: string; + stnm: string; + }>; + }> = []; for (let month = 1; month <= 12; month++) { const key = month.toString(); @@ -128,11 +145,19 @@ function transformAggregatesToChartData(aggregates: Record): Arra continue; } - // 转换数据格式:{ wthg, vwt } → [vwt, wthg] - const dataXy: Array<[number, number]> = monthData.map((item: any) => [ - parseFloat(item.vwt), // 温度 - parseInt(item.wthg) // 深度/高程 - ]); + // ✅ 转换数据格式:将数据点包装为对象,包含元信息 + const dataXy: Array<{ + value: [number, number]; + stcd: string; + stnm: string; + }> = monthData.map((item: any) => ({ + value: [ + parseFloat(item.vwt), // 温度 + parseInt(item.wthg) // 深度/高程 + ] as [number, number], // ✅ 显式声明为元组类型 + stcd: stcd, // 站点编码 + stnm: stnm // 站点名称 + })); result.push({ name: `${month}月`, @@ -336,8 +361,15 @@ const selectOptions = async () => { const chartRef = ref(null); let chartInstance: ECharts | null = null; -// 图表数据 -const chartData = ref }>>([]); +// 图表数据(对象型格式,包含站点元信息) +const chartData = ref; +}>>([]); // Y轴类型(1=水深,2=高程) const type = ref(1); @@ -386,8 +418,18 @@ const fetchChartData = async (stcd: string, year: string | number) => { const aggregates = res?.data?.aggregates; if (aggregates) { - // 转换数据 - chartData.value = transformAggregatesToChartData(aggregates); + // ✅ 获取当前选中的站点名称 + let currentStnm = ''; + select.value.options.forEach((station: any) => { + station.children?.forEach((child: any) => { + if (child.value === stcd) { + currentStnm = child.title; + } + }); + }); + + // ✅ 转换数据,传递 stcd 和 stnm + chartData.value = transformAggregatesToChartData(aggregates, stcd, currentStnm); // ✅ 修改:传入固定值 12,而非 chartData.value.length const { colors: newColors, selected: newSelected } = generateColorsAndVisibility( @@ -433,6 +475,30 @@ const initChart = () => { } chartInstance = echarts.init(chartRef.value); + + // 绑定点击事件(具体处理逻辑由用户自行实现) + chartInstance.on('click', (params: any) => { + console.log('图表数据点被点击:', params); + + // ✅ 直接从 params.data 中获取 stcd 和 stnm + const stcd = params.data?.stcd; + const stnm = params.data?.stnm; + const temperature = params.data?.value?.[0]; + const depth = params.data?.value?.[1]; + + console.log('站点编码:', stcd); + console.log('站点名称:', stnm); + console.log('水温:', temperature); + console.log('深度:', depth); + modelStore.modalVisible = true; + modelStore.params.sttp = "wt_point"; + modelStore.title = stnm + "详情信息"; + // modelStore.isBasicEdit = true; + modelStore.params.stcd = stcd; + + // TODO: 在此处添加您的业务逻辑 + }); + updateChart(); }; @@ -446,14 +512,15 @@ const updateChart = () => { chartData.value.forEach((item) => { if (item.dataXy.length > 0) { - xData.push(item.dataXy[0][0]); + // ✅ 从对象中提取 value[0](温度值) + xData.push(item.dataXy[0].value[0]); } legend.push(item.name); yData.push({ name: item.name, - data: item.dataXy, + data: item.dataXy, // ✅ 直接使用对象数组 type: 'line', smooth: true, connectNulls: true, @@ -483,8 +550,9 @@ const updateChart = () => { formatter: (params: any) => { if (!params || !params.seriesName) return ''; - const temperature = params.data[0]; - const depth = params.data[1]; + // ✅ 从对象格式中获取数据 + const temperature = params.data?.value?.[0]; + const depth = params.data?.value?.[1]; return `${params.seriesName}
水温(℃):${temperature}
@@ -649,7 +717,7 @@ const handlePanelChange1 = (data: any) => { flex: 1; width: 100%; min-height: 252px !important; - display: flex; + display: flex; justify-content: center; align-items: center; } diff --git a/frontend/src/modules/churukushuiwenMod/churukushuiwen.vue b/frontend/src/modules/churukushuiwenMod/churukushuiwen.vue new file mode 100644 index 0000000..b42352c --- /dev/null +++ b/frontend/src/modules/churukushuiwenMod/churukushuiwen.vue @@ -0,0 +1,378 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/modules/churukushuiwenMod/index.vue b/frontend/src/modules/churukushuiwenMod/index.vue index 268aac3..89e1535 100644 --- a/frontend/src/modules/churukushuiwenMod/index.vue +++ b/frontend/src/modules/churukushuiwenMod/index.vue @@ -14,6 +14,15 @@
+ + + + + + @@ -24,7 +33,7 @@ import dayjs from 'dayjs'; import SidePanelItem from '@/components/SidePanelItem/index.vue'; import { getVmsstbprpt, inOutOneGetKendoListCust } from '@/api/sw'; import { useJidiSelectEventStore } from "@/store/modules/jidiSelectEvent"; - +import churukushuiwen from './churukushuiwen.vue' // ==================== 组件基础配置 ==================== // 定义组件名(便于调试和递归) defineOptions({ @@ -64,6 +73,9 @@ const scopeDate = ref({ // ==================== 业务变量 ==================== const baseid = ref(''); // 当前选中的基地ID +const modalVisible = ref(false); // 弹框显示状态 +const clickDataInfo = ref(null); // 点击的数据点信息 +const stationName = ref(''); // 站点名称 // ==================== 基地列表数据(硬编码) ==================== const jiDiList: any = ref([ @@ -201,7 +213,7 @@ function calculateYAxisRange(data: (number | null)[]) { // 上下各扩展0.2,避免曲线贴边 return { min: Number((min - 0.2).toFixed(1)), // 最小值减0.2 - max: Number((max + 0.2).toFixed(1)) // 最大值加0.2 + max: Number((max + 0.1).toFixed(1)) // 最大值加0.2 } } @@ -215,7 +227,7 @@ function calculateXAxisInterval(dateCount: number): number { if (dateCount <= 4) return 0 // 数据点≤4时,显示所有刻度 return Math.ceil(dateCount / 4) - 1 // 动态计算间隔,保证最多4个刻度 } -const paramsOne = ref({ +const paramsOne:any = ref({ value: '', tm: [currentMonth, currentMonth] }) @@ -225,14 +237,14 @@ const paramsOne = ref({ */ async function fetchChartData() { if (loading.value) return; // 防止重复请求 - + loading.value = true; // 开始请求前设置loading - + try { // 动态计算时间范围(考虑不同月份的实际天数) const startDate = paramsOne.value.tm[0] + '-01 00:00:00'; const endDate = dayjs(paramsOne.value.tm[1]).endOf('month').format('YYYY-MM-DD') + ' 23:59:59'; - + // 构建查询参数(固定参数,后续可扩展为动态) const params = { filter: { @@ -262,7 +274,7 @@ async function fetchChartData() { // 根据数据长度决定showemit if (rawData.length > 0) { showemit.value = true; // 有数据则显示图表 - + // 转换数据格式 const { dates, iwtData, dwtData } = transformChartData(rawData) @@ -275,7 +287,7 @@ async function fetchChartData() { } else { updateChart(dates, iwtData, dwtData, 0); // 已有实例则更新 } - + // 强制重绘,确保图表尺寸正确适配容器 setTimeout(() => { if (chartInstance) { @@ -307,13 +319,13 @@ async function fetchChartData() { */ const initChartWithData = (dates: string[], iwtData: (number | null)[], dwtData: (number | null)[]) => { if (!chartContainer.value) return; - + const containerHeight = chartContainer.value.offsetHeight; if (containerHeight === 0) { setTimeout(() => initChartWithData(dates, iwtData, dwtData), 100); return; } - + chartInstance = echarts.init(chartContainer.value); updateChart(dates, iwtData, dwtData, 0); }; @@ -528,6 +540,11 @@ function updateChart(dates: string[], iwtData: (number | null)[], dwtData: (numb // 应用配置到图表实例 chartInstance.setOption(option, true); // true表示完全替换配置 + + // 绑定点击事件监听器 + chartInstance.off('click'); // 先移除旧的事件监听 + chartInstance.on('click', handleChartClick); + console.log('图表更新成功') // 强制重绘,确保图表尺寸正确适配容器 @@ -582,6 +599,45 @@ const handleResize = () => { // ==================== 事件处理函数 ==================== +/** + * 图表数据点点击事件处理 + * @param params - ECharts点击事件参数 + */ +const handleChartClick = (params: any) => { + console.log('图表点击事件:', params); + + // 只处理数据系列的点击 + if (params.componentType === 'series') { + const { seriesName, name, value, dataIndex } = params; + + // 保存点击数据信息 + clickDataInfo.value = { + date: name, // 日期 + temperature: value, // 水温值 + type: seriesName, // 类型:入库水温/出库水温 + dataIndex: dataIndex // 数据索引 + }; + + // 获取站点名称(从下拉选项中查找) + // console.log('站点名称:', select.value.options, paramsOne.value.value); + const selectedStation = select.value.options + .flatMap((base: any) => base.children || []) + .find((station: any) => station.stcd === paramsOne.value.value); + stationName.value = selectedStation?.title || '未知站点'; + + // 打开弹框 + modalVisible.value = true; + } +}; + +/** + * 弹框关闭处理 + */ +const handleModalClose = () => { + modalVisible.value = false; + clickDataInfo.value = null; +}; + /** * SidePanelItem面板变化回调 * 处理下拉框和日期选择器的值变化 @@ -604,7 +660,7 @@ const handlePanelChange1 = (data: any) => { */ const getselsectData = async () => { loading.value = true; // 开始加载站点数据 - + try { let params = { "filter": { @@ -725,12 +781,19 @@ watch( .chart-container { width: 100%; height: 252px; - display: flex; - justify-content: center; - align-items: center; + display: flex; + justify-content: center; + align-items: center; /* 固定高度252px */ } -:deep(.ant-spin-nested-loading ){ - height: 252px !important; + +:deep(.ant-spin-nested-loading) { + height: 252px !important; +} + +/* 弹框内容样式 */ +.modal-content { + min-height: 100px; + padding: 16px 0; } \ No newline at end of file diff --git a/frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/TwoLayers/diwenshuijianhuansheshileixingzuchengjijieruqingkuangTwoLayers.vue b/frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/TwoLayers/diwenshuijianhuansheshileixingzuchengjijieruqingkuangTwoLayers.vue new file mode 100644 index 0000000..8ee5f4a --- /dev/null +++ b/frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/TwoLayers/diwenshuijianhuansheshileixingzuchengjijieruqingkuangTwoLayers.vue @@ -0,0 +1,525 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/index.vue b/frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/index.vue index e96ac64..bc206e3 100644 --- a/frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/index.vue +++ b/frontend/src/modules/diwenshuijianhuansheshileixingzuchengjijieruqingkuang/index.vue @@ -1,49 +1,42 @@ @@ -143,15 +253,24 @@ onMounted(() => { margin-top: 20px; font-size: 14px; color: #333; - .text_num{ + + .text_num { width: 100%; margin-top: 3px; text-align: center; // font-size: 16px; - color: #2f6b98; - font-size: 18px; + color: #2f6b98; + font-size: 18px; } } } } + +:deep(.ant-spin-nested-loading) { + height: 158px !important; +} + +.modal-content { + padding: 20px; +} \ No newline at end of file diff --git a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue index b494d5f..b91641f 100644 --- a/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue +++ b/frontend/src/modules/monthlyAvgWaterTemCompareHistory/index.vue @@ -1,51 +1,429 @@ + + \ No newline at end of file diff --git a/frontend/src/modules/sheshileixingjieshao/index.vue b/frontend/src/modules/sheshileixingjieshao/index.vue index 39f863d..0a97b05 100644 --- a/frontend/src/modules/sheshileixingjieshao/index.vue +++ b/frontend/src/modules/sheshileixingjieshao/index.vue @@ -1,31 +1,46 @@ \ No newline at end of file diff --git a/frontend/src/modules/shuiWenNianNeiFenBu/TwoLayers/yaerAverage.vue b/frontend/src/modules/shuiWenNianNeiFenBu/TwoLayers/yaerAverage.vue new file mode 100644 index 0000000..3416ac8 --- /dev/null +++ b/frontend/src/modules/shuiWenNianNeiFenBu/TwoLayers/yaerAverage.vue @@ -0,0 +1,379 @@ + + + + + diff --git a/frontend/src/modules/shuiWenNianNeiFenBu/index.vue b/frontend/src/modules/shuiWenNianNeiFenBu/index.vue index 1ec6b59..34d4bea 100644 --- a/frontend/src/modules/shuiWenNianNeiFenBu/index.vue +++ b/frontend/src/modules/shuiWenNianNeiFenBu/index.vue @@ -1,28 +1,140 @@ \ No newline at end of file diff --git a/frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/index.vue b/frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/index.vue index 508477f..f3f1a2d 100644 --- a/frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/index.vue +++ b/frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/index.vue @@ -3,7 +3,8 @@
-
+
+ + @@ -33,7 +39,7 @@ import { ref, onMounted, watch } from "vue"; import SidePanelItem from "@/components/SidePanelItem/index.vue"; import { getKendoListCust, baseEvnmAutoMonitorGetKendoListCust } from "@/api/sw"; import { useJidiSelectEventStore } from "@/store/modules/jidiSelectEvent"; - +import ShuiwenjiancegongzuoEJ from "./shuiwenjiancegongzuoEJ.vue" const JidiSelectEventStore = useJidiSelectEventStore(); // 定义组件名(便于调试和递归) defineOptions({ @@ -46,21 +52,42 @@ const facilities = ref([ name: "表层水温", count: 0, icon: "icon iconfont icon-shuizhijiancezhan", + key:'26' }, { name: "垂向水温", count: 0, icon: "icon iconfont icon-diwenshuijianhuan", + key:'27' }, ]); // Loading 状态 const loading = ref(false); +// 弹框相关状态 +const modalVisible = ref(false); +const currentFacility = ref(null); + +// 点击处理函数 +const handleFacilityClick = (facility: any) => { + // console.log(facility); + currentFacility.value = facility; + modalVisible.value = true; + + +}; + +// 关闭弹框 +const handleCloseModal = () => { + modalVisible.value = false; + currentFacility.value = null; +}; + const init = async () => { // 防重复请求 if (loading.value) return; - + try { loading.value = true; const params = { @@ -79,8 +106,8 @@ const init = async () => { "field": "baseId", "operator": "eq", "value": baseid.value - }:null - ].filter(Boolean) + } : null + ].filter(Boolean) } } let res = await baseEvnmAutoMonitorGetKendoListCust(params); diff --git a/frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/shuiwenjiancegongzuoEJ.vue b/frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/shuiwenjiancegongzuoEJ.vue new file mode 100644 index 0000000..9d94fb5 --- /dev/null +++ b/frontend/src/modules/shuiwenjiancegongzuokaizhangqingkuang/shuiwenjiancegongzuoEJ.vue @@ -0,0 +1,548 @@ + + + + + diff --git a/frontend/src/modules/yanchengshuiwenChangeMod/index.vue b/frontend/src/modules/yanchengshuiwenChangeMod/index.vue index ffc8c8d..25972d3 100644 --- a/frontend/src/modules/yanchengshuiwenChangeMod/index.vue +++ b/frontend/src/modules/yanchengshuiwenChangeMod/index.vue @@ -2,12 +2,12 @@