基础管理-线路工程管理

This commit is contained in:
lSun 2025-04-28 15:58:17 +08:00
parent a9d08575c0
commit 12a55f235a
6 changed files with 431 additions and 191 deletions

View File

@ -12,7 +12,7 @@
<if test="baiduLon != null">baidu_lon,</if>
<if test="baiduLat != null ">baidu_lat,</if>
<if test="sort != null ">sort,</if>
is_actvice
is_active
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="threeSpanId != null ">#{threeSpanId},</if>

View File

@ -19,7 +19,7 @@
<if test="highwayWidth != null ">highway_width,</if>
<if test="createTime != null">create_time,</if>
<if test="createUserId != null ">create_user_id,</if>
is_actvice
is_active
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="proId != null ">#{proId},</if>

View File

@ -1,12 +1,13 @@
let form, layer, util,laydate, idParam, phoneParam;
let form, layer, util,laydate, idParam,proId;
let arr = ['background', 'web', 'mobile', 'wx'];
let background, web, mobile, wx;
let data = [], appResList = [];
let data = [], appResList = [], towerList = [];
let startDate, endDate;
function setParams(params) {
console.log(params)
idParam = JSON.parse(params).id;
proId = JSON.parse(params).proId;
layui.use(['form', 'layer', 'util', 'laydate'], function () {
form = layui.form;
layer = layui.layer;
@ -14,140 +15,200 @@ function setParams(params) {
laydate = layui.laydate;
var $ = layui.jquery;
console.log(idParam + "idParam")
crossLineFields()
if (idParam) {
getThreeSpanById();
} else {
// 确保默认选中跨线路并触发相关验证规则
$('.span-type-option[data-type="cross-line"]').trigger('click');
}
// 初始化表单
form.render();
loadTowerOptions();
// 跨越类型切换
$('.span-type-option').click(function() {
$('.span-type-option').on('click', function() {
$('.span-type-option').removeClass('active');
$(this).addClass('active');
let type = $(this).data('type');
// 隐藏所有输入框
$('#crossLineFields, #crossPublicFields, #crossRailwayFields').hide();
// 移除所有验证规则
$('input[name^="upper"], input[name^="lower"], input[name^="road"], input[name^="railway"]').removeAttr('lay-verify');
// 显示对应的输入框并设置验证规则
switch(type) {
case 'cross-line':
$('#crossLineFields').show();
$('input[name="upperLine"], input[name="lowerLine"]').attr('lay-verify', 'required');
$('#crossPublicFields').hide();
$('#crossRailwayFields').hide();
crossLineFields()
break;
case 'cross-public':
$('#crossLineFields').hide();
$('#crossPublicFields').show();
$('input[name="roadName"], input[name="roadLevel"]').attr('lay-verify', 'required');
$('#crossRailwayFields').hide();
crossPublicFields()
break;
case 'cross-railway':
$('#crossLineFields').hide();
$('#crossPublicFields').hide();
$('#crossRailwayFields').show();
$('input[name="railwayName"], input[name="railwayType"]').attr('lay-verify', 'required');
crossRailwayFields()
break;
}
form.render();
});
// 监听杆塔选择
form.on('select(towerSelect)', function(data) {
// 这里可以根据选择的杆塔自动填写相关信息
if(data.value) {
getTowerInfo(data.value);
// 获取当前选中的索引
let currentIndex = -1;
for(let i = 0; i < towerList.length; i++) {
if(towerList[i].id == data.value) {
currentIndex = i;
break;
}
}
// 先清空第二个下拉框
let $nextTowerSelect = $('#nextTowerName');
$nextTowerSelect.empty();
// 如果找到当前索引且不是最后一个
if(currentIndex !== -1 && currentIndex < towerList.length - 1) {
// 获取下一个杆塔的信息
let nextTower = towerList[currentIndex + 1];
// 设置隐藏的ID
$('#nextTowerId').val(nextTower.id);
// 创建新的option元素并添加
let newOption = new Option(nextTower.towerName, nextTower.id);
$nextTowerSelect.append(newOption);
} else {
// 清空ID
$('#nextTowerId').val('');
// 创建提示选项
let newOption = new Option('选择的已经是最后一个', '');
$nextTowerSelect.append(newOption);
}
// 重新渲染select
layui.form.render('select');
} else {
// 当没有选择值时,重置为默认状态
$('#nextTowerId').val('');
let $nextTowerSelect = $('#nextTowerName');
$nextTowerSelect.empty();
let newOption = new Option('根据杆塔行序号自动填写下方杆塔序号', '');
$nextTowerSelect.append(newOption);
layui.form.render('select');
}
});
// 表单验证
// 表单验证规则
form.verify({
required: function(value, item) {
if(!value) {
return '必填项不能为空';
number: function(value, item) {
if(value && !/^-?\d+\.?\d*$/.test(value)) {
return '请输入数字';
}
},
number: [
/^-?\d+\.?\d*$/,
'请输入有效的数字'
]
// 经度验证
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';
}
},
// 纬度验证
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';
}
}
});
// 表单提交
// 表单提交验证
form.on('submit(formData)', function(data) {
let formData = data.field;
let spanType = $('.span-type-option.active').data('type');
let currentSystem = $('.span-type-option.active').data('type');
if(currentSystem === 'cross-line'){
delete formData.verticalClearDistance;
delete formData.towerSpacing;
delete formData.highwayWidth;
if(!spanType) {
layer.msg('请选择跨越类型', {icon: 2});
return false;
delete formData.verticalClearDistances;
delete formData.towerSpacings;
delete formData.intersectionAngles;
formData.spanType ="1";
}else if (currentSystem === 'cross-public'){
delete formData.upperLine;
delete formData.lowerLine;
delete formData.intersectionAngle;
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.verticalClearDistances;
delete formData.towerSpacings;
delete formData.intersectionAngles;
formData.spanType ="2";
}else if(currentSystem === 'cross-railway'){
delete formData.upperLine;
delete formData.lowerLine;
delete formData.intersectionAngle;
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.verticalClearDistance;
delete formData.towerSpacing;
delete formData.highwayWidth;
formData.verticalClearDistance = formData.verticalClearDistances;
formData.towerSpacing = formData.towerSpacings;
formData.intersectionAngle = formData.intersectionAngles;
formData.spanType ="3";
}
formData.spanType = spanType;
// 验证必填项
if(!formData.towerId) {
layer.msg('请选择杆塔', {icon: 2});
return false;
}
// 根据跨越类型验证必填项
switch(spanType) {
case 'cross-line':
if(!formData.upperLine) {
layer.msg('请输入上层线路', {icon: 2});
return false;
}
if(!formData.lowerLine) {
layer.msg('请输入下层线路', {icon: 2});
return false;
}
if(!formData.crossAngle) {
layer.msg('请输入交叉角度', {icon: 2});
return false;
}
if(!formData.verticalDistance) {
layer.msg('请输入垂直距离', {icon: 2});
return false;
}
if(!formData.safetyMargin) {
layer.msg('请输入安全裕度', {icon: 2});
return false;
}
break;
case 'cross-public':
if(!formData.verticalClearance) {
layer.msg('请输入垂直净距', {icon: 2});
return false;
}
if(!formData.towerSpacing) {
layer.msg('请输入杆塔间距', {icon: 2});
return false;
}
if(!formData.roadWidth) {
layer.msg('请输入公路宽度', {icon: 2});
return false;
}
break;
case 'cross-railway':
if(!formData.verticalClearance) {
layer.msg('请输入垂直净距', {icon: 2});
return false;
}
if(!formData.towerSpacing) {
layer.msg('请输入杆塔间距', {icon: 2});
return false;
}
if(!formData.crossAngle) {
layer.msg('请输入交叉角度', {icon: 2});
return false;
}
break;
}
console.log(currentSystem)
formData.proId=proId;
saveData(formData);
return false;
});
});
@ -155,31 +216,24 @@ function setParams(params) {
// 加载杆塔选项
function loadTowerOptions() {
let url = dataUrl + "/tower/list";
ajaxRequest(url, "GET", {}, true, null, function(result) {
if(result.code === 200) {
let options = '<option value="">选择项目</option>';
result.data.forEach(item => {
options += `<option value="${item.id}">${item.towerName}</option>`;
});
$('select[name="towerId"]').html(options);
form.render('select');
}
});
}
// 获取杆塔信息
function getTowerInfo(towerId) {
let url = dataUrl + "/tower/getById";
let params = {
id: towerId,
encryptedData: encryptCBC(JSON.stringify({id: towerId}))
};
let url = dataUrl + "/tbTower/getTbTowerAll";
let params = {"proId":proId};
params = {
encryptedData: encryptCBC(JSON.stringify(params))
}
ajaxRequest(url, "POST", params, true, null, function(result) {
if(result.code === 200) {
// 可以根据杆塔信息自动填写一些表单项
console.log("获取到杆塔信息:", result.data);
let options = '<option value="">选择杆塔</option>';
// 保存杆塔列表数据
towerList = result.data;
towerList.forEach(item => {
options += `<option value="${item.id}">${item.towerName}</option>`;
});
// 为两个select都添加选项
$('select[name="towerId"]').html(options);
$('select[name="nextTowerName"]').html('<option value="">根据杆塔行序号自动填写下方杆塔序号</option>');
form.render('select');
}
});
}
@ -187,7 +241,7 @@ function getTowerInfo(towerId) {
// 根据id获取三跨信息
function getThreeSpanById() {
let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, time: 0});
let url = dataUrl + "/threeSpan/getById";
let url = dataUrl + "/tbThreeSpan/getTbThreeSpanById";
let params = {
id: idParam,
encryptedData: encryptCBC(JSON.stringify({id: idParam}))
@ -222,18 +276,40 @@ function saveData2() {
// 保存数据
function saveData(data) {
// 组装经纬度数据
let tbSpanTowerList = [];
for(let i = 1; i <= 4; i++) {
let lon = data[`crossTowerLongitude${i}`];
let lat = data[`crossTowerLatitude${i}`];
// 只有当经纬度都有值时才添加到列表
if(lon && lat) {
tbSpanTowerList.push({
lon: lon,
lat: lat,
sort: i // 使用循环索引作为排序号
});
}
// 删除原始的经纬度字段
delete data[`crossTowerLongitude${i}`];
delete data[`crossTowerLatitude${i}`];
}
// 将经纬度列表添加到提交数据中
data.tbSpanTowerList = tbSpanTowerList;
let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0});
let url = dataUrl + "/threeSpan/add";
let url = dataUrl + "/tbThreeSpan/addTbThreeSpan";
let params = data;
if (params.id) {
url = dataUrl + "/threeSpan/update";
url = dataUrl + "/tbThreeSpan/updateTbThreeSpan";
}
console.log("三跨管理的新增修改", params);
params = {
encryptedData: encryptCBC(JSON.stringify(params))
}
// 禁用所有输入框和按钮
function disableForm() {
$('input, select').attr('disabled', true);
@ -257,7 +333,9 @@ function saveData(data) {
parent.layer.msg(result.msg, {icon: 1});
} else {
layer.alert(result.msg, {icon: 2})
enableForm();
setTimeout(function () {
enableForm();
},3000)
}
}, function (xhr) {
layer.close(loadingMsg);
@ -266,11 +344,87 @@ function saveData(data) {
});
}
function crossLineFields(){
$('input[name="upperLine"]').attr('lay-verify', 'required');
$('input[name="lowerLine"]').attr('lay-verify', 'required');
$('input[name="intersectionAngle"]').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', 'longitude');
$('input[name="crossTowerLatitude1"]').attr('lay-verify', 'latitude');
$('input[name="crossTowerLongitude2"]').attr('lay-verify', 'longitude');
$('input[name="crossTowerLatitude2"]').attr('lay-verify', '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="verticalClearDistance"]').removeAttr('lay-verify');
$('input[name="towerSpacing"]').removeAttr('lay-verify');
$('input[name="highwayWidth"]').removeAttr('lay-verify');
$('input[name="verticalClearDistances"]').removeAttr('lay-verify');
$('input[name="towerSpacings"]').removeAttr('lay-verify');
$('input[name="intersectionAngles"]').removeAttr('lay-verify');
}
function crossPublicFields(){
$('input[name="upperLine"]').removeAttr('lay-verify');
$('input[name="lowerLine"]').removeAttr('lay-verify');
$('input[name="intersectionAngle"]').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="verticalClearDistance"]').attr('lay-verify', 'required|number');
$('input[name="towerSpacing"]').attr('lay-verify', 'required|number');
$('input[name="highwayWidth"]').attr('lay-verify', 'required|number');
$('input[name="verticalClearDistances"]').removeAttr('lay-verify');
$('input[name="towerSpacings"]').removeAttr('lay-verify');
$('input[name="intersectionAngles"]').removeAttr('lay-verify');
}
function crossRailwayFields(){
$('input[name="upperLine"]').removeAttr('lay-verify');
$('input[name="lowerLine"]').removeAttr('lay-verify');
$('input[name="intersectionAngle"]').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="verticalClearDistance"]').removeAttr('lay-verify');
$('input[name="towerSpacing"]').removeAttr('lay-verify');
$('input[name="highwayWidth"]').removeAttr('lay-verify');
$('input[name="verticalClearDistances"]').attr('lay-verify', 'required|number');
$('input[name="towerSpacings"]').attr('lay-verify', 'required|number');
$('input[name="intersectionAngles"]').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()
}
}

View File

@ -14,7 +14,7 @@ function setParams(params) {
function pages(pageNum, pageSize, typeNum) {
let params = getReqParams(pageNum, pageSize, typeNum);
let url = dataUrl + "/users/getList"
let url = dataUrl + "/tbThreeSpan/getTbThreeSpanList"
ajaxRequest(url, "POST", params, true, function () {
}, function (result) {
console.log(result);
@ -70,9 +70,43 @@ function initTable(dataList, limit, page) {
return (page - 1) * limit + d.LAY_INDEX;
}
},
{field: "loginName", title: "杆塔号", unresize: true, align: "center"},
{field: "username", title: "跨越类型", unresize: true, align: "center"},
{field: "username", title: "跨越信息", unresize: true, align: "center"},
{field: "towerName", title: "杆塔号", unresize: true, align: "center"},
{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 + "<br><br>";
html+="下层线路:" + d.lowerLine + "<br><br>";
html+="交叉角度:" + d.intersectionAngle + "<br><br>";
html+="垂直距离:" + d.verticalDistance + "<br><br>";
html+="安全裕度:" + d.safetyMargin + "<br><br>";
return html;
}else if(d.spanType == 2){
var html = '';
html+="垂直净距:" + d.verticalClearDistance + "<br><br>";
html+="杆塔间距:" + d.towerSpacing + "<br><br>";
html+="公路宽度:" + d.highwayWidth + "<br><br>";
return html;
}else if(d.spanType == 3){
var html = '';
html+="垂直净距:" + d.verticalClearDistance + "<br><br>";
html+="杆塔间距:" + d.towerSpacing + "<br><br>";
html+="交叉角度:" + d.intersectionAngle + "<br><br>";
return html;
}
}
},
{
title: "操作", unresize: true, width: 200, align: "center",
templet: function (d) {
@ -102,13 +136,14 @@ function initTable(dataList, limit, page) {
function getReqParams(page, limit, type) {
let obj = {};
if (type === 2) {
$('#towerName').val('')
$('#keyWord').val('')
layui.form.render();
}
obj = {
page: page + "",
limit: limit + "",
towerName: $('#towerName').val()
proId: idParam,
keyWord: $('#keyWord').val()
};
console.log("杆塔管理查询条件", obj)
obj={
@ -121,7 +156,7 @@ function getReqParams(page, limit, type) {
function query(type) {
pageNum = 1;
if(type === 2){
$('#towerName').val('')
$('#keyWord').val('')
layui.form.render();
}
pages(1, limitSize,type);
@ -135,7 +170,8 @@ function reloadData() {
function addData(id) {
let title = '修改'
let param = {
'id': id
'id': id,
'proId':idParam
}
openIframe2("editPro", title, "threeSpanFormTemp.html", '1000px', '625px', param);
}
@ -143,7 +179,8 @@ function addData(id) {
function addDataThreeSpan(id) {
let title = '新增'
let param = {
'id': id
'id': id,
'proId':idParam
}
openIframe2("addDataThreeSpan", title, "threeSpanFormTemp.html", '1000px', '625px', param);
}
@ -154,7 +191,7 @@ function delData(id) {
move: false
}, function () {
let loadingMsg = layer.msg('数据删除中,请稍候...', {icon: 16, scrollbar: false, time: 0});
let url = dataUrl + "/users/delById";
let url = dataUrl + "/tbThreeSpan/delTbThreeSpan";
let params = {
'id': id
}
@ -165,10 +202,11 @@ function delData(id) {
}, function (result) {
layer.close(loadingMsg); // 关闭提示层
if (result.code === 200) {
parent.layer.msg(result.msg, {icon: 1})
parent.layer.msg(result.data, {icon: 1})
parent.reloadData()
query()
} else if (result.code === 500) {
layer.alert(result.msg, {icon: 2})
layer.alert(result.data, {icon: 2})
}
}, function (xhr) {
layer.close(loadingMsg); // 关闭提示层
@ -178,5 +216,32 @@ function delData(id) {
}
function exportThreeSpan(){
alert("导出")
let obj = {
towerName: $('#towerName').val(),
}
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)));
let xhr = new XMLHttpRequest();
xhr.open("post", url, true);
xhr.responseType = "blob"; // 转换流
xhr.setRequestHeader('Content-Type','application/json;charset=UTF-8')
xhr.onload = function () {
layer.close(loadingMsg);
if (this.status === 200) {
let blob = this.response;
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = "三跨管理" + ".xlsx"; // 文件名
} else {
layer.msg("数据导出发生异常,请稍后重试", {icon: 16, scrollbar: false, time: 2000});
}
a.click();
window.URL.revokeObjectURL(url);
};
// xhr.send(params);
xhr.send();
}

View File

@ -41,11 +41,14 @@
border-color: #409eff;
color: #409eff;
}
.layui-form-mid{
padding: 0px !important;
}
</style>
</head>
<body>
<div id="main-box">
<form class="layui-form" lay-filter="threeSpanForm">
<form class="layui-form" lay-filter="threeSpanForm" onsubmit="return false;">
<input type="hidden" name="id" id="id">
<div class="layui-form-item" style="margin-top: 2%;">
@ -59,21 +62,28 @@
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>杆塔:</label>
<div class="layui-input-inline">
<select name="towerId" lay-verify="required" lay-filter="towerSelect">
<option value="">选择项目</option>
<div class="layui-input-inline" style="width: 30%;">
<select id="towerId" name="towerId" lay-verify="required" lay-filter="towerSelect">
</select>
</div>
<div class="layui-form-mid layui-word-aux">根据杆塔行序号自动填写下方杆塔序号</div>
<div class="layui-form-mid layui-word-aux" >
<select id="nextTowerName" name="nextTowerName">
</select>
</div>
<input type="hidden" id="nextTowerId" name="nextTowerId">
<!-- <input type="text" id="nextTowerName" name="nextTowerName">-->
</div>
<!-- 跨线路输入框 -->
<div id="crossLineFields">
<!-- 跨线路字段 -->
<div id="crossLineFields" >
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>上层线路:</label>
<div class="layui-input-inline">
<input type="text" name="upperLine" lay-verify="required" autocomplete="off"
placeholder="请输入上层线路" class="layui-input">
placeholder="请输入上层线路" class="layui-input" maxlength="30">
</div>
</div>
@ -81,15 +91,18 @@
<label class="layui-form-label"><span class="required-mark">*</span>下层线路:</label>
<div class="layui-input-inline">
<input type="text" name="lowerLine" lay-verify="required" autocomplete="off"
placeholder="请输入下层线路" class="layui-input">
placeholder="请输入下层线路" class="layui-input" maxlength="30">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>交叉角度:</label>
<div class="layui-input-inline">
<input type="text" name="crossAngle" lay-verify="required|number" autocomplete="off"
placeholder="请输入交叉角度" class="layui-input">
<input type="text" name="intersectionAngle"
lay-verify="required|number"
autocomplete="off"
placeholder="请输入交叉角度"
class="layui-input" maxlength="30">
</div>
</div>
@ -97,7 +110,7 @@
<label class="layui-form-label"><span class="required-mark">*</span>垂直距离(m):</label>
<div class="layui-input-inline">
<input type="text" name="verticalDistance" lay-verify="required|number" autocomplete="off"
placeholder="请输入垂直距离" class="layui-input">
placeholder="请输入垂直距离" class="layui-input" maxlength="30">
</div>
</div>
@ -105,82 +118,90 @@
<label class="layui-form-label"><span class="required-mark">*</span>安全裕度(°):</label>
<div class="layui-input-inline">
<input type="text" name="safetyMargin" lay-verify="required|number" autocomplete="off"
placeholder="请输入安全裕度" class="layui-input">
placeholder="请输入安全裕度" class="layui-input" maxlength="30">
</div>
</div>
<!-- 跨越杆塔经纬度信息 -->
<div class="layui-form-item">
<label class="layui-form-label">跨越杆塔信息:</label>
<label class="layui-form-label">跨越杆塔信息</label>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label>
<div class="layui-input-inline" style="width: 140px;">
<div class="layui-input-inline" style="width: 260px;">
<input type="text" name="crossTowerLongitude1" autocomplete="off"
placeholder="经度" class="layui-input">
placeholder="请输入经度(-180.0+180.0"
class="layui-input" maxlength="10" lay-verify="longitude">
</div>
<div class="layui-input-inline" style="width: 140px; margin-right: 0;">
<div class="layui-input-inline" style="width: 260px; margin-right: 0;">
<input type="text" name="crossTowerLatitude1" autocomplete="off"
placeholder="纬度" class="layui-input">
placeholder="请输入纬度(-90.0+90.0"
class="layui-input" maxlength="10" lay-verify="latitude">
</div>
<div class="layui-form-mid" style="padding: 0 8px;">1</div>
<div class="layui-form-mid" style="padding: 10px 10px !important;">1</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label>
<div class="layui-input-inline" style="width: 140px;">
<div class="layui-input-inline" style="width: 260px;">
<input type="text" name="crossTowerLongitude2" autocomplete="off"
placeholder="经度" class="layui-input">
placeholder="请输入经度(-180.0+180.0"
class="layui-input" maxlength="10" lay-verify="longitude">
</div>
<div class="layui-input-inline" style="width: 140px; margin-right: 0;">
<div class="layui-input-inline" style="width: 260px; margin-right: 0;">
<input type="text" name="crossTowerLatitude2" autocomplete="off"
placeholder="纬度" class="layui-input">
placeholder="请输入纬度(-90.0+90.0"
class="layui-input" maxlength="10" lay-verify="latitude">
</div>
<div class="layui-form-mid" style="padding: 0 8px;">2</div>
<div class="layui-form-mid" style="padding: 10px 10px !important;">2</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label>
<div class="layui-input-inline" style="width: 140px;">
<div class="layui-input-inline" style="width: 260px;">
<input type="text" name="crossTowerLongitude3" autocomplete="off"
placeholder="经度" class="layui-input">
placeholder="请输入经度(-180.0+180.0"
class="layui-input" maxlength="10" lay-verify="longitude">
</div>
<div class="layui-input-inline" style="width: 140px; margin-right: 0;">
<div class="layui-input-inline" style="width: 260px; margin-right: 0;">
<input type="text" name="crossTowerLatitude3" autocomplete="off"
placeholder="纬度" class="layui-input">
placeholder="请输入纬度(-90.0+90.0"
class="layui-input" maxlength="10" lay-verify="latitude">
</div>
<div class="layui-form-mid" style="padding: 0 8px;">3</div>
<div class="layui-form-mid" style="padding: 10px 10px !important;">3</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label>
<div class="layui-input-inline" style="width: 140px;">
<div class="layui-input-inline" style="width: 260px;">
<input type="text" name="crossTowerLongitude4" autocomplete="off"
placeholder="经度" class="layui-input">
placeholder="请输入经度(-180.0+180.0"
class="layui-input" maxlength="10" lay-verify="longitude">
</div>
<div class="layui-input-inline" style="width: 140px; margin-right: 0;">
<div class="layui-input-inline" style="width: 260px; margin-right: 0;">
<input type="text" name="crossTowerLatitude4" autocomplete="off"
placeholder="纬度" class="layui-input">
placeholder="请输入纬度(-90.0+90.0"
class="layui-input" maxlength="10" lay-verify="latitude">
</div>
<div class="layui-form-mid" style="padding: 0 8px;">4</div>
<div class="layui-form-mid" style="padding: 10px 10px !important;">4</div>
</div>
</div>
<!-- 跨公路输入框 -->
<!-- 跨公路字段 -->
<div id="crossPublicFields" style="display: none;">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>垂直净距(m):</label>
<div class="layui-input-inline">
<input type="text" name="verticalClearance" lay-verify="required|number" autocomplete="off"
placeholder="请输入垂直净距" class="layui-input">
<input type="text" name="verticalClearDistance" id="verticalClearDistance" autocomplete="off"
placeholder="请输入垂直净距" class="layui-input" lay-verify="required|number">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>杆塔间距(m):</label>
<div class="layui-input-inline">
<input type="text" name="towerSpacing" lay-verify="required|number" autocomplete="off"
<input type="text" name="towerSpacing" id="towerSpacing" lay-verify="required|number" autocomplete="off"
placeholder="请输入杆塔间距" class="layui-input">
</div>
</div>
@ -188,18 +209,18 @@
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>公路宽度(m):</label>
<div class="layui-input-inline">
<input type="text" name="roadWidth" lay-verify="required|number" autocomplete="off"
<input type="text" name="highwayWidth" id="highwayWidth" lay-verify="required|number" autocomplete="off"
placeholder="请输入公路宽度" class="layui-input">
</div>
</div>
</div>
<!-- 跨铁路输入框 -->
<!-- 跨铁路字段 -->
<div id="crossRailwayFields" style="display: none;">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>垂直净距(m):</label>
<div class="layui-input-inline">
<input type="text" name="verticalClearance" lay-verify="required|number" autocomplete="off"
<input type="text" name="verticalClearDistances" id="verticalClearDistances" lay-verify="required|number" autocomplete="off"
placeholder="请输入垂直净距" class="layui-input">
</div>
</div>
@ -207,7 +228,7 @@
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>杆塔间距(m):</label>
<div class="layui-input-inline">
<input type="text" name="towerSpacing" lay-verify="required|number" autocomplete="off"
<input type="text" name="towerSpacings" id="towerSpacings" lay-verify="required|number" autocomplete="off"
placeholder="请输入杆塔间距" class="layui-input">
</div>
</div>
@ -215,7 +236,7 @@
<div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>交叉角度(°):</label>
<div class="layui-input-inline">
<input type="text" name="crossAngle" lay-verify="required|number" autocomplete="off"
<input type="text" name="intersectionAngles" id="intersectionAngles" lay-verify="required|number" autocomplete="off"
placeholder="请输入交叉角度" class="layui-input">
</div>
</div>

View File

@ -20,7 +20,7 @@
<div class="layui-form-item">
<div class="layui-inline" style="padding: 0 0 0 10px;">
<div class="layui-input-inline">
<input type="text" id="towerName" name="towerName" maxlength="30" class="layui-input" autocomplete="off" placeholder="请输入杆塔号">
<input type="text" id="keyWord" name="keyWord" maxlength="30" class="layui-input" autocomplete="off" placeholder="请输入杆塔号">
</div>
</div>