diff --git a/src/main/resources/static/img/digitalSignage/line_r.png b/src/main/resources/static/img/digitalSignage/line_r.png new file mode 100644 index 0000000..f9e04eb Binary files /dev/null and b/src/main/resources/static/img/digitalSignage/line_r.png differ diff --git a/src/main/resources/static/img/digitalSignage/line_y.png b/src/main/resources/static/img/digitalSignage/line_y.png new file mode 100644 index 0000000..6c7b897 Binary files /dev/null and b/src/main/resources/static/img/digitalSignage/line_y.png differ diff --git a/src/main/resources/static/js/basic/lineManagement/child/setSpanTowerLonAndLat.js b/src/main/resources/static/js/basic/lineManagement/child/setSpanTowerLonAndLat.js new file mode 100644 index 0000000..5a80b36 --- /dev/null +++ b/src/main/resources/static/js/basic/lineManagement/child/setSpanTowerLonAndLat.js @@ -0,0 +1,394 @@ +let form, layer; +let objParams = {}; +let map = null; // 地图实例 +let intLng = 116.254; // 初始经度 +let intLat = 39.965; // 初始纬度 +let isMap = true; // 是否是地图模式 +let markerCount = 0; // 标记点计数器 +let markers = []; // 标记点数组 +let polylineView = null; + +function setParams(obj) { + objParams = JSON.parse(obj); + layui.use(["form", "layer"], function () { + form = layui.form; + layer = layui.layer; + table = layui.table; + initData(); + }); +} + +// 地图配置项 +const config = { + polyline: { + strokeWeight: 1, // 线条宽度 + strokeOpacity: 0.9, // 透明度 + strokeStyle: "dashed", // solid(实线)或dashed(虚线) + enableEditing: false, // 是否可编辑 + enableClicking: true, // 是否可点击 + }, +}; + +// 加载工程杆塔数据 +function initData() { + let url = dataUrl + "/backstage/digitalSignage/getTowersPosition"; + let obj = { + id: objParams.id, + }; + let params = { + encryptedData: encryptCBC(JSON.stringify(obj)), + }; + ajaxRequest( + url, + "POST", + params, + true, + function () {}, + function (result) { + if (result.status === 200) { + setData(result.data); + } else { + layer.msg(result.msg, { icon: 2 }); + } + }, + function (xhr) { + error(xhr); + } + ); + + function setData(list) { + if (list && list.length > 0) { + if (objParams.points) { + let points = JSON.parse(objParams.points); + intLng = points[0].lng; + intLat = points[0].lat; + } else { + intLng = list[0].proLon ? list[0].proLon : list[0].lon; + intLat = list[0].proLat ? list[0].proLat : list[0].lat; + } + } + initMap(list); + } +} + +// 百度地图初始化 +function initMap(list) { + if (map) { + map = null; + } + map = new BMapGL.Map("map-box"); + // 以第一个点为中心初始化地图 + map.centerAndZoom(new BMapGL.Point(intLng, intLat), 16); + + map.setTilt(65); //设置地图的倾斜角度 + map.enableScrollWheelZoom(true); // 启用滚轮缩放 + + // 设置显示3D建筑物 + map.setDisplayOptions({ + building: true, // 显示3D建筑物 + indoor: false, + poi: true, + }); + var navigationControl = new BMapGL.NavigationControl3D(); + map.addControl(navigationControl); + + // 每次初始化的时候清除所有标点以及线 + map.clearOverlays(); + 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" }, + }, + + // 保留背景、水域、绿地等(避免地图变空白) + { + 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" }, + }, + ]; + + if (isMap) { + // map.setMapType(BMAP_EARTH_MAP); // 地球模式 + map.setMapType(BMAP_SATELLITE_MAP); // 地球模式 + /*map.setDisplayOptions({ + poiText: false, // 隐藏POI文字 + poiIcon: false, // 隐藏POI图标 + building: false, // 隐藏建筑物 + });*/ + } else { + map.setMapType(BMAP_NORMAL_MAP); // 普通模式 + + // 增加不是纯白的背景色 + map.setMapStyleV2({ + styleJson: [ + { + featureType: "background", + elementType: "all", + stylers: { color: "#f5f5f5" }, + }, + ], + }); + } + + if (isMap) { + map.setMapStyleV2({ + styleJson, + }); + } + initTowerLine(list); + if (objParams.points) { + let points = JSON.parse(objParams.points); + if (points.length > 0) { + $.each(points, function (i, item) { + addMarker(item.lng || item.lon, item.lat || item.lat); + }); + viewPointLine(); + map.addEventListener("click", function (e) { + addMarker(e.latlng.lng, e.latlng.lat); + }); + } + } else { + // 点击地图添加标记 + map.addEventListener("click", function (e) { + addMarker(e.latlng.lng, e.latlng.lat); + }); + } +} + +// 添加点坐标 +function addMarker(lng, lat) { + console.log("markers标点集合", markers); + var point = new BMapGL.Point(lng, lat); + // 创建点标记 + var marker = new BMapGL.Marker(point); + // 添加到地图 + map.addOverlay(marker); + + // 创建标签 + // 2025-06-10 修改第一个标点名称为索道口 + // let markerName = ""; + // if (markers.length === 0) { + // markerName = "公路口"; + // } else { + // markerName = "点" + (markerCount + 1); + // } + var label = new BMapGL.Label("杆塔" + (markerCount + 1), { + position: point, + offset: new BMapGL.Size(10, -30), + }); + label.setStyle({ + color: "#333", + fontSize: "12px", + fontWeight: "bold", + backgroundColor: "rgba(255,255,255,0.9)", + border: "1px solid #ddd", + borderRadius: "4px", + padding: "2px 6px", + }); + map.addOverlay(label); + // 存储标记和标签 + markers.push({ + marker: marker, + label: label, + point: point, + }); + console.log(markers); + // 更新计数器 + markerCount++; +} + +// 杆塔连线 +function initTowerLine(points) { + // 存储所有点的坐标用于连线 + var linePoints = []; + // 添加点覆盖物和标签 + points.forEach(function (item, index) { + var point = new BMapGL.Point(item.lon, item.lat); + linePoints.push(point); // 添加到连线数组 + // 创建点标记 + var icon = new BMapGL.Icon( + "../../../../img/synthesisQuery/tower.png", + new BMapGL.Size(30, 66), + { + // 图标定位点 + anchor: new BMapGL.Size(15, 66), + } + ); + var marker = new BMapGL.Marker(point, { icon: icon }); + map.addOverlay(marker); + // 创建标签 + var label = new BMapGL.Label(item.towerName, { + position: point, + offset: new BMapGL.Size(20, -60), + }); + label.setStyle({ + color: "#333", + fontSize: "12px", + fontWeight: "bold", + backgroundColor: "rgba(255,255,255,0.9)", + border: "1px solid #ddd", + borderRadius: "4px", + padding: "2px 6px", + }); + map.addOverlay(label); + }); + // 创建连线 + var polyline = new BMapGL.Polyline(linePoints, { + strokeColor: "#FF0305", + strokeWeight: 6, + strokeOpacity: 0.8, + }); + map.addOverlay(polyline); + // 可选:自动调整视图以包含所有点 + map.setViewport(linePoints); + // 2. 获取视口边界和中心点 + var bounds = map.getBounds(); + var center = bounds.getCenter(); + // 3. 计算视口距离 + var viewportDistance = Math.max( + BMapGL.Map.prototype.getDistance( + center, + new BMapGL.Point(bounds.getSouthWest().lng, center.lat) + ), + BMapGL.Map.prototype.getDistance( + center, + new BMapGL.Point(center.lng, bounds.getSouthWest().lat) + ) + ); + // 4. 设置3D参数 + var zoom = map.getZoom(); + var newTilt = 65; + var newHeading = 30; + + // 5. 应用3D视角 + map.setTilt(newTilt); + map.setHeading(newHeading); + + // 6. 稍微缩小以确保所有点在3D视角下可见 + setTimeout(function () { + map.setZoom(zoom - 1); + }, 100); +} + +// 清除所有标点 +document.getElementById("clearMarkers").addEventListener("click", function () { + markers.forEach(function (item) { + map.removeOverlay(item.marker); + map.removeOverlay(item.label); + }); + markers = []; + markerCount = 0; + if (polylineView) { + map.removeOverlay(polylineView); // 移除旧的折线 + polylineView = null; + } + + let frameId = parent.document + .getElementById("addDataRopeway") + .getElementsByTagName("iframe")[0]; + frameId.contentWindow.clearPointData(); +}); + +// 预览标点连线 +document.getElementById("viewPoint").addEventListener("click", function () { + viewPointLine(); +}); + +function viewPointLine() { + if (markers && markers.length === 0) { + return layer.msg("请先创建点位", { icon: 7 }); + } + if (polylineView) { + map.removeOverlay(polylineView); // 移除旧的折线 + polylineView = null; + } + let points = []; + $.each(markers, function (index, item) { + points.push(item.point); + }); + // 2. 创建折线连接这些点位 + var polyline = new BMapGL.Polyline(points, { + strokeColor: "#0C14CA", // 线颜色 + strokeWeight: 4, // 线宽 + strokeOpacity: 0.8, // 线透明度 + }); + polylineView = polyline; + map.addOverlay(polyline); + // 点击地图添加标记 + // 2025-06-10 移除点击地图添加标记 解决连线之后 再次标点时标点展示异常问题 + // map.addEventListener("click", function (e) { + // addMarker(e.latlng.lng, e.latlng.lat); + // }); +} + +// 保存点位数据 +function saveData() { + if (markers && markers.length === 0) { + return layer.msg("请先创建点位", { icon: 7 }); + } + + if (markers && markers.length < 2) { + return layer.msg("至少创建两个点位", { icon: 7 }); + } + let points = []; + $.each(markers, function (index, item) { + points.push({ + lng: item.point.lng, + lat: item.point.lat, + sort: index + 1, + }); + }); + let frameId = parent.document + .getElementById("addDataThreeSpan") + .getElementsByTagName("iframe")[0]; + frameId.contentWindow.savePointData(JSON.stringify(points)); + parent.layer.msg("保存成功", { icon: 1 }); + let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 + parent.layer.close(index); //再执行关闭 +} + +// 关闭页面 +function closePage() { + let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 + parent.layer.close(index); //再执行关闭 +} diff --git a/src/main/resources/static/js/basic/lineManagement/child/threeSpanFormTemp.js b/src/main/resources/static/js/basic/lineManagement/child/threeSpanFormTemp.js index 9ba48b0..ffd5cb4 100644 --- a/src/main/resources/static/js/basic/lineManagement/child/threeSpanFormTemp.js +++ b/src/main/resources/static/js/basic/lineManagement/child/threeSpanFormTemp.js @@ -1,14 +1,17 @@ -let form, layer, util,laydate, idParam,proId; -let arr = ['background', 'web', 'mobile', 'wx']; +let form, layer, util, laydate, idParam, proId; +let pointsStr = null; +let arr = ["background", "web", "mobile", "wx"]; let background, web, mobile, wx; -let data = [], appResList = [], towerList = []; +let data = [], + appResList = [], + towerList = []; let startDate, endDate; function setParams(params) { - console.log(params) + console.log(params); idParam = JSON.parse(params).id; proId = JSON.parse(params).proId; - layui.use(['form', 'layer', 'util', 'laydate'], function () { + layui.use(["form", "layer", "util", "laydate"], function () { form = layui.form; layer = layui.layer; util = layui.util; @@ -17,171 +20,193 @@ function setParams(params) { // 初始化表单 form.render(); loadTowerOptions(); - crossLineFields() + crossLineFields(); if (idParam) { getThreeSpanById(); } - $('.span-type-option').on('click', function() { - $('.span-type-option').removeClass('active'); - $(this).addClass('active'); - let type = $(this).data('type'); + $(".span-type-option").on("click", function () { + $(".span-type-option").removeClass("active"); + $(this).addClass("active"); + let type = $(this).data("type"); - switch(type) { - case 'cross-line': - $('#crossLineFields').show(); - $('#crossPublicFields').hide(); - $('#crossRailwayFields').hide(); - crossLineFields() + switch (type) { + case "cross-line": + $("#crossLineFields").show(); + $("#crossPublicFields").hide(); + $("#crossRailwayFields").hide(); + crossLineFields(); break; - case 'cross-public': - $('#crossLineFields').hide(); - $('#crossPublicFields').show(); - $('#crossRailwayFields').hide(); - crossPublicFields() + case "cross-public": + $("#crossLineFields").hide(); + $("#crossPublicFields").show(); + $("#crossRailwayFields").hide(); + crossPublicFields(); break; - case 'cross-railway': - $('#crossLineFields').hide(); - $('#crossPublicFields').hide(); - $('#crossRailwayFields').show(); - crossRailwayFields() + case "cross-railway": + $("#crossLineFields").hide(); + $("#crossPublicFields").hide(); + $("#crossRailwayFields").show(); + crossRailwayFields(); break; } form.render(); }); // 监听杆塔选择 - form.on('select(towerSelect)', function(data) { - if(data.value) { + form.on("select(towerSelect)", function (data) { + if (data.value) { // 获取当前选中的索引 let currentIndex = -1; - for(let i = 0; i < towerList.length; i++) { - if(towerList[i].id == data.value) { + for (let i = 0; i < towerList.length; i++) { + if (towerList[i].id == data.value) { currentIndex = i; break; } } - + // 先清空第二个下拉框 - let $nextTowerSelect = $('#nextTowerName'); + let $nextTowerSelect = $("#nextTowerName"); $nextTowerSelect.empty(); - + // 如果找到当前索引且不是最后一个 - if(currentIndex !== -1 && currentIndex < towerList.length - 1) { + if ( + currentIndex !== -1 && + currentIndex < towerList.length - 1 + ) { // 获取下一个杆塔的信息 let nextTower = towerList[currentIndex + 1]; - + // 设置隐藏的ID - $('#nextTowerId').val(nextTower.id); - + $("#nextTowerId").val(nextTower.id); + // 创建新的option元素并添加 - let newOption = new Option(nextTower.towerName, nextTower.id); + let newOption = new Option( + nextTower.towerName, + nextTower.id + ); $nextTowerSelect.append(newOption); - } else { // 清空ID - $('#nextTowerId').val(''); + $("#nextTowerId").val(""); // 创建提示选项 - let newOption = new Option('选择的已经是最后一个', ''); + let newOption = new Option("选择的已经是最后一个", ""); $nextTowerSelect.append(newOption); } - + // 重新渲染select - layui.form.render('select'); - + layui.form.render("select"); } else { // 当没有选择值时,重置为默认状态 - $('#nextTowerId').val(''); - let $nextTowerSelect = $('#nextTowerName'); + $("#nextTowerId").val(""); + let $nextTowerSelect = $("#nextTowerName"); $nextTowerSelect.empty(); - let newOption = new Option('根据杆塔行序号自动填写下方杆塔序号', ''); + let newOption = new Option( + "根据杆塔行序号自动填写下方杆塔序号", + "" + ); $nextTowerSelect.append(newOption); - layui.form.render('select'); + layui.form.render("select"); } }); // 表单验证规则 form.verify({ - number: function(value, item) { - if(value && !/^-?\d+\.?\d*$/.test(value)) { - return '请输入数字'; + number: function (value, item) { + if (value && !/^-?\d+\.?\d*$/.test(value)) { + return "请输入数字"; } }, - // 经度验证 - longitude: function(value, item) { - // 如果为空则直接通过验证 - if(!value || value.trim() === '') { - return; - } - // 如果经度有值,则纬度也必须填写 - let latInput = $(item).closest('.layui-form-item').find('input[name^="crossTowerLatitude"]'); - let latValue = latInput.val(); - if(!latValue || latValue.trim() === '') { - return '经度和纬度需要同时填写'; - } - // 验证经度格式 - // if(!/^[\-\+]?((180(\.0{1,6})?)|((\d{1,2}|1[0-7]\d)(\.\d{1,6})?))$/.test(value)) { - // return '请输入正确的经度(-180.0~+180.0)'; - // } + // // 经度验证 + // longitude: function (value, item) { + // // 如果为空则直接通过验证 + // if (!value || value.trim() === "") { + // return; + // } + // // 如果经度有值,则纬度也必须填写 + // let latInput = $(item) + // .closest(".layui-form-item") + // .find('input[name^="crossTowerLatitude"]'); + // let latValue = latInput.val(); + // if (!latValue || latValue.trim() === "") { + // return "经度和纬度需要同时填写"; + // } + // // 验证经度格式 + // // if(!/^[\-\+]?((180(\.0{1,6})?)|((\d{1,2}|1[0-7]\d)(\.\d{1,6})?))$/.test(value)) { + // // return '请输入正确的经度(-180.0~+180.0)'; + // // } - // 验证经度格式并检查数值是否在中国范围内(73.55 至 135.08) - const longitudeValue = parseFloat(value); - if(isNaN(longitudeValue) || longitudeValue < 73.55 || longitudeValue > 135.08) { - return '请输入位于正确的经度(大约73.55°E至135.08°E)'; - } - // 可选:检查小数位数,假设要求最多6位小数 - if(!/^[\-\+]?((135(\.0{1,6})?)|((\d{1,2}|1[0-2]\d|13[0-4])(\.\d{1,6})?))$/.test(value)) { - return '经度应精确到最多6位小数且在正确范围内'; - } - }, - - // 纬度验证 - latitude: function(value, item) { - // 如果为空则直接通过验证 - if(!value || value.trim() === '') { - return; - } - // 如果纬度有值,则经度也必须填写 - let lonInput = $(item).closest('.layui-form-item').find('input[name^="crossTowerLongitude"]'); - let lonValue = lonInput.val(); - if(!lonValue || lonValue.trim() === '') { - return '经度和纬度需要同时填写'; - } - // 验证纬度格式 - // if(!/^[\-\+]?((90(\.0{1,6})?)|(([0-8]?\d)(\.\d{1,6})?))$/.test(value)) { - // return '请输入正确的纬度(-90.0~+90.0)'; - // } - // 验证纬度格式并检查数值是否在中国范围内(4 至 53) - const latitudeValue = parseFloat(value); - if(isNaN(latitudeValue) || latitudeValue < 4 || latitudeValue > 53) { - return '请输入位于正确的纬度(大约4°N至53°N)'; - } - // 可选:检查小数位数,假设要求最多6位小数 - // if(!/^[\-\+]?((53(\.0{1,6})?)|(([0-4]?\d)(\.\d{1,6})?))$/.test(value)) { - // return '纬度应精确到最多6位小数且在正确范围内'; - // } + // // 验证经度格式并检查数值是否在中国范围内(73.55 至 135.08) + // const longitudeValue = parseFloat(value); + // if ( + // isNaN(longitudeValue) || + // longitudeValue < 73.55 || + // longitudeValue > 135.08 + // ) { + // return "请输入位于正确的经度(大约73.55°E至135.08°E)"; + // } + // // 可选:检查小数位数,假设要求最多6位小数 + // if ( + // !/^[\-\+]?((135(\.0{1,6})?)|((\d{1,2}|1[0-2]\d|13[0-4])(\.\d{1,6})?))$/.test( + // value + // ) + // ) { + // return "经度应精确到最多6位小数且在正确范围内"; + // } + // }, - // 检查最多6位小数(允许整数或最多6位小数) - if (!/^-?\d+(\.\d{1,6})?$/.test(value)) { - return '纬度应精确到最多6位小数'; - } - } + // // 纬度验证 + // latitude: function (value, item) { + // // 如果为空则直接通过验证 + // if (!value || value.trim() === "") { + // return; + // } + // // 如果纬度有值,则经度也必须填写 + // let lonInput = $(item) + // .closest(".layui-form-item") + // .find('input[name^="crossTowerLongitude"]'); + // let lonValue = lonInput.val(); + // if (!lonValue || lonValue.trim() === "") { + // return "经度和纬度需要同时填写"; + // } + // // 验证纬度格式 + // // if(!/^[\-\+]?((90(\.0{1,6})?)|(([0-8]?\d)(\.\d{1,6})?))$/.test(value)) { + // // return '请输入正确的纬度(-90.0~+90.0)'; + // // } + // // 验证纬度格式并检查数值是否在中国范围内(4 至 53) + // const latitudeValue = parseFloat(value); + // if ( + // isNaN(latitudeValue) || + // latitudeValue < 4 || + // latitudeValue > 53 + // ) { + // return "请输入位于正确的纬度(大约4°N至53°N)"; + // } + // // 可选:检查小数位数,假设要求最多6位小数 + // // if(!/^[\-\+]?((53(\.0{1,6})?)|(([0-4]?\d)(\.\d{1,6})?))$/.test(value)) { + // // return '纬度应精确到最多6位小数且在正确范围内'; + // // } + + // // 检查最多6位小数(允许整数或最多6位小数) + // if (!/^-?\d+(\.\d{1,6})?$/.test(value)) { + // return "纬度应精确到最多6位小数"; + // } + // }, }); // 表单提交验证 - form.on('submit(formData)', function(data) { + form.on("submit(formData)", function (data) { let formData = data.field; - let nextTowerId= $("#nextTowerId").val(); - if(nextTowerId){ - - }else{ - layer.msg('没有下一杆塔,请确认', {icon: 2}); + let nextTowerId = $("#nextTowerId").val(); + if (nextTowerId) { + } else { + layer.msg("没有下一杆塔,请确认", { icon: 2 }); return false; } - let currentSystem = $('.span-type-option.active').data('type'); - if(currentSystem === 'cross-line'){ + let currentSystem = $(".span-type-option.active").data("type"); + if (currentSystem === "cross-line") { delete formData.verticalClearDistance2; delete formData.towerSpacing2; delete formData.highwayWidth; @@ -191,127 +216,142 @@ function setParams(params) { delete formData.intersectionAngle3; formData.intersectionAngle = formData.intersectionAngle1; - formData.spanType ="1"; - }else if (currentSystem === 'cross-public'){ + formData.spanType = "1"; + } else if (currentSystem === "cross-public") { delete formData.upperLine; delete formData.lowerLine; delete formData.intersectionAngle1; delete formData.verticalDistance; delete formData.safetyMargin; - delete formData.crossTowerLongitude1; - delete formData.crossTowerLatitude1; - delete formData.crossTowerLongitude2; - delete formData.crossTowerLatitude2; - delete formData.crossTowerLongitude3; - delete formData.crossTowerLatitude3; - delete formData.crossTowerLongitude4; - delete formData.crossTowerLatitude4; + // delete formData.crossTowerLongitude1; + // delete formData.crossTowerLatitude1; + // delete formData.crossTowerLongitude2; + // delete formData.crossTowerLatitude2; + // delete formData.crossTowerLongitude3; + // delete formData.crossTowerLatitude3; + // delete formData.crossTowerLongitude4; + // delete formData.crossTowerLatitude4; delete formData.verticalClearDistance3; delete formData.towerSpacing3; delete formData.intersectionAngle3; formData.towerSpacing = formData.towerSpacing2; - formData.verticalClearDistance = formData.verticalClearDistance2; + formData.verticalClearDistance = + formData.verticalClearDistance2; - formData.spanType ="2"; - }else if(currentSystem === 'cross-railway'){ + formData.spanType = "2"; + } else if (currentSystem === "cross-railway") { delete formData.upperLine; delete formData.lowerLine; delete formData.intersectionAngle1; delete formData.verticalDistance; delete formData.safetyMargin; - delete formData.crossTowerLongitude1; - delete formData.crossTowerLatitude1; - delete formData.crossTowerLongitude2; - delete formData.crossTowerLatitude2; - delete formData.crossTowerLongitude3; - delete formData.crossTowerLatitude3; - delete formData.crossTowerLongitude4; - delete formData.crossTowerLatitude4; + // delete formData.crossTowerLongitude1; + // delete formData.crossTowerLatitude1; + // delete formData.crossTowerLongitude2; + // delete formData.crossTowerLatitude2; + // delete formData.crossTowerLongitude3; + // delete formData.crossTowerLatitude3; + // delete formData.crossTowerLongitude4; + // delete formData.crossTowerLatitude4; delete formData.verticalClearDistance2; delete formData.towerSpacing2; delete formData.highwayWidth; - formData.verticalClearDistance = formData.verticalClearDistance3; - formData.towerSpacing = formData.towerSpacing3; - formData.intersectionAngle = formData.intersectionAngle3; + formData.verticalClearDistance = + formData.verticalClearDistance3; + formData.towerSpacing = formData.towerSpacing3; + formData.intersectionAngle = formData.intersectionAngle3; - formData.spanType ="3"; + formData.spanType = "3"; } - console.log(currentSystem) - formData.proId=proId; + console.log(currentSystem); + formData.proId = proId; saveData(formData); }); - }); } // 加载杆塔选项 function loadTowerOptions() { let url = dataUrl + "/tbTower/getTbTowerAll"; - - let params = {"proId":proId}; + + let params = { proId: proId }; params = { - encryptedData: encryptCBC(JSON.stringify(params)) - } - ajaxRequest(url, "POST", params, true, null, function(result) { - if(result.code === 200) { + encryptedData: encryptCBC(JSON.stringify(params)), + }; + ajaxRequest(url, "POST", params, true, null, function (result) { + if (result.code === 200) { let options = ''; // 保存杆塔列表数据 towerList = result.data; - towerList.forEach(item => { + towerList.forEach((item) => { options += ``; }); // 为两个select都添加选项 $('select[name="towerId"]').html(options); - $('select[name="nextTowerName"]').html(''); - form.render('select'); + $('select[name="nextTowerName"]').html( + '' + ); + form.render("select"); } }); } // 根据id获取三跨信息 function getThreeSpanById() { - let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, time: 0}); + let loadingMsg = layer.msg("数据加载中,请稍候...", { icon: 16, time: 0 }); let url = dataUrl + "/tbThreeSpan/getTbThreeSpanById"; let params = { - encryptedData: encryptCBC(JSON.stringify({id: idParam})) + encryptedData: encryptCBC(JSON.stringify({ id: idParam })), }; - - ajaxRequest(url, "POST", params, true, null, function(result) { - layer.close(loadingMsg); - if (result.code === 200) { - setFormData(result.data); - } else { - layer.alert(result.msg, {icon: 2}); + + ajaxRequest( + url, + "POST", + params, + true, + null, + function (result) { + layer.close(loadingMsg); + if (result.code === 200) { + setFormData(result.data); + } else { + layer.alert(result.msg, { icon: 2 }); + } + }, + function (xhr) { + layer.close(loadingMsg); + error(xhr); } - }, function(xhr) { - layer.close(loadingMsg); - error(xhr); - }); + ); } // 设置表单数据 function setFormData(data) { - if(data) { + if (data) { // 根据spanType设置不同字段的值 - switch(data.spanType) { - case "1": // 跨线路 - $('.span-type-option[data-type="cross-line"]').trigger('click'); + switch (data.spanType) { + case "1": // 跨线路 + $('.span-type-option[data-type="cross-line"]').trigger("click"); // 处理跨铁路特殊字段 data.intersectionAngle1 = data.intersectionAngle; break; - case "2": // 跨公路 - $('.span-type-option[data-type="cross-public"]').trigger('click'); + case "2": // 跨公路 + $('.span-type-option[data-type="cross-public"]').trigger( + "click" + ); data.verticalClearDistance2 = data.verticalClearDistance; data.towerSpacing2 = data.towerSpacing; break; - case "3": // 跨铁路 - $('.span-type-option[data-type="cross-railway"]').trigger('click'); + case "3": // 跨铁路 + $('.span-type-option[data-type="cross-railway"]').trigger( + "click" + ); // 处理跨铁路特殊字段 data.verticalClearDistance3 = data.verticalClearDistance; data.towerSpacing3 = data.towerSpacing; @@ -320,202 +360,363 @@ function setFormData(data) { } // 处理经纬度数据 - if(data.tbSpanTowerList && data.tbSpanTowerList.length > 0) { - data.tbSpanTowerList.forEach((tower) => { - // 使用sort作为索引 - let num = tower.sort; // 直接使用sort值 - data[`crossTowerLongitude${num}`] = tower.lon; - data[`crossTowerLatitude${num}`] = tower.lat; - data[`id${num}`] = tower.id; // 设置每个点位的id + if (data.tbSpanTowerList && data.tbSpanTowerList.length > 0) { + pointsStr = JSON.stringify(data.tbSpanTowerList); + // data.tbSpanTowerList.forEach((tower) => { + // // 使用sort作为索引 + // let num = tower.sort; // 直接使用sort值 + // data[`crossTowerLongitude${num}`] = tower.lon; + // data[`crossTowerLatitude${num}`] = tower.lat; + // data[`id${num}`] = tower.id; // 设置每个点位的id + // }); + + let spanTowerInfo = ""; + data.tbSpanTowerList.forEach((item, index) => { + spanTowerInfo += ` +
+ + +
+ +
+
+ +
+
+ ${index + 1} +
+
`; + + // $('input[name="crossTowerLongitude' + (index + 1) + '"]').val( + // item.lng.toString().slice(0, 10) + // ); + // $('input[name="crossTowerLatitude' + (index + 1) + '"]').val( + // item.lat.toString().slice(0, 10) + // ); }); + $(".span-tower-info").html(spanTowerInfo); } // 使用layui表单赋值 form.val("threeSpanForm", data); // 处理下一个杆塔的赋值 - if(data.nextTowerId) { - $('#nextTowerId').val(data.nextTowerId); + if (data.nextTowerId) { + $("#nextTowerId").val(data.nextTowerId); // 清空并设置下一个杆塔的选择框 - let $nextTowerSelect = $('#nextTowerName'); + let $nextTowerSelect = $("#nextTowerName"); $nextTowerSelect.empty(); // 从towerList中找到对应的杆塔信息 - let nextTower = towerList.find(tower => tower.id == data.nextTowerId); - if(nextTower) { + let nextTower = towerList.find( + (tower) => tower.id == data.nextTowerId + ); + if (nextTower) { let newOption = new Option(nextTower.towerName, nextTower.id); $nextTowerSelect.append(newOption); } else { - let newOption = new Option('根据杆塔行序号自动填写下方杆塔序号', ''); + let newOption = new Option( + "根据杆塔行序号自动填写下方杆塔序号", + "" + ); $nextTowerSelect.append(newOption); } - + // 重新渲染select - form.render('select'); + form.render("select"); } } } function saveData2() { - $('#formSubmit').trigger('click') + $("#formSubmit").trigger("click"); } // 保存数据 function saveData(data) { // 组装经纬度数据 let tbSpanTowerList = []; - for(let i = 1; i <= 4; i++) { - let lon = data[`crossTowerLongitude${i}`]; - let lat = data[`crossTowerLatitude${i}`]; - let id = data[`id${i}`]; // 获取点位id - - // 只有当经纬度都有值时才添加到列表 - if(lon && lat) { - tbSpanTowerList.push({ - id: id || null, // 如果有id就使用,没有就null - lon: lon, - lat: lat, - sort: i, // 使用当前循环的索引作为sort值 - threeSpanId: data.id // 如果需要,添加三跨id - }); - } - - // 删除原始的字段 - delete data[`crossTowerLongitude${i}`]; - delete data[`crossTowerLatitude${i}`]; - delete data[`id${i}`]; + + if (!pointsStr) { + return layer.msg("请配置跨越杆塔经纬度", { icon: 7 }); } - - // 将经纬度列表添加到提交数据中 - data.tbSpanTowerList = tbSpanTowerList; - - let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0}); + + tbSpanTowerList = JSON.parse(pointsStr).map((item) => { + return { + id: item.id || null, + lon: item.lng.toString().slice(0, 10), + lat: item.lat.toString().slice(0, 10), + sort: item.sort, + }; + }); + // for (let i = 1; i <= 4; i++) { + // let lon = data[`crossTowerLongitude${i}`]; + // let lat = data[`crossTowerLatitude${i}`]; + // let id = data[`id${i}`]; // 获取点位id + + // // 只有当经纬度都有值时才添加到列表 + // if (lon && lat) { + // tbSpanTowerList.push({ + // id: id || null, // 如果有id就使用,没有就null + // lon: lon, + // lat: lat, + // sort: i, // 使用当前循环的索引作为sort值 + // threeSpanId: data.id, // 如果需要,添加三跨id + // }); + // } + + // // 删除原始的字段 + // delete data[`crossTowerLongitude${i}`]; + // delete data[`crossTowerLatitude${i}`]; + // delete data[`id${i}`]; + // } + + // // 将经纬度列表添加到提交数据中 + + let loadingMsg = layer.msg("数据上传中,请稍候...", { + icon: 16, + scrollbar: false, + time: 0, + }); let url = dataUrl + "/tbThreeSpan/addTbThreeSpan"; let params = data; if (params.id) { url = dataUrl + "/tbThreeSpan/updateTbThreeSpan"; } - + + params.tbSpanTowerList = tbSpanTowerList; + console.log("三跨管理的新增修改", params); params = { - encryptedData: encryptCBC(JSON.stringify(params)) - } + encryptedData: encryptCBC(JSON.stringify(params)), + }; // 禁用所有输入框和按钮 function disableForm() { - $('input, select').attr('disabled', true); - $('.span-type-option').css('pointer-events', 'none'); - $('.save, .cancel').addClass("layui-btn-disabled").attr("disabled", true); + $("input, select").attr("disabled", true); + $(".span-type-option").css("pointer-events", "none"); + $(".save, .cancel") + .addClass("layui-btn-disabled") + .attr("disabled", true); } // 启用所有输入框和按钮 function enableForm() { - $('input, select').attr('disabled', false); - $('.span-type-option').css('pointer-events', 'auto'); - $('.save, .cancel').removeClass("layui-btn-disabled").attr("disabled", false); + $("input, select").attr("disabled", false); + $(".span-type-option").css("pointer-events", "auto"); + $(".save, .cancel") + .removeClass("layui-btn-disabled") + .attr("disabled", false); } - - ajaxRequest(url, "POST", params, true, function () { - disableForm(); - }, function (result) { - layer.close(loadingMsg); - if (result.code === 200) { - layer.msg(result.msg, {icon: 1}); - setTimeout(function () { - closePage(1); - },3000) - } else { - layer.alert(result.msg, {icon: 2}) - setTimeout(function () { - enableForm(); - },3000) + + ajaxRequest( + url, + "POST", + params, + true, + function () { + disableForm(); + }, + function (result) { + layer.close(loadingMsg); + if (result.code === 200) { + layer.msg(result.msg, { icon: 1 }); + setTimeout(function () { + closePage(1); + }, 3000); + } else { + layer.alert(result.msg, { icon: 2 }); + setTimeout(function () { + enableForm(); + }, 3000); + } + }, + function (xhr) { + layer.close(loadingMsg); + enableForm(); + error(xhr); } - }, function (xhr) { - layer.close(loadingMsg); - enableForm(); - error(xhr) + ); +} + +function crossLineFields() { + $('input[name="upperLine"]').attr("lay-verify", "required"); + $('input[name="lowerLine"]').attr("lay-verify", "required"); + $('input[name="intersectionAngle1"]').attr("lay-verify", "required|number"); + $('input[name="verticalDistance"]').attr("lay-verify", "required|number"); + $('input[name="safetyMargin"]').attr("lay-verify", "required|number"); + // $('input[name="crossTowerLongitude1"]').attr( + // "lay-verify", + // "required|longitude" + // ); + // $('input[name="crossTowerLatitude1"]').attr( + // "lay-verify", + // "required|latitude" + // ); + // $('input[name="crossTowerLongitude2"]').attr( + // "lay-verify", + // "required|longitude" + // ); + // $('input[name="crossTowerLatitude2"]').attr( + // "lay-verify", + // "required|latitude" + // ); + // $('input[name="crossTowerLongitude3"]').attr("lay-verify", "longitude"); + // $('input[name="crossTowerLatitude3"]').attr("lay-verify", "latitude"); + // $('input[name="crossTowerLongitude4"]').attr("lay-verify", "longitude"); + // $('input[name="crossTowerLatitude4"]').attr("lay-verify", "latitude"); + + $('input[name="verticalClearDistance2"]').removeAttr("lay-verify"); + $('input[name="towerSpacing2"]').removeAttr("lay-verify"); + $('input[name="highwayWidth"]').removeAttr("lay-verify"); + + $('input[name="verticalClearDistance3"]').removeAttr("lay-verify"); + $('input[name="towerSpacing3"]').removeAttr("lay-verify"); + $('input[name="intersectionAngle3"]').removeAttr("lay-verify"); +} + +function crossPublicFields() { + $('input[name="upperLine"]').removeAttr("lay-verify"); + $('input[name="lowerLine"]').removeAttr("lay-verify"); + $('input[name="intersectionAngle1"]').removeAttr("lay-verify"); + $('input[name="verticalDistance"]').removeAttr("lay-verify"); + $('input[name="safetyMargin"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude1"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude1"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude2"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude2"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude3"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude3"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude4"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude4"]').removeAttr("lay-verify"); + + $('input[name="verticalClearDistance2"]').attr( + "lay-verify", + "required|number" + ); + $('input[name="towerSpacing2"]').attr("lay-verify", "required|number"); + $('input[name="highwayWidth"]').attr("lay-verify", "required|number"); + + $('input[name="verticalClearDistance3"]').removeAttr("lay-verify"); + $('input[name="towerSpacing3"]').removeAttr("lay-verify"); + $('input[name="intersectionAngle3"]').removeAttr("lay-verify"); +} + +function crossRailwayFields() { + $('input[name="upperLine"]').removeAttr("lay-verify"); + $('input[name="lowerLine"]').removeAttr("lay-verify"); + $('input[name="intersectionAngle1"]').removeAttr("lay-verify"); + $('input[name="verticalDistance"]').removeAttr("lay-verify"); + $('input[name="safetyMargin"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude1"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude1"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude2"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude2"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude3"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude3"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLongitude4"]').removeAttr("lay-verify"); + // $('input[name="crossTowerLatitude4"]').removeAttr("lay-verify"); + + $('input[name="verticalClearDistance2"]').removeAttr("lay-verify"); + $('input[name="towerSpacing2"]').removeAttr("lay-verify"); + $('input[name="highwayWidth"]').removeAttr("lay-verify"); + + $('input[name="verticalClearDistance3"]').attr( + "lay-verify", + "required|number" + ); + $('input[name="towerSpacing3"]').attr("lay-verify", "required|number"); + $('input[name="intersectionAngle3"]').attr("lay-verify", "required|number"); +} + +// 打开配置页面 +function setSpanTowerLonAndLatData() { + let obj = {}; + obj.id = proId; + obj.points = pointsStr; + openIframeByParamObj2( + "setLonAndLatData", + "配置跨越杆塔经纬度", + "../../lineManagement/child/setSpanTowerLonAndLat.html", + "92%", + "95%", + obj + ); +} + +function savePointData(str) { + pointsStr = str; + console.log("pointsStr", pointsStr); + const points = JSON.parse(str); + // 对页面的输入框进行赋值回显 + + let spanTowerInfo = ""; + points.forEach((item, index) => { + spanTowerInfo += ` +
+ + +
+ +
+
+ +
+
+ ${index + 1} +
+
`; + + // $('input[name="crossTowerLongitude' + (index + 1) + '"]').val( + // item.lng.toString().slice(0, 10) + // ); + // $('input[name="crossTowerLatitude' + (index + 1) + '"]').val( + // item.lat.toString().slice(0, 10) + // ); }); + // 先清空再赋值 + $(".span-tower-info").empty(); + $(".span-tower-info").html(spanTowerInfo); } -function crossLineFields(){ - $('input[name="upperLine"]').attr('lay-verify', 'required'); - $('input[name="lowerLine"]').attr('lay-verify', 'required'); - $('input[name="intersectionAngle1"]').attr('lay-verify', 'required|number'); - $('input[name="verticalDistance"]').attr('lay-verify', 'required|number'); - $('input[name="safetyMargin"]').attr('lay-verify', 'required|number'); - $('input[name="crossTowerLongitude1"]').attr('lay-verify', 'required|longitude'); - $('input[name="crossTowerLatitude1"]').attr('lay-verify', 'required|latitude'); - $('input[name="crossTowerLongitude2"]').attr('lay-verify', 'required|longitude'); - $('input[name="crossTowerLatitude2"]').attr('lay-verify', 'required|latitude'); - $('input[name="crossTowerLongitude3"]').attr('lay-verify', 'longitude'); - $('input[name="crossTowerLatitude3"]').attr('lay-verify', 'latitude'); - $('input[name="crossTowerLongitude4"]').attr('lay-verify', 'longitude'); - $('input[name="crossTowerLatitude4"]').attr('lay-verify', 'latitude'); - - - $('input[name="verticalClearDistance2"]').removeAttr('lay-verify'); - $('input[name="towerSpacing2"]').removeAttr('lay-verify'); - $('input[name="highwayWidth"]').removeAttr('lay-verify'); - - $('input[name="verticalClearDistance3"]').removeAttr('lay-verify'); - $('input[name="towerSpacing3"]').removeAttr('lay-verify'); - $('input[name="intersectionAngle3"]').removeAttr('lay-verify'); - -} - -function crossPublicFields(){ - $('input[name="upperLine"]').removeAttr('lay-verify'); - $('input[name="lowerLine"]').removeAttr('lay-verify'); - $('input[name="intersectionAngle1"]').removeAttr('lay-verify'); - $('input[name="verticalDistance"]').removeAttr('lay-verify'); - $('input[name="safetyMargin"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude1"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude1"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude2"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude2"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude3"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude3"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude4"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude4"]').removeAttr('lay-verify'); - - $('input[name="verticalClearDistance2"]').attr('lay-verify', 'required|number'); - $('input[name="towerSpacing2"]').attr('lay-verify', 'required|number'); - $('input[name="highwayWidth"]').attr('lay-verify', 'required|number'); - - $('input[name="verticalClearDistance3"]').removeAttr('lay-verify'); - $('input[name="towerSpacing3"]').removeAttr('lay-verify'); - $('input[name="intersectionAngle3"]').removeAttr('lay-verify'); -} - -function crossRailwayFields(){ - $('input[name="upperLine"]').removeAttr('lay-verify'); - $('input[name="lowerLine"]').removeAttr('lay-verify'); - $('input[name="intersectionAngle1"]').removeAttr('lay-verify'); - $('input[name="verticalDistance"]').removeAttr('lay-verify'); - $('input[name="safetyMargin"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude1"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude1"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude2"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude2"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude3"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude3"]').removeAttr('lay-verify'); - $('input[name="crossTowerLongitude4"]').removeAttr('lay-verify'); - $('input[name="crossTowerLatitude4"]').removeAttr('lay-verify'); - - $('input[name="verticalClearDistance2"]').removeAttr('lay-verify'); - $('input[name="towerSpacing2"]').removeAttr('lay-verify'); - $('input[name="highwayWidth"]').removeAttr('lay-verify'); - - $('input[name="verticalClearDistance3"]').attr('lay-verify', 'required|number'); - $('input[name="towerSpacing3"]').attr('lay-verify', 'required|number'); - $('input[name="intersectionAngle3"]').attr('lay-verify', 'required|number'); -} - - // 关闭页面 function closePage(type) { let index = parent.layer.getFrameIndex(window.name); parent.layer.close(index); if (type === 1) { - parent.reloadData() - parent.parent.reloadData() + parent.reloadData(); + parent.parent.reloadData(); } -} \ No newline at end of file +} diff --git a/src/main/resources/static/js/basic/lineManagement/child/threeSpanList.js b/src/main/resources/static/js/basic/lineManagement/child/threeSpanList.js index 8b10f80..fb620c9 100644 --- a/src/main/resources/static/js/basic/lineManagement/child/threeSpanList.js +++ b/src/main/resources/static/js/basic/lineManagement/child/threeSpanList.js @@ -1,61 +1,72 @@ -let form, layer, table, tableIns,idParam; -let pageNum = 1, limitSize = 10; // 默认第一页,分页数量为10 +let form, layer, table, tableIns, idParam; +let pageNum = 1, + limitSize = 10; // 默认第一页,分页数量为10 function setParams(params) { idParam = JSON.parse(params).id; - layui.use(['form', 'layer', 'table', 'laydate'], function () { + layui.use(["form", "layer", "table", "laydate"], function () { form = layui.form; layer = layui.layer; table = layui.table; layui.form.render(); pages(1, 10, 1); - }) + }); } function pages(pageNum, pageSize, typeNum) { let params = getReqParams(pageNum, pageSize, typeNum); - let url = dataUrl + "/tbThreeSpan/getTbThreeSpanList" - ajaxRequest(url, "POST", params, true, function () { - }, function (result) { - console.log(result); - if (result.code === 200) { - if (result.data) { - initTable(result.data, result.limit, result.curr) - laypages(result.count, result.curr, result.limit) + let url = dataUrl + "/tbThreeSpan/getTbThreeSpanList"; + ajaxRequest( + url, + "POST", + params, + true, + function () {}, + function (result) { + console.log(result); + if (result.code === 200) { + if (result.data) { + initTable(result.data, result.limit, result.curr); + laypages(result.count, result.curr, result.limit); + } + } else if (result.code === 500) { + layer.alert(result.msg, { icon: 2 }); } - } else if (result.code === 500) { - layer.alert(result.msg, {icon: 2}) + }, + function (xhr) { + error(xhr); } - }, function (xhr) { - error(xhr) - }); - + ); } function laypages(total, page, limit) { - layui.use(['laypage'], function () { + layui.use(["laypage"], function () { let laypage = layui.laypage; laypage.render({ - elem: 'voi-page', + elem: "voi-page", count: total, curr: page, limit: limit, limits: [10, 20, 50, 100, 200, 500], - layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'], + layout: ["prev", "page", "next", "skip", "count", "limit"], groups: 5, jump: function (obj, first) { if (!first) { - pageNum = obj.curr, limitSize = obj.limit; + (pageNum = obj.curr), (limitSize = obj.limit); pages(obj.curr, obj.limit, null); } - } + }, }); - }) + }); } /*初始化表格*/ function initTable(dataList, limit, page) { - let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, scrollbar: false, time: 0,}); + let loadingMsg = layer.msg("数据加载中,请稍候...", { + icon: 16, + scrollbar: false, + time: 0, + }); tableIns = table.render({ elem: "#table_data", height: "full-130", @@ -65,106 +76,158 @@ function initTable(dataList, limit, page) { [ //表头 { - title: "序号", width: 80, unresize: true, align: "center", + title: "序号", + width: 80, + unresize: true, + align: "center", templet: function (d) { return (page - 1) * limit + d.LAY_INDEX; - } - }, - {field: "towerName", title: "杆塔号", unresize: true, align: "center", - templet: function (d) { - return d.towerName+"-"+d.nextTowerName; - } - }, - {field: "", title: "跨越类型", unresize: true, align: "center", - templet: function (d) { - if(d.spanType == 1){ - return '跨线路'; - }else if(d.spanType == 2){ - return '跨公路'; - }else if(d.spanType == 3){ - return '跨铁路'; - } - } - }, - {field: "", title: "跨越信息", unresize: true, align: "center", - templet: function (d) { - if(d.spanType == 1){ - var html = ''; - html+="上层线路:" + d.upperLine + "

"; - html+="下层线路:" + d.lowerLine + "

"; - html+="交叉角度:" + d.intersectionAngle + "

"; - html+="垂直距离:" + d.verticalDistance + "(m)

"; - html+="安全裕度:" + d.safetyMargin + "(°)

"; - return html; - }else if(d.spanType == 2){ - var html = ''; - html+="垂直净距:" + d.verticalClearDistance + "(m)

"; - html+="杆塔间距:" + d.towerSpacing + "(m)

"; - html+="公路宽度:" + d.highwayWidth + "(m)

"; - return html; - }else if(d.spanType == 3){ - var html = ''; - html+="垂直净距:" + d.verticalClearDistance + "(m)

"; - html+="杆塔间距:" + d.towerSpacing + "(m)

"; - html+="交叉角度:" + d.intersectionAngle + "(°)

"; - return html; - } - } + }, }, { - title: "操作", unresize: true, width: 200, align: "center", + field: "towerName", + title: "杆塔号", + unresize: true, + align: "center", templet: function (d) { - let html = ''; - let encodedTowerList = encodeURIComponent(JSON.stringify(d.tbSpanTowerList)); - let del = "删除"; - let edit = "修改"; + return d.towerName + "-" + d.nextTowerName; + }, + }, + { + field: "", + title: "跨越类型", + unresize: true, + align: "center", + templet: function (d) { + if (d.spanType == 1) { + return "跨线路"; + } else if (d.spanType == 2) { + return "跨公路"; + } else if (d.spanType == 3) { + return "跨铁路"; + } + }, + }, + { + field: "", + title: "跨越信息", + unresize: true, + align: "center", + templet: function (d) { + if (d.spanType == 1) { + var html = ""; + html += "上层线路:" + d.upperLine + "

"; + html += "下层线路:" + d.lowerLine + "

"; + html += + "交叉角度:" + d.intersectionAngle + "

"; + html += + "垂直距离:" + + d.verticalDistance + + "(m)

"; + html += + "安全裕度:" + d.safetyMargin + "(°)

"; + return html; + } else if (d.spanType == 2) { + var html = ""; + html += + "垂直净距:" + + d.verticalClearDistance + + "(m)

"; + html += + "杆塔间距:" + d.towerSpacing + "(m)

"; + html += + "公路宽度:" + d.highwayWidth + "(m)

"; + return html; + } else if (d.spanType == 3) { + var html = ""; + html += + "垂直净距:" + + d.verticalClearDistance + + "(m)

"; + html += + "杆塔间距:" + d.towerSpacing + "(m)

"; + html += + "交叉角度:" + + d.intersectionAngle + + "(°)

"; + return html; + } + }, + }, + { + title: "操作", + unresize: true, + width: 200, + align: "center", + templet: function (d) { + let html = ""; + let encodedTowerList = encodeURIComponent( + JSON.stringify(d.tbSpanTowerList) + ); + let del = + "删除"; + let edit = + "修改"; html = edit + del; if (d.delFlag == 1) { - return ''; + return ""; } return html; - } + }, }, ], ], done: function (res, curr, count) { layer.close(loadingMsg); table.resize("table_data"); - count || this.elem.next(".layui-table-view").find(".layui-table-header").css("display", "inline-block"); - count || this.elem.next(".layui-table-view").find(".layui-table-box").css("overflow", "auto"); + count || + this.elem + .next(".layui-table-view") + .find(".layui-table-header") + .css("display", "inline-block"); + count || + this.elem + .next(".layui-table-view") + .find(".layui-table-box") + .css("overflow", "auto"); }, }); } - // 获取参数 function getReqParams(page, limit, type) { let obj = {}; if (type === 2) { - $('#keyWord').val('') + $("#keyWord").val(""); layui.form.render(); } obj = { page: page + "", limit: limit + "", proId: idParam, - keyWord: $('#keyWord').val() + keyWord: $("#keyWord").val(), + }; + console.log("杆塔管理查询条件", obj); + obj = { + encryptedData: encryptCBC(JSON.stringify(obj)), }; - console.log("杆塔管理查询条件", obj) - obj={ - encryptedData:encryptCBC(JSON.stringify(obj)) - } return obj; } // 查询/重置 function query(type) { pageNum = 1; - if(type === 2){ - $('#keyWord').val('') + if (type === 2) { + $("#keyWord").val(""); layui.form.render(); } - pages(1, limitSize,type); + pages(1, limitSize, type); } function reloadData() { @@ -173,21 +236,35 @@ function reloadData() { // 修改用户 function addData(id) { - let title = '修改' + let title = "修改"; let param = { - 'id': id, - 'proId':idParam - } - openIframe2("editPro", title, "threeSpanFormTemp.html", '1000px', '625px', param); + id: id, + proId: idParam, + }; + openIframe2( + "addDataThreeSpan", + title, + "threeSpanFormTemp.html", + "1000px", + "625px", + param + ); } function addDataThreeSpan(id) { - let title = '新增' + let title = "新增"; let param = { - 'id': id, - 'proId':idParam - } - openIframe2("addDataThreeSpan", title, "threeSpanFormTemp.html", '1000px', '625px', param); + id: id, + proId: idParam, + }; + openIframe2( + "addDataThreeSpan", + title, + "threeSpanFormTemp.html", + "1000px", + "625px", + param + ); } /*删除用户*/ @@ -195,58 +272,82 @@ function delData(id, tbSpanTowerList) { // 将字符串转回对象 try { // 处理可能的编码问题 - tbSpanTowerList = tbSpanTowerList.replace(/[\u0000-\u0019]+/g,""); // 移除不可见字符 + tbSpanTowerList = tbSpanTowerList.replace(/[\u0000-\u0019]+/g, ""); // 移除不可见字符 tbSpanTowerList = JSON.parse(tbSpanTowerList); - } catch(e) { + } catch (e) { tbSpanTowerList = []; } - - layer.confirm("确定删除吗?", { - move: false - }, function () { - let loadingMsg = layer.msg('数据删除中,请稍候...', {icon: 16, scrollbar: false, time: 0}); - let url = dataUrl + "/tbThreeSpan/delTbThreeSpan"; - let params = { - 'id': id, - 'tbSpanTowerList': tbSpanTowerList + + layer.confirm( + "确定删除吗?", + { + move: false, + }, + function () { + let loadingMsg = layer.msg("数据删除中,请稍候...", { + icon: 16, + scrollbar: false, + time: 0, + }); + let url = dataUrl + "/tbThreeSpan/delTbThreeSpan"; + let params = { + id: id, + tbSpanTowerList: tbSpanTowerList, + }; + params = { + encryptedData: encryptCBC(JSON.stringify(params)), + }; + + ajaxRequest( + url, + "POST", + params, + true, + function () {}, + function (result) { + layer.close(loadingMsg); + if (result.code === 200) { + layer.msg(result.msg, { icon: 1 }); + setTimeout(function () { + parent.reloadData(); + query(); + }, 3000); + } else { + layer.alert(result.msg, { icon: 2 }); + } + }, + function (xhr) { + layer.close(loadingMsg); + error(xhr); + } + ); } - params = { - encryptedData: encryptCBC(JSON.stringify(params)) - } - - ajaxRequest(url, "POST", params, true, function () { - }, function (result) { - layer.close(loadingMsg); - if (result.code === 200) { - layer.msg(result.msg, {icon: 1}); - setTimeout(function () { - parent.reloadData(); - query(); - }, 3000); - } else { - layer.alert(result.msg, {icon: 2}); - } - }, function (xhr) { - layer.close(loadingMsg); - error(xhr); - }); - }); + ); } -function exportThreeSpan(){ +function exportThreeSpan() { let obj = { - keyWord: $('#keyWord').val(), - proId: idParam - } + keyWord: $("#keyWord").val(), + proId: idParam, + }; let params = { - encryptedData: encryptCBC(JSON.stringify(obj)) - } - let loadingMsg = layer.msg("数据导出中,请稍候...", {icon: 16, scrollbar: false, time: 0,}); - let url = dataUrl + "/tbThreeSpan/tbProjectExport?token=" + tokens + "&encryptedData=" + encodeURIComponent(encryptCBC(JSON.stringify(obj))); + encryptedData: encryptCBC(JSON.stringify(obj)), + }; + let loadingMsg = layer.msg("数据导出中,请稍候...", { + icon: 16, + scrollbar: false, + time: 0, + }); + let url = + dataUrl + + "/tbThreeSpan/tbProjectExport?token=" + + tokens + + "&encryptedData=" + + encodeURIComponent(encryptCBC(JSON.stringify(obj))); let xhr = new XMLHttpRequest(); xhr.open("post", url, true); xhr.responseType = "blob"; // 转换流 - xhr.setRequestHeader('Content-Type','application/json;charset=UTF-8') + xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); xhr.onload = function () { layer.close(loadingMsg); if (this.status === 200) { @@ -256,11 +357,15 @@ function exportThreeSpan(){ a.href = url; a.download = "三跨管理" + ".xlsx"; // 文件名 } else { - layer.msg("数据导出发生异常,请稍后重试", {icon: 16, scrollbar: false, time: 2000}); + layer.msg("数据导出发生异常,请稍后重试", { + icon: 16, + scrollbar: false, + time: 2000, + }); } a.click(); window.URL.revokeObjectURL(url); }; // xhr.send(params); xhr.send(); -} \ No newline at end of file +} diff --git a/src/main/resources/static/js/synthesisQuery/digitalSignage.js b/src/main/resources/static/js/synthesisQuery/digitalSignage.js index d4bf407..d2f0ebe 100644 --- a/src/main/resources/static/js/synthesisQuery/digitalSignage.js +++ b/src/main/resources/static/js/synthesisQuery/digitalSignage.js @@ -59,7 +59,7 @@ const legendData = [ { name: "架线施工", value: 0, - icon: "../../img/digitalSignage/line_yellow.png", + icon: "../../img/digitalSignage/line_y.png", }, // { // name: "架线施工完成", @@ -69,7 +69,7 @@ const legendData = [ { name: "架线施工完成", value: 0, - icon: "../../img/digitalSignage/line_red.png", + icon: "../../img/digitalSignage/line_r.png", }, { name: "附件安装完成", @@ -711,13 +711,17 @@ function addAllMapPoints() { ${pointData.time7 || "/"}
- 架线施工完成 + 架线施工 ${pointData.time8 || "/"}
- 附件安装完成 + 架线施工完成 ${pointData.time9 || "/"}
+
+ 附件安装完成 + ${pointData.time10 || "/"} +
`; const infoWindow = new BMapGL.InfoWindow(infoContent, { @@ -858,19 +862,25 @@ function addAllMapPoints() { ${pointData.towerInfoVo.time7 || "/"} - +
- 架线施工完成 + 架线施工 ${pointData.towerInfoVo.time8 || "/"}
- 附件安装完成 + 架线施工完成 ${pointData.towerInfoVo.time9 || "/"}
+
+ 附件安装完成 + + ${pointData.towerInfoVo.time10 || "/"} + +

diff --git a/src/main/resources/static/pages/basic/lineManagement/child/setSpanTowerLonAndLat.html b/src/main/resources/static/pages/basic/lineManagement/child/setSpanTowerLonAndLat.html new file mode 100644 index 0000000..6bb513b --- /dev/null +++ b/src/main/resources/static/pages/basic/lineManagement/child/setSpanTowerLonAndLat.html @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + 配置公路口、中转口经纬度 + + + + +
+
+ +
+
+

提示:第一个点表示首个杆塔,至少需要两个杆塔,最后一个点表示最后一个杆塔

+
+ + + + +
+
+
+

+ + + + + \ No newline at end of file diff --git a/src/main/resources/static/pages/basic/lineManagement/child/threeSpanFormTemp.html b/src/main/resources/static/pages/basic/lineManagement/child/threeSpanFormTemp.html index 3dbfc1c..001bb0d 100644 --- a/src/main/resources/static/pages/basic/lineManagement/child/threeSpanFormTemp.html +++ b/src/main/resources/static/pages/basic/lineManagement/child/threeSpanFormTemp.html @@ -1,10 +1,11 @@ + - + @@ -19,16 +20,20 @@ .layui-form-item { margin-bottom: 15px; } + .layui-input-inline { width: 420px; } + .required-mark { color: #FF5722; } + .span-type-options { display: flex; gap: 15px; } + .span-type-option { padding: 8px 20px; border: 1px solid #e6e6e6; @@ -36,225 +41,224 @@ cursor: pointer; background: #fff; } + .span-type-option.active { background: #ecf5ff; border-color: #409eff; color: #409eff; } - .layui-form-mid{ + + .layui-form-mid { padding: 0px !important; } + -
-
- +
+ + -
- -
-
跨线路
-
跨公路
-
跨铁路
-
-
- -
- -
- -
-
- -
- - - -
- - -
-
- -
- +
+ +
+
跨线路
+
跨公路
+
跨铁路
- -
- + +
+
+
+ +
+ + +
-
- -
- + +
+
+ +
+ +
-
-
- -
- +
+ +
+ +
-
-
- -
- +
+ +
+ +
-
- -
- -
+
+ +
+ +
+
-
- - -
- +
+ +
+ +
-
- -
-
1
-
-
- - -
- + +
+
-
- -
-
2
-
-
- - -
- -
-
- -
-
3
-
+
-
- - -
-
-
- + + -