| 
					
				 | 
			
			
				@@ -429,6 +429,7 @@ import { toStringHDMS } from 'ol/coordinate.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 存放所有要素的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const allElementList = ref([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { id: 1, data_name: '气温', data_type: '温湿度', isSelected: false }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -680,7 +681,7 @@ const popoverOverlay = ref<Overlay | null>(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 底部时间轴 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const timeInterval = ref(2); // 默认时间间隔为2分钟 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const getCurrentTimestamp = (): number => {// 返回当前时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const getCurrentTimestamp = (): number => {// 返回当天时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return new Date().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -731,11 +732,14 @@ const togglePlay = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 开始播放,设置定时器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     playInterval = window.setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const currentTime = getCurrentTimestamp(); // 当前时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      maxTime = getCurrentMinutesOfDay(); // 更新最大时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (value2.value < currentTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const time=new Date(value1.value).getTime() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      maxTime = getCurrentMinutesOfDay(); // 更新最大时间   1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (time + value2.value*60*1000 + timeInterval.value*60*1000 < currentTime  ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         value2.value += timeInterval.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         getList(); // 获取当前时间点的要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        value2.value = maxTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         getList(); // 获取当前时间点的要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 5000); // 每10秒滑动一次 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -747,31 +751,7 @@ const togglePlay = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// const togglePlay = () => {  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // isPlay.value = !isPlay.value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   if (isPlay.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     // 开始播放,设置定时器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     playInterval = window.setInterval(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       const currentTime = getCurrentTimestamp(); // 当前时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       maxTime = getCurrentMinutesOfDay(); // 更新最大时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       // 自动更新滑块值并获取要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       if (value2.value < currentTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//         value2.value += timeInterval.value; // 滑块值前进 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//         getList(); // 获取当前时间点的要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//         getList(); // 获取当前时间点的要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     }, 5000); // 每5秒滑动一次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     // 暂停播放,清除定时器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     console.log("暂停播放"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     if (playInterval !== null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       clearInterval(playInterval); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//       playInterval = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 监听滑块变化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const onSliderChange = (val: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 当滑块手动变化时,暂停播放 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -874,9 +854,6 @@ const getList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         time_space: 1 // 时间间隔 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const response = await getDataItemList(pagea); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const dataList = response.data?.list ?? []; // 使用空值合并操作符保证 dataList 总是为数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     processTableData.value = dataList; // 存储数据,避免 null 值 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1221,7 +1198,28 @@ const initializeOverviewMap = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const getStations = (stations) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   stationSource.clear(); // 清除之前的站点标记 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // 获取选中的日期和滑块值,并计算时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // // 获取选中的日期和滑块值,并计算时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const selectedDate = value1.value; // 选中日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const minutesOfDay = value2.value; // 滑块值(分钟数) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // // 将日期和分钟数合并为完整时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const hours = Math.floor(minutesOfDay / 60); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const minutes = minutesOfDay % 60; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // // 时间戳格式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const timestamp = new Date(selectedDate!.getFullYear(), selectedDate!.getMonth(), selectedDate!.getDate(), hours, minutes ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // // 格式化时间戳为 'yyyy-MM-dd HH:mm:ss' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const formattedTimestamp = timestamp.toLocaleString('zh-CN', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   year: 'numeric', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   month: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   day: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   hour: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   minute: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   // second: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //   hour12: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const selectedDate = value1.value; // 选中日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const minutesOfDay = value2.value; // 滑块值(分钟数) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1235,17 +1233,22 @@ const getStations = (stations) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     hours, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     minutes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const formattedTimestamp = parseTime(timestamp, '{y}-{m}-{d} {h}:{i}'); // 格式化时间戳为 'yyyy-MM-dd HH:mm:ss' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // 使用UTC时间来格式化时间戳为 'yyyy-MM-dd HH:mm:ss' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const year = timestamp.getUTCFullYear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const month = ('0' + (timestamp.getUTCMonth() + 1)).slice(-2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const day = ('0' + timestamp.getUTCDate()).slice(-2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const hour = ('0' + timestamp.getUTCHours()).slice(-2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const minute = ('0' + timestamp.getUTCMinutes()).slice(-2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // const second = ('0' + timestamp.getUTCSeconds()).slice(-2);   `${year}-${month}-${day} ${hour}:${minute}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // 格式化时间戳为 'yyyy-MM-dd HH:mm:ss' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const formattedTimestamp = timestamp.toLocaleString('zh-CN', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    year: 'numeric', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    month: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    day: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    hour: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    minute: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // second: '2-digit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    hour12: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 更新图例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const selectedElements = copiedCustomizeColumns.value.map((col) => ({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1258,151 +1261,6 @@ const getStations = (stations) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // stations.forEach((station) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //   if (station.as_lon && station.as_lat) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     const result = processTableData.value.find( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       (item) => item.as_code === station.as_code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     const latitude = parseFloat(station.as_lat.replace('N', '')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     const longitude = parseFloat(station.as_lon.replace('E', '')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     let featureTextParts: string[] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     if (isstationCode.value && isstationName.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       // 如果 both station code and name are available 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       featureTextParts = [`${station.as_code}`, `${station.as_name}`]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     } else if (isstationCode.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       // 如果只有 station code 可用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       featureTextParts = [`${station.as_code}`]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     } else if (isstationName.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       // 如果只有 station name 可用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       featureTextParts = [`${station.as_name}`]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     console.log(copiedCustomizeColumns.value,'copiedCustomizeColumns.value'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     // 只显示选中列的数据,不显示单位,无数据时用“/”代替 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     const selectedElementsText = copiedCustomizeColumns.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       .map((selectedElem) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //         if (result && result[selectedElem.data_id] !== ' ') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           const value = result[selectedElem.data_id] || '/'; // 如果值不存在则显示“/” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           return `${value}`; // 显示名称和数值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           return ' /'; // 如果未找到匹配项,只返回“/” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       .filter((value) => value !== '/') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       .join('\n'); // 过滤掉所有“/”,使用换行符分隔每个选中要素 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     // 组合站点基础信息和选中要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     const featureText = `${featureTextParts.join('\n')}\n${selectedElementsText}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     // 创建站点的特征(Feature) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     const feature = new Feature({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       geometry: new Point(fromLonLat([longitude, latitude], 'EPSG:3857')), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       name: station.as_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       code: station.as_code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       description: selectedElementsText, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     // 设置站点图标和文字样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     feature.setStyle( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //         image: new Icon({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           src: getIconPath(station), //调用图标方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           scale: 0.008, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //         }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //         text: new Text({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           text: featureText, // 显示站号、站名和选中要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           font: '15px Calibri,sans-serif', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           fill: new Fill({ color: '#000' }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           stroke: new Stroke({ color: '#fff', width: 2 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           offsetY: -20, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //           textAlign: 'center', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //         }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //       }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     // 将站点特征添加到站点源 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //     stationSource.addFeature(feature); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  /* stations.forEach((station) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   if (station.as_lon && station.as_lat) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     const result = processTableData.value.find( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       (item) => item.as_code === station.as_code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     const latitude = parseFloat(station.as_lat.replace('N', '')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     const longitude = parseFloat(station.as_lon.replace('E', '')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     let featureTextParts: string[] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     if (isstationCode.value && isstationName.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       // 如果 both station code and name are available 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       featureTextParts = [`${station.as_code}`, `${station.as_name}`]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     } else if (isstationCode.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       // 如果只有 station code 可用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       featureTextParts = [`${station.as_code}`]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     } else if (isstationName.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       // 如果只有 station name 可用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       featureTextParts = [`${station.as_name}`]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     // 获取当前站点状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     const status = searchData(station.as_code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     // 只显示选中列的数据,不显示单位,无数据时用“/”代替 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     // 当 status === 0 或 status === 2 时,不展示历史数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     const selectedElementsText =  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       status === 1 // 只有实时状态才展示要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         ? copiedCustomizeColumns.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             .map((selectedElem) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               if (result && result[selectedElem.data_id] !== ' ') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 const value = result[selectedElem.data_id] || '/'; // 如果值不存在则显示“/” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 return `${value}`; // 显示名称和数值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 return ' /'; // 如果未找到匹配项,只返回“/” 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             .filter((value) => value !== '/') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             .join('\n') // 过滤掉所有“/”,使用换行符分隔每个选中要素 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         : ''; // 非实时状态,清空历史要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     // 组合站点基础信息和选中要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     const featureText = `${featureTextParts.join('\n')}${selectedElementsText ? `\n${selectedElementsText}` : ''}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     // 创建站点的特征(Feature) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     const feature = new Feature({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       geometry: new Point(fromLonLat([longitude, latitude], 'EPSG:3857')), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       name: station.as_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       code: station.as_code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       description: selectedElementsText, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     // 设置站点图标和文字样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     feature.setStyle( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         image: new Icon({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           src: getIconPath(station), // 调用图标方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           scale: 0.008, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         text: new Text({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           text: featureText, // 显示站号、站名和选中要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           font: '15px Calibri,sans-serif', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           fill: new Fill({ color: '#000' }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           stroke: new Stroke({ color: '#fff', width: 2 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           offsetY: -20, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           textAlign: 'center', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-       }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     // 将站点特征添加到站点源 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     stationSource.addFeature(feature); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- });*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 可正常展示气温要素默认展示信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   stations.forEach((station) => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1485,108 +1343,6 @@ const getStations = (stations) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  /*stations.forEach((station) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (station.as_lon && station.as_lat) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const result = processTableData.value.find( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        (item) => item.as_code === station.as_code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const latitude = parseFloat(station.as_lat.replace('N', '')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const longitude = parseFloat(station.as_lon.replace('E', '')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 获取当前站点状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const status = searchData(station.as_code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 生成站点图标和信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const featureTextParts: string[] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (isstationCode.value && isstationName.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        featureTextParts.push(station.as_code, station.as_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else if (isstationCode.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        featureTextParts.push(station.as_code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else if (isstationName.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        featureTextParts.push(station.as_name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 获取选中要素信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const selectedElementsText = copiedCustomizeColumns.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .map((selectedElem) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (status === 0 || status === 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return ' /'; // 无数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (result && result[selectedElem.data_id] !== ' ') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              const value = result[selectedElem.data_id] || '/'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              return `${value}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              return ' /'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .filter((value) => value !== '/') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .join('\n'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const featureText = `${featureTextParts.join('\n')}${selectedElementsText ? `\n${selectedElementsText}` : ''}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 创建站点的特征(Feature) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const feature = new Feature({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        geometry: new Point(fromLonLat([longitude, latitude], 'EPSG:3857')), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        name: station.as_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        code: station.as_code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        description: selectedElementsText, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 设置站点图标和文字样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      feature.setStyle( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        new Style({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          image: new Icon({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            src: getIconPath(station), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            scale: 0.008, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          text: new Text({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            text: featureText, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            font: '15px Calibri,sans-serif', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            fill: new Fill({ color: '#000' }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            stroke: new Stroke({ color: '#fff', width: 2 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            offsetY: -20, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            textAlign: 'center', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 将站点特征添加到站点源 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      stationSource.addFeature(feature); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 计算站点图标的坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // const map = ...; // 获取地图实例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const pixel = map.getPixelFromCoordinate(fromLonLat([longitude, latitude], 'EPSG:4326')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const x = pixel[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const y = pixel[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 创建九宫格元素并添加到地图容器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const nineGridBox = document.createElement('div'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      nineGridBox.classList.add('grid-container'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      nineGridBox.style.position = 'absolute'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      nineGridBox.style.left = `${x}px`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      nineGridBox.style.top = `${y + 30}px`; // 图标下方30px(可调整) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 填充九宫格内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      nineGridBox.innerHTML = ` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div v-for="item in 9" :key="item" class="grid-item"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ${item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      `; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 将九宫格盒子添加到地图容器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      document.querySelector('.map-container')?.appendChild(nineGridBox); // 假设 .map-container 是地图容器的类名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  });*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1616,6 +1372,8 @@ const updateLegend = ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   selectedElements: Array<{ data_name: string; data_unit: string }>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   timestamp: string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  console.log("timestamp11111111",timestamp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const legendContainer = document.getElementById('map-legend'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!legendContainer) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1632,7 +1390,6 @@ const updateLegend = ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 添加时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const timeItem = document.createElement('div'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   timeItem.className = 'legend-item time-item'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // timeItem.textContent = `当前时间: ${timestamp}`; getCurrentTimestamp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   timeItem.textContent = `当前时间: ${timestamp}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   legendContainer.appendChild(timeItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1653,18 +1410,6 @@ const updateLegend = ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 查询所有人工要素字典表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const elementList = ref<any>([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// const getAllRgDataList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   const { data } = await getRgDataList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   elementList.value = data.list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   // 如果需要根据选中的要素立即更新数据,强制触发一次数据加载 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   if (copiedCustomizeColumns.value.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     // 调用 getList() 来加载与选中要素相关的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     getList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const getAllRgDataList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   const { data } = await getRgDataList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   elementList.value = data.list; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1685,22 +1430,6 @@ const getAllRgDataList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 要素的选中和取消   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// const toggleSelection = (item) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   item.isSelected = !item.isSelected; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   if (item.isSelected) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     // 添加选中的要素 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     copiedCustomizeColumns.value.push(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     // 取消选中的要素 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//     copiedCustomizeColumns.value = copiedCustomizeColumns.value.filter(column => column.data_id !== item.data_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   //根据要素查询数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   pageable.value.data_items = copiedCustomizeColumns.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//   getList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const toggleSelection = (item) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   item.isSelected = !item.isSelected; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |