From 27a1a971ef7dc2c09d2ae944dda9f6aeada67701 Mon Sep 17 00:00:00 2001 From: BianLzhaoMin <11485688+bianliangzhaomin123@user.noreply.gitee.com> Date: Fri, 25 Apr 2025 15:35:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=AD=90=E7=9C=8B=E6=9D=BF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=AE=8C=E5=96=84=20=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/synthesisQuery/digitalSignage.css | 50 +- .../static/img/digitalSignage/project.png | Bin 0 -> 4565 bytes .../static/img/digitalSignage/warning.png | Bin 0 -> 5120 bytes .../static/img/digitalSignage/zt_white.png | Bin 0 -> 8834 bytes .../js/synthesisQuery/digitalSignage.js | 1089 +++++++++++------ .../pages/synthesisQuery/digitalSignage.html | 2 +- 6 files changed, 790 insertions(+), 351 deletions(-) create mode 100644 src/main/resources/static/img/digitalSignage/project.png create mode 100644 src/main/resources/static/img/digitalSignage/warning.png create mode 100644 src/main/resources/static/img/digitalSignage/zt_white.png diff --git a/src/main/resources/static/css/synthesisQuery/digitalSignage.css b/src/main/resources/static/css/synthesisQuery/digitalSignage.css index 2345732..bf9a5e7 100644 --- a/src/main/resources/static/css/synthesisQuery/digitalSignage.css +++ b/src/main/resources/static/css/synthesisQuery/digitalSignage.css @@ -54,8 +54,8 @@ body { .scroll-box { top: 15px; left: 15px; - width: 460px; - height: 180px; + width: 520px; + height: 200px; } .scroll-box-title, @@ -64,13 +64,13 @@ body { } .scroll-box-title { - height: 30px; - line-height: 30px; + height: 40px; + line-height: 40px; font-weight: bold; } .scroll-box-content { - height: 150px; + height: 160px; /* overflow-y: auto; */ overflow: hidden; } @@ -78,6 +78,7 @@ body { .flex-box { padding: 6px 0; display: flex; + align-items: center; box-sizing: border-box; } @@ -104,14 +105,31 @@ body { .content-item span { display: flex; - flex-direction: column; align-items: center; justify-content: center; } +.content-item span img { + width: 18px; + height: 18px; + margin-right: 4px; +} + +.content-item span:last-child { + display: flex; + flex-direction: column !important; + justify-content: center !important; + align-items: flex-start !important; +} + .content-item span i { padding: 1px 0; font-style: normal; + white-space: nowrap; /* 禁止换行 */ + overflow: hidden; /* 溢出隐藏 */ + text-overflow: ellipsis; /* 显示省略号 */ + display: inline-block; /* 必须设置宽度才能生效 */ + max-width: 100%; /* 限制最大宽度,防止撑开容器 */ } /* 左下角图例 */ @@ -163,6 +181,9 @@ body { font-size: 14px; } +.map-container-item-ropeway { + display: flex; +} .map-container-item span:first-child { width: 160px; } @@ -174,10 +195,15 @@ body { /* 索道信息窗口样式 */ .map-container-item-ropeway span:first-child { padding-left: 16px; + width: 100px; } .map-container-item-ropeway span:last-child { margin-left: 4px; - min-width: 120px; + width: 140px; + white-space: nowrap; /* 禁止换行 */ + overflow: hidden; /* 溢出隐藏 */ + text-overflow: ellipsis; /* 显示省略号 */ + display: inline-block; /* 必须设置宽度才能生效 */ } /* 交叉信息窗口样式 */ @@ -202,7 +228,7 @@ body { } .map-container-cross .map-container-2 h4 { - padding-left: 20px; + /* padding-left: 20px; */ } /* 右侧抽屉 */ @@ -272,3 +298,11 @@ body { .layui-tree-line .layui-tree-entry:hover .layui-tree-txt { color: #dfd8d8 !important; } + +.layui-tree-click { + background-color: #54b4e2 !important; /* 浅蓝色背景 */ + color: #1890ff !important; /* 蓝色文字 */ +} +.layui-icon { + color: #fff !important; +} diff --git a/src/main/resources/static/img/digitalSignage/project.png b/src/main/resources/static/img/digitalSignage/project.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec40afe132708e593ddeae50e37291e6b90fd2a GIT binary patch literal 4565 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/digitalSignage/zt_white.png b/src/main/resources/static/img/digitalSignage/zt_white.png new file mode 100644 index 0000000000000000000000000000000000000000..251c58f48a28770fed67cbe5b8a844f0241c13dc GIT binary patch literal 8834 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 qT55D{rISXW!=wDbHh$n;j4cD literal 0 HcmV?d00001 diff --git a/src/main/resources/static/js/synthesisQuery/digitalSignage.js b/src/main/resources/static/js/synthesisQuery/digitalSignage.js index 8513b69..7a0f37f 100644 --- a/src/main/resources/static/js/synthesisQuery/digitalSignage.js +++ b/src/main/resources/static/js/synthesisQuery/digitalSignage.js @@ -1,4 +1,65 @@ -let map = null; +let map = null; // 地图实例 +let treeData = []; // 组织机构树数据 +let nodeId = ""; // 当前选中的节点ID +let cablewayList = []; // 索道列表 +let towerList = []; // 塔列表 +let crossingList = []; // 跨越列表 +let crossingListNew = []; // 跨越列表 +let intLng = 116.254; // 初始经度 +let intLat = 39.965; // 初始纬度 +// 图例数据 +const legendData = [ + { + name: "基础开挖", + value: 0, + icon: "../../img/digitalSignage/yellow.png", + }, + { + name: "开挖完成", + value: 0, + icon: "../../img/digitalSignage/green.png", + }, + { + name: "浇筑完成", + value: 0, + icon: "../../img/digitalSignage/blue.png", + }, + { + name: "铁塔组立", + value: 0, + icon: "../../img/digitalSignage/orange.png", + }, + { + name: "组塔完成", + value: 0, + icon: "../../img/digitalSignage/zt_red.png", + }, + { + name: "架线完成", + value: 0, + icon: "../../img/digitalSignage/zt_purple.png", + }, + { + name: "附件安装", + value: 0, + icon: "../../img/digitalSignage/zt_green.png", + }, + { + name: "未 开 始", + value: 0, + icon: "../../img/digitalSignage/white.png", + }, + { + name: "索道运输", + value: 0, + icon: "../../img/digitalSignage/sd.png", + }, + { + name: "项 目 部", + value: 0, + icon: "../../img/digitalSignage/project.png", + }, +]; // 地图配置项 const config = { @@ -69,59 +130,154 @@ const config = { }, ], polyline: { - strokeColor: "#3388ff", // 线条颜色 - strokeWeight: 3, // 线条宽度 - strokeOpacity: 0.8, // 透明度 + strokeWeight: 1, // 线条宽度 + strokeOpacity: 0.9, // 透明度 strokeStyle: "dashed", // solid(实线)或dashed(虚线) enableEditing: false, // 是否可编辑 enableClicking: true, // 是否可点击 }, }; +// 获取位置信息 +function getLocationInfo(id) { + const params = { + encryptedData: encryptCBC(JSON.stringify({ id })), + }; + ajaxRequest( + dataUrl + "/backstage/digitalSignage/getTowersInfo", + "POST", + params, + true, + function () {}, + function (result) { + console.log(result, "获取位置信息---"); + const { data } = result; + + if (data.cablewaTransVos.length > 0) { + cablewayList = data.cablewaTransVos; + } else { + cablewayList = []; + } + if (data.towerInfoVos.length > 0) { + towerList = data.towerInfoVos; + } else { + towerList = []; + } + if (data.spanInfoVos.length > 0) { + crossingList = data.spanInfoVos; + } else { + crossingList = []; + crossingListNew = []; + } + + // 处理一下交叉信息 + if (crossingList && crossingList.length > 0) { + crossingList.forEach((item) => { + const lonAndLatList = item.lonAndLat.split(","); + lonAndLatList.forEach((lonAndLat, index) => { + const lonAndLatItem = lonAndLat.split("@"); + crossingListNew.push({ + baiduLon: lonAndLatItem[0], + baiduLat: lonAndLatItem[1], + ...item, + }); + }); + }); + } + initMap(); + }, + function (xhr) { + error(xhr); + } + ); +} + // 百度地图初始化 function initMap() { + if (map) { + map = null; + } map = new BMapGL.Map("map-box"); // 以第一个点为中心初始化地图 - map.centerAndZoom( - new BMapGL.Point(config.points[0].lng, config.points[0].lat), - 11 - ); + map.centerAndZoom(new BMapGL.Point(intLng, intLat), 15); map.enableScrollWheelZoom(true); + var styleJson = [ + // 隐藏道路 + { + featureType: "highway", + elementType: "all", + stylers: { visibility: "off" }, + }, + { + featureType: "arterial", + elementType: "all", + stylers: { visibility: "off" }, + }, + { + featureType: "local", + elementType: "all", + stylers: { visibility: "off" }, + }, + { + featureType: "railway", + elementType: "all", + stylers: { visibility: "off" }, + }, - map.setMapStyleV2({ - // styleJson: [ - // { - // featureType: "background", - // elementType: "geometry", - // stylers: { - // color: "#f5f5f5", // 浅灰色背景 - // }, - // }, - // { - // featureType: "road", - // elementType: "geometry", - // stylers: { - // visibility: "off", // 隐藏道路 - // }, - // }, - // ], + // 保留背景、水域、绿地等(避免地图变空白) + { + featureType: "background", + elementType: "all", + stylers: { visibility: "on" }, + }, + { + featureType: "water", + elementType: "all", + stylers: { visibility: "on" }, + }, + { + featureType: "green", + elementType: "all", + stylers: { visibility: "on" }, + }, + + // 保留标点和文字(避免自定义点被隐藏) + { + featureType: "point", + elementType: "all", + stylers: { visibility: "on" }, + }, + { + featureType: "label", + elementType: "all", + stylers: { visibility: "on" }, + }, + ]; + + map.setMapType(BMAP_EARTH_MAP); // 地球模式 + map.setDisplayOptions({ + poiText: false, // 隐藏POI文字 + poiIcon: false, // 隐藏POI图标 + building: false, // 隐藏建筑物 + }); + map.setMapStyleV2({ + styleJson, }); - // map.setMapType(BMAP_EARTH_MAP); // 地球模式 - // map.setDisplayOptions({ - // poiText: false, // 隐藏POI文字 - // poiIcon: false, // 隐藏POI图标 - // building: false, // 隐藏建筑物 - // }); // 添加地图控件(可选) // map.addControl(new BMapGL.NavigationControl()); // map.addControl(new BMapGL.ScaleControl()); // 地图加载完成后添加标点和折线 - map.addEventListener("tilesloaded", function () { + // map.addEventListener("tilesloaded", function () { + // addAllMapPoints(); + // addMapLine(); + // }); + + setTimeout(() => { addAllMapPoints(); addMapLine(); - }); + }, 500); } // 添加标点 @@ -129,7 +285,10 @@ function addAllMapPoints() { // 清除地图上所有现有的标记 map.clearOverlays(); + // const bounds = []; const bounds = []; + // 使用对象记录已添加的点,避免重复 + const addedPoints = {}; const iconTypeList = { 1: "/gzDigitalSignage/img/digitalSignage/yellow.png", 2: "/gzDigitalSignage/img/digitalSignage/green.png", @@ -140,239 +299,434 @@ function addAllMapPoints() { 7: "/gzDigitalSignage/img/digitalSignage/zt_green.png", 8: "/gzDigitalSignage/img/digitalSignage/white.png", 9: "/gzDigitalSignage/img/digitalSignage/sd.png", + 11: "/gzDigitalSignage/img/digitalSignage/zt_white.png", }; - // 使用对象记录已添加的点,避免重复 - const addedPoints = {}; + // 绘制索道标点 + if (cablewayList && cablewayList.length > 0) { + cablewayList.forEach((pointData, index) => { + const pointKey = `117.132663,31.877325`; + // const pointKey = `${pointData.baiduLon},${pointData.baiduLat}`; - config.points.forEach((pointData, index) => { - const pointKey = `${pointData.lng},${pointData.lat}`; + // 如果该坐标点已经添加过标记,则跳过 + if (addedPoints[pointKey]) { + console.warn(`重复的点坐标被跳过: ${pointKey}`); + return; + } - // 如果该坐标点已经添加过标记,则跳过 - if (addedPoints[pointKey]) { - console.warn(`重复的点坐标被跳过: ${pointKey}`); - return; - } + addedPoints[pointKey] = true; + // const point = new BMapGL.Point( + // pointData.baiduLon, + // pointData.baiduLat + // ); + const point = new BMapGL.Point(117.132663, 31.877325); + bounds.push(point); - addedPoints[pointKey] = true; - const point = new BMapGL.Point(pointData.lng, pointData.lat); - bounds.push(point); + // 检查图标是否存在,不存在则使用默认图标 + const iconUrl = iconTypeList[9]; // 默认使用第一个图标 + const myIcon = new BMapGL.Icon(iconUrl, new BMapGL.Size(40, 38), { + anchor: new BMapGL.Size(16, 20), // 修正锚点位置为中心底部 + imageSize: new BMapGL.Size(40, 38), // 与实际图片尺寸一致 + }); - // 检查图标是否存在,不存在则使用默认图标 - const iconUrl = iconTypeList[pointData.type] || iconTypeList[1]; // 默认使用第一个图标 - const myIcon = new BMapGL.Icon(iconUrl, new BMapGL.Size(30, 32), { - anchor: new BMapGL.Size(8, 35), // 修正锚点位置为中心底部 - imageSize: new BMapGL.Size(30, 32), // 与实际图片尺寸一致 - }); + const marker = new BMapGL.Marker(point, { icon: myIcon }); - const marker = new BMapGL.Marker(point, { icon: myIcon }); + // 添加信息窗口 - // 添加信息窗口 + let infoContent = ""; - let infoContent = ""; - - if (pointData.type === 9) { // 索道 infoContent = ` -
-

- 索道运输 -

-
- 索道位置 - 2025-04-24 -
-
- 索道长度 - 2025-04-24 -
-
- 最大载重 - 2025-04-24 -
-
- 安全距离 - 2025-04-24 -
-
- 最大坡度 - 2025-04-24 -
-
`; - } else if (pointData.isCrossing) { - // 交叉信息 +
+

+ 索道运输 +

+
+ 索道位置 + ${pointData.towerName} +
+
+ 索道长度 + ${pointData.cablewayLength} KM +
+
+ 最大载重 + ${pointData.maxHeight} kg +
+
+ 安全距离 + ${pointData.safetyDistance} m +
+
+ 最大坡度 + ${pointData.maxSlope} ° +
+
`; + + // 创建信息窗口,禁用默认样式 + const infoWindow = new BMapGL.InfoWindow(infoContent, { + width: 0, // 宽度设为0,让内容决定宽度 + height: 0, // 高度设为0,让内容决定高度 + offset: new BMapGL.Size(0, -20), // 调整偏移量 + enableAutoPan: true, // 自动平移地图 + enableCloseOnClick: true, // 点击地图不关闭 + }); + + marker.addEventListener("click", function () { + this.openInfoWindow(infoWindow); + + // 移除百度地图默认添加的三角箭头 + setTimeout(() => { + const infoWindowElements = + document.getElementsByClassName("BMap_bubble_pop"); + if (infoWindowElements.length > 0) { + const popup = infoWindowElements[0]; + // 移除箭头元素 + const arrows = + popup.getElementsByClassName("BMap_bubble_arrow"); + while (arrows[0]) { + arrows[0].parentNode.removeChild(arrows[0]); + } + // 移除百度地图添加的额外样式 + popup.style.background = "none"; + popup.style.border = "none"; + popup.style.boxShadow = "none"; + } + }, 50); + }); + + map.addOverlay(marker); + }); + } + + // 绘制杆塔 + if (towerList && towerList.length > 0) { + towerList.forEach((pointData, index) => { + const pointKey = `${pointData.baiduLon},${pointData.baiduLat}`; + // const pointKey = `116.254,39.965`; + // 如果该坐标点已经添加过标记,则跳过 + if (addedPoints[pointKey]) { + console.warn(`重复的点坐标被跳过: ${pointKey}`); + return; + } + + addedPoints[pointKey] = true; + const point = new BMapGL.Point( + pointData.baiduLon, + pointData.baiduLat + ); + bounds.push(point); + + // 检查图标是否存在,不存在则使用默认图标 + const iconUrl = iconTypeList[pointData.towerProgress]; // 默认使用第一个图标 + const myIcon = new BMapGL.Icon(iconUrl, new BMapGL.Size(40, 38), { + anchor: new BMapGL.Size(16, 20), // 修正锚点位置为中心底部 + imageSize: new BMapGL.Size(40, 38), // 与实际图片尺寸一致 + }); + + const marker = new BMapGL.Marker(point, { icon: myIcon }); + + // 添加信息窗口 + let infoContent = ""; + + // 索道 infoContent = ` -
-
-

- ${pointData.title} -

-
- 基础开挖 - 2025-04-24 -
-
- 基础开挖完成 - 2025-04-24 -
-
- 基础浇筑完成 - 2025-04-24 -
-
- 铁塔组立 - 2025-04-24 -
-
- 铁塔组立完成 - 2025-04-24 -
-
- 架线施工完成 - 2025-04-24 -
-
-
-

- 交叉跨越信息 ( ${pointData.title} ) -

-
- 上层线路 - 550V宁安线 -
-
- 下层线路 - 220V宁安线 -
-
- 交叉角度 - 78.5° -
-
- 垂直距离 - 12.8m -
-
- 安全裕度 - 4.8m -
-
-
`; - } else { - // 普通信息 - infoContent = ` -
+

- ${pointData.title} + ${pointData.towerName}

基础开挖 - 2025-04-24 + ${pointData.time1 || "/"}
基础开挖完成 - 2025-04-24 + ${pointData.time2 || "/"}
基础浇筑完成 - 2025-04-24 + ${pointData.time3 || "/"}
铁塔组立 - 2025-04-24 + ${pointData.time4 || "/"}
铁塔组立完成 - 2025-04-24 + ${pointData.time5 || "/"}
架线施工完成 - 2025-04-24 + ${pointData.time6 || "/"} +
+
`; + + // 创建信息窗口,禁用默认样式 + const infoWindow = new BMapGL.InfoWindow(infoContent, { + width: 0, // 宽度设为0,让内容决定宽度 + height: 0, // 高度设为0,让内容决定高度 + offset: new BMapGL.Size(0, -20), // 调整偏移量 + enableAutoPan: true, // 自动平移地图 + enableCloseOnClick: true, // 点击地图不关闭 + }); + + marker.addEventListener("click", function () { + this.openInfoWindow(infoWindow); + + // 移除百度地图默认添加的三角箭头 + setTimeout(() => { + const infoWindowElements = + document.getElementsByClassName("BMap_bubble_pop"); + if (infoWindowElements.length > 0) { + const popup = infoWindowElements[0]; + // 移除箭头元素 + const arrows = + popup.getElementsByClassName("BMap_bubble_arrow"); + while (arrows[0]) { + arrows[0].parentNode.removeChild(arrows[0]); + } + // 移除百度地图添加的额外样式 + popup.style.background = "none"; + popup.style.border = "none"; + popup.style.boxShadow = "none"; + } + }, 50); + }); + + map.addOverlay(marker); + }); + } + + // 绘制交叉跨越 + if (crossingListNew.length > 0) { + crossingListNew.forEach((pointData, index) => { + const pointKey = `${pointData.baiduLon},${pointData.baiduLat}`; + // const pointKey = `116.254,39.965`; + // 如果该坐标点已经添加过标记,则跳过 + if (addedPoints[pointKey]) { + console.warn(`重复的点坐标被跳过: ${pointKey}`); + return; + } + + addedPoints[pointKey] = true; + const point = new BMapGL.Point( + pointData.baiduLon, + pointData.baiduLat + ); + bounds.push(point); + + // 检查图标是否存在,不存在则使用默认图标 + const iconUrl = iconTypeList[11]; // 默认使用第一个图标 + const myIcon = new BMapGL.Icon(iconUrl, new BMapGL.Size(40, 38), { + anchor: new BMapGL.Size(16, 20), // 修正锚点位置为中心底部 + imageSize: new BMapGL.Size(40, 38), // 与实际图片尺寸一致 + }); + + const marker = new BMapGL.Marker(point, { icon: myIcon }); + + // 添加信息窗口 + let infoContent = ""; + + // 交叉信息 + infoContent = ` +
+
+

+ ${pointData.towerInfoVo.towerName} +

+
+ 基础开挖 + ${pointData.towerInfoVo.time1 || "/"} +
+
+ 基础开挖完成 + + ${pointData.towerInfoVo.time2 || "/"} + +
+
+ 基础浇筑完成 + + ${pointData.towerInfoVo.time3 || "/"} + +
+
+ 铁塔组立 + + ${pointData.towerInfoVo.time4 || "/"} + +
+
+ 铁塔组立完成 + + ${pointData.towerInfoVo.time5 || "/"} + +
+
+ 架线施工完成 + + ${pointData.towerInfoVo.time6 || "/"} + +
+
+
+

+ 交叉跨越信息 ( ${pointData.spanTowerName} ) +

+
+ 上层线路 + ${pointData.upperLine} +
+
+ 下层线路 + ${pointData.lowerLine} +
+
+ 交叉角度 + ${pointData.intersectionAngle} ° +
+
+ 垂直距离 + ${pointData.verticalDistance} m +
+
+ 安全裕度 + ${pointData.safetyMargin} ° +
`; - } - // 创建信息窗口,禁用默认样式 - const infoWindow = new BMapGL.InfoWindow(infoContent, { - width: 0, // 宽度设为0,让内容决定宽度 - height: 0, // 高度设为0,让内容决定高度 - offset: new BMapGL.Size(0, -20), // 调整偏移量 - enableAutoPan: true, // 自动平移地图 - enableCloseOnClick: true, // 点击地图不关闭 - }); + // 创建信息窗口,禁用默认样式 + const infoWindow = new BMapGL.InfoWindow(infoContent, { + width: 0, // 宽度设为0,让内容决定宽度 + height: 0, // 高度设为0,让内容决定高度 + offset: new BMapGL.Size(0, -20), // 调整偏移量 + enableAutoPan: true, // 自动平移地图 + enableCloseOnClick: true, // 点击地图不关闭 + }); - marker.addEventListener("click", function () { - this.openInfoWindow(infoWindow); + marker.addEventListener("click", function () { + this.openInfoWindow(infoWindow); - // 移除百度地图默认添加的三角箭头 - setTimeout(() => { - const infoWindowElements = - document.getElementsByClassName("BMap_bubble_pop"); - if (infoWindowElements.length > 0) { - const popup = infoWindowElements[0]; - // 移除箭头元素 - const arrows = - popup.getElementsByClassName("BMap_bubble_arrow"); - while (arrows[0]) { - arrows[0].parentNode.removeChild(arrows[0]); + // 移除百度地图默认添加的三角箭头 + setTimeout(() => { + const infoWindowElements = + document.getElementsByClassName("BMap_bubble_pop"); + if (infoWindowElements.length > 0) { + const popup = infoWindowElements[0]; + // 移除箭头元素 + const arrows = + popup.getElementsByClassName("BMap_bubble_arrow"); + while (arrows[0]) { + arrows[0].parentNode.removeChild(arrows[0]); + } + // 移除百度地图添加的额外样式 + popup.style.background = "none"; + popup.style.border = "none"; + popup.style.boxShadow = "none"; } - // 移除百度地图添加的额外样式 - popup.style.background = "none"; - popup.style.border = "none"; - popup.style.boxShadow = "none"; - } - }, 50); - }); + }, 50); + }); - map.addOverlay(marker); - }); + map.addOverlay(marker); + }); + } // 调整视野使所有点可见 + if (bounds.length > 0) { - map.setViewport(bounds); + map.setViewport(calculateBounds(bounds), { + zoomFactor: 0.5, // 可选:缩放系数(0-1,值越小视野越大) + }); } } +function calculateBounds(points) { + console.log(points, "points999"); + var lngs = points.map((p) => p.lng); + var lats = points.map((p) => p.lat); + var minLng = Math.min(...lngs); + var maxLng = Math.max(...lngs); + var minLat = Math.min(...lats); + var maxLat = Math.max(...lats); + return new BMapGL.Bounds( + new BMapGL.Point(minLng, minLat), + new BMapGL.Point(maxLng, maxLat) + ); +} + // 添加标点折线(智能绘制虚实线) function addMapLine() { - if (config.points.length < 2) return; - // 存储所有线段 const segments = []; + // 绘制杆塔线 + if (towerList.length > 0) { + for (let i = 0; i < towerList.length - 1; i++) { + const startPoint = towerList[i]; + const endPoint = towerList[i + 1]; - // 遍历点数组,创建线段 - for (let i = 0; i < config.points.length - 1; i++) { - const startPoint = config.points[i]; - const endPoint = config.points[i + 1]; + let lineColor = ""; + let lineStyle = ""; + if ( + startPoint.towerProgress === 7 && + endPoint.towerProgress === 7 + ) { + lineColor = "#5ad8a6"; + lineStyle = "solid"; + } else if (startPoint.existSpan === 1 && endPoint.existSpan === 1) { + lineColor = "#d81e06"; + lineStyle = "dashed"; + } else { + lineColor = "#fff"; + lineStyle = "dashed"; + } - // 判断两点是否都已完成 - const isSegmentCompleted = - startPoint.isCompleted && endPoint.isCompleted; + // 创建线段点数组 + const segmentPoints = [ + new BMapGL.Point(startPoint.baiduLon, startPoint.baiduLat), + new BMapGL.Point(endPoint.baiduLon, endPoint.baiduLat), + ]; - // 创建线段点数组 - const segmentPoints = [ - new BMapGL.Point(startPoint.lng, startPoint.lat), - new BMapGL.Point(endPoint.lng, endPoint.lat), - ]; + // 设置线段样式 + const segmentOptions = { + strokeColor: lineColor, // 根据类型获取颜色 + strokeWeight: config.polyline.strokeWeight, + strokeOpacity: config.polyline.strokeOpacity, + enableEditing: config.polyline.enableEditing, + enableClicking: config.polyline.enableClicking, + strokeStyle: lineStyle, + }; - // 设置线段样式 - const segmentOptions = { - strokeColor: getSegmentColor(startPoint, endPoint), // 根据类型获取颜色 - strokeWeight: config.polyline.strokeWeight, - strokeOpacity: config.polyline.strokeOpacity, - enableEditing: config.polyline.enableEditing, - enableClicking: config.polyline.enableClicking, - strokeStyle: isSegmentCompleted ? "solid" : "dashed", - }; - - // 如果是虚线,设置虚线样式 - if (!isSegmentCompleted) { - segmentOptions.strokeDashArray = [10, 5]; - segmentOptions.strokeOpacity = 0.6; // 虚线透明度降低 + // 创建线段并添加到数组 + segments.push(new BMapGL.Polyline(segmentPoints, segmentOptions)); } + } - // 创建线段并添加到数组 - segments.push(new BMapGL.Polyline(segmentPoints, segmentOptions)); + // 绘制交叉线路 + if (crossingListNew.length > 0) { + for (let i = 0; i < crossingListNew.length - 1; i++) { + const startPoint = crossingListNew[i]; + const endPoint = crossingListNew[i + 1]; + + // 创建线段点数组 + const segmentPoints = [ + new BMapGL.Point(startPoint.baiduLon, startPoint.baiduLat), + new BMapGL.Point(endPoint.baiduLon, endPoint.baiduLat), + ]; + + // 设置线段样式 + const segmentOptions = { + strokeColor: "#fff", // 根据类型获取颜色 + strokeWeight: config.polyline.strokeWeight, + strokeOpacity: config.polyline.strokeOpacity, + enableEditing: config.polyline.enableEditing, + enableClicking: config.polyline.enableClicking, + strokeStyle: "solid", + }; + + // 创建线段并添加到数组 + segments.push(new BMapGL.Polyline(segmentPoints, segmentOptions)); + } } // 将所有线段添加到地图 @@ -398,11 +752,66 @@ function getSegmentColor(startPoint, endPoint) { return config.polyline.strokeColor; } -// 初始化地图 -initMap(); +// 获取组织树数据 +function getOrgTreeData() { + ajaxRequest( + dataUrl + "/backstage/digitalSignage/getProTree", + "POST", + {}, + true, + function () {}, + function (result) { + console.log(result, "组织机构树数据获取成功---"); + const { data } = result; + + // 判断是否有工程 有的话取第一个 + if (data && data.length > 0) { + setSpreadToNodes(data); + treeData = data; + // 获取第一个工程 + if ( + data[0].children && + data[0].children.length > 0 && + data[0].children[0].children && + data[0].children[0].children.length > 0 + ) { + nodeId = data[0].children[0].children[0].id; + + if ( + data[0].children[0].children[0].lon && + data[0].children[0].children[0].lat + ) { + intLng = data[0].children[0].children[0].lon; + intLat = data[0].children[0].children[0].lat; + } + + getScrollData(nodeId); + getLegendData(nodeId); + getLocationInfo(nodeId); + } + } + }, + function (xhr) { + error(xhr); + } + ); +} +getOrgTreeData(); +// 递归 +function setSpreadToNodes(nodes, spreadValue = true) { + if (!nodes || !Array.isArray(nodes)) return; + + nodes.forEach((node) => { + node.spread = spreadValue; + + if (node.children && node.children.length > 0) { + setSpreadToNodes(node.children, spreadValue); + } + }); +} // 获取左上角滚动数据源 -function getScrollData() { +function getScrollData(id) { const scrollData = [ { name: "跨线路", @@ -477,29 +886,102 @@ function getScrollData() { ], }, ]; + const params = { + encryptedData: encryptCBC(JSON.stringify({ id })), + }; + ajaxRequest( + dataUrl + "/backstage/digitalSignage/getThreeSpans", + "POST", + params, + true, + function () {}, + function (result) { + // console.log(result, "左上角滚动数据获取成功---"); - let scrollBox = $(".content-wrapper"); - let innerHtml = ""; - scrollData.forEach((item, index) => { - // 跨域描述内容 - let describeHtml = ""; - if (item.content && item.content.length > 0) { - item.content.forEach((d, dIndex) => { - describeHtml += `${d.name}:${d.value}`; - }); + const { data } = result; + + let scrollBox = $(".content-wrapper"); + let innerHtml = ""; + if (data && data.length > 0) { + data.forEach((item) => { + let describeHtml = ""; + if (item.spanType === "跨线路") { + describeHtml += ` + 上层线路:${item.upperLine} + 下层线路: ${item.lowerLine} + 交叉角度: ${item.intersectionAngle} ° + 垂直距离: ${item.verticalDistance} m + 安全裕度: ${item.safetyMargin} ° + `; + } else { + describeHtml += ` + 垂直净距:${item.verticalClearDistance} m + 杆塔间距: ${item.towerSpacing} m + 公路宽度: ${item.highwayWidth} m + `; + } + + // 单行数据 + innerHtml += ` +
+ ${item.spanType} + + + ${item.towerName} - ${item.nextTowerName} + + ${describeHtml} +
+ `; + }); + } + + scrollBox.html(innerHtml); + }, + function (xhr) { + error(xhr); } - - // 单行数据 - innerHtml += `
- ${item.name} - ${item.location} - ${describeHtml} -
`; - }); - scrollBox.html(innerHtml); + ); } -getScrollData(); +// 获取左下角图例数据源 +function getLegendData(id) { + const params = { + encryptedData: encryptCBC(JSON.stringify({ id })), + }; + + ajaxRequest( + dataUrl + "/backstage/digitalSignage/getTowerProgressNum", + "POST", + params, + true, + function () {}, + function (result) { + const { data } = result; + + if (data) { + Object.values(data).forEach((value, index) => { + legendData[index].value = value; + }); + } + + const legendBox = $(".legend-box"); + let innerHtml = ""; + legendData.forEach((item, index) => { + innerHtml += ` +
+ + ${item.name} + ${item.value} +
+ `; + }); + legendBox.html(innerHtml); + }, + function (xhr) { + error(xhr); + } + ); +} document.addEventListener("DOMContentLoaded", function () { const scrollContent = document.getElementById("scrollContent"); @@ -567,57 +1049,49 @@ document.addEventListener("DOMContentLoaded", function () { tree.render({ elem: "#orgTree", // 绑定元素 id: "orgTree", // 自定义索引 - data: getTreeData(), // 获取数据 + data: treeData, // 获取数据 showCheckbox: false, // 是否显示复选框 isJump: false, // 是否允许点击节点时弹出新窗口 accordion: true, // 是否开启手风琴模式 edit: false, // 是否开启节点的操作图标 onlyIconControl: true, // 是否仅允许节点左侧图标控制展开收缩 click: function (obj) { - console.log(obj.data); // 点击节点时的回调 - // 这里可以添加点击节点后的处理逻辑 + console.log(obj.data); + // 判断是否是叶子节点(没有子节点或子节点数组为空) + if ( + !obj.data.children || + obj.data.children.length === 0 + ) { + setActiveNode(obj.elem); + nodeId = obj.data.id; + getScrollData(nodeId); + getLegendData(nodeId); + getLocationInfo(nodeId); + } else { + } + }, + done: function () { + console.log("树准备完毕"); + expandToNodeId(nodeId); }, }); } - // 模拟获取树形数据(实际项目中替换为AJAX请求) - function getTreeData() { - return [ - { - title: "总公司", - id: 1, - children: [ - { - title: "技术部", - id: 11, - children: [ - { title: "前端组", id: 111 }, - { title: "后端组", id: 112 }, - { title: "测试组", id: 113 }, - ], - }, - { - title: "市场部", - id: 12, - children: [ - { title: "销售组", id: 121 }, - { title: "推广组", id: 122 }, - ], - }, - { - title: "人事部", - id: 13, - children: [ - { title: "招聘组", id: 131 }, - { title: "培训组", id: 132 }, - ], - }, - ], - }, - ]; + initOrgTree(); + setActiveNodeNew(nodeId); + + function setActiveNode(elem) { + $("#orgTree") + .find(".layui-tree-click") + .removeClass("layui-tree-click"); + $(elem).addClass("layui-tree-click"); } - initOrgTree(); + function setActiveNodeNew(nodeId) { + $("#orgTree") + .find('[data-id="' + nodeId + '"]') + .addClass("layui-tree-click"); + } }); }); @@ -637,72 +1111,3 @@ document.addEventListener("DOMContentLoaded", function () { } }); }); - -// 获取左下角图例数据源 -function getLegendData() { - const legendData = [ - { - name: "基础开挖", - value: "6", - icon: "../../img/digitalSignage/yellow.png", - }, - { - name: "开挖完成", - value: "6", - icon: "../../img/digitalSignage/green.png", - }, - { - name: "浇筑完成", - value: "6", - icon: "../../img/digitalSignage/blue.png", - }, - { - name: "铁塔组立", - value: "6", - icon: "../../img/digitalSignage/orange.png", - }, - { - name: "组塔完成", - value: "6", - icon: "../../img/digitalSignage/zt_red.png", - }, - { - name: "架线完成", - value: "6", - icon: "../../img/digitalSignage/zt_purple.png", - }, - { - name: "附件安装", - value: "6", - icon: "../../img/digitalSignage/zt_green.png", - }, - { - name: "未 开 始", - value: "6", - icon: "../../img/digitalSignage/white.png", - }, - { - name: "索道运输", - value: "6", - icon: "../../img/digitalSignage/sd.png", - }, - { - name: "项 目 部", - value: "6", - icon: "../../img/digitalSignage/yellow.png", - }, - ]; - - const legendBox = $(".legend-box"); - let innerHtml = ""; - legendData.forEach((item, index) => { - innerHtml += `
- - ${item.name} - ${item.value} -
`; - }); - legendBox.html(innerHtml); -} - -getLegendData(); diff --git a/src/main/resources/static/pages/synthesisQuery/digitalSignage.html b/src/main/resources/static/pages/synthesisQuery/digitalSignage.html index afedb71..c01fdcf 100644 --- a/src/main/resources/static/pages/synthesisQuery/digitalSignage.html +++ b/src/main/resources/static/pages/synthesisQuery/digitalSignage.html @@ -14,7 +14,7 @@ - + 电子看板