基础管理-线路工程管理

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

View File

@ -19,7 +19,7 @@
<if test="highwayWidth != null ">highway_width,</if> <if test="highwayWidth != null ">highway_width,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
<if test="createUserId != null ">create_user_id,</if> <if test="createUserId != null ">create_user_id,</if>
is_actvice is_active
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="proId != null ">#{proId},</if> <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 arr = ['background', 'web', 'mobile', 'wx'];
let background, web, mobile, wx; let background, web, mobile, wx;
let data = [], appResList = []; let data = [], appResList = [], towerList = [];
let startDate, endDate; let startDate, endDate;
function setParams(params) { function setParams(params) {
console.log(params) console.log(params)
idParam = JSON.parse(params).id; 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; form = layui.form;
layer = layui.layer; layer = layui.layer;
@ -14,140 +15,200 @@ function setParams(params) {
laydate = layui.laydate; laydate = layui.laydate;
var $ = layui.jquery; var $ = layui.jquery;
console.log(idParam + "idParam") crossLineFields()
if (idParam) { if (idParam) {
getThreeSpanById(); getThreeSpanById();
} else {
// 确保默认选中跨线路并触发相关验证规则
$('.span-type-option[data-type="cross-line"]').trigger('click');
} }
// 初始化表单 // 初始化表单
form.render(); form.render();
loadTowerOptions(); loadTowerOptions();
// 跨越类型切换 $('.span-type-option').on('click', function() {
$('.span-type-option').click(function() {
$('.span-type-option').removeClass('active'); $('.span-type-option').removeClass('active');
$(this).addClass('active'); $(this).addClass('active');
let type = $(this).data('type'); 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) { switch(type) {
case 'cross-line': case 'cross-line':
$('#crossLineFields').show(); $('#crossLineFields').show();
$('input[name="upperLine"], input[name="lowerLine"]').attr('lay-verify', 'required'); $('#crossPublicFields').hide();
$('#crossRailwayFields').hide();
crossLineFields()
break; break;
case 'cross-public': case 'cross-public':
$('#crossLineFields').hide();
$('#crossPublicFields').show(); $('#crossPublicFields').show();
$('input[name="roadName"], input[name="roadLevel"]').attr('lay-verify', 'required'); $('#crossRailwayFields').hide();
crossPublicFields()
break; break;
case 'cross-railway': case 'cross-railway':
$('#crossLineFields').hide();
$('#crossPublicFields').hide();
$('#crossRailwayFields').show(); $('#crossRailwayFields').show();
$('input[name="railwayName"], input[name="railwayType"]').attr('lay-verify', 'required'); crossRailwayFields()
break; break;
} }
form.render();
}); });
// 监听杆塔选择 // 监听杆塔选择
form.on('select(towerSelect)', function(data) { form.on('select(towerSelect)', function(data) {
// 这里可以根据选择的杆塔自动填写相关信息
if(data.value) { 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({ form.verify({
required: function(value, item) { number: function(value, item) {
if(!value) { if(value && !/^-?\d+\.?\d*$/.test(value)) {
return '必填项不能为空'; 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) { form.on('submit(formData)', function(data) {
let formData = data.field; let formData = data.field;
let spanType = $('.span-type-option.active').data('type'); let currentSystem = $('.span-type-option.active').data('type');
if(currentSystem === 'cross-line'){
if(!spanType) { delete formData.verticalClearDistance;
layer.msg('请选择跨越类型', {icon: 2}); delete formData.towerSpacing;
return false; delete formData.highwayWidth;
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; console.log(currentSystem)
formData.proId=proId;
// 验证必填项
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;
}
saveData(formData); saveData(formData);
return false;
}); });
}); });
@ -155,31 +216,24 @@ function setParams(params) {
// 加载杆塔选项 // 加载杆塔选项
function loadTowerOptions() { function loadTowerOptions() {
let url = dataUrl + "/tower/list"; let url = dataUrl + "/tbTower/getTbTowerAll";
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 params = {"proId":proId};
params = {
encryptedData: encryptCBC(JSON.stringify(params))
}
ajaxRequest(url, "POST", params, true, null, function(result) { ajaxRequest(url, "POST", params, true, null, function(result) {
if(result.code === 200) { if(result.code === 200) {
// 可以根据杆塔信息自动填写一些表单项 let options = '<option value="">选择杆塔</option>';
console.log("获取到杆塔信息:", result.data); // 保存杆塔列表数据
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获取三跨信息 // 根据id获取三跨信息
function getThreeSpanById() { function getThreeSpanById() {
let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, time: 0}); let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, time: 0});
let url = dataUrl + "/threeSpan/getById"; let url = dataUrl + "/tbThreeSpan/getTbThreeSpanById";
let params = { let params = {
id: idParam, id: idParam,
encryptedData: encryptCBC(JSON.stringify({id: idParam})) encryptedData: encryptCBC(JSON.stringify({id: idParam}))
@ -222,18 +276,40 @@ function saveData2() {
// 保存数据 // 保存数据
function saveData(data) { 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 loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0});
let url = dataUrl + "/threeSpan/add"; let url = dataUrl + "/tbThreeSpan/addTbThreeSpan";
let params = data; let params = data;
if (params.id) { if (params.id) {
url = dataUrl + "/threeSpan/update"; url = dataUrl + "/tbThreeSpan/updateTbThreeSpan";
} }
console.log("三跨管理的新增修改", params); console.log("三跨管理的新增修改", params);
params = { params = {
encryptedData: encryptCBC(JSON.stringify(params)) encryptedData: encryptCBC(JSON.stringify(params))
} }
// 禁用所有输入框和按钮 // 禁用所有输入框和按钮
function disableForm() { function disableForm() {
$('input, select').attr('disabled', true); $('input, select').attr('disabled', true);
@ -257,7 +333,9 @@ function saveData(data) {
parent.layer.msg(result.msg, {icon: 1}); parent.layer.msg(result.msg, {icon: 1});
} else { } else {
layer.alert(result.msg, {icon: 2}) layer.alert(result.msg, {icon: 2})
enableForm(); setTimeout(function () {
enableForm();
},3000)
} }
}, function (xhr) { }, function (xhr) {
layer.close(loadingMsg); 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) { function closePage(type) {
let index = parent.layer.getFrameIndex(window.name); let index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index); parent.layer.close(index);
if (type === 1) { if (type === 1) {
parent.reloadData() parent.reloadData()
parent.parent.reloadData()
} }
} }

View File

@ -14,7 +14,7 @@ function setParams(params) {
function pages(pageNum, pageSize, typeNum) { function pages(pageNum, pageSize, typeNum) {
let params = getReqParams(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 () { ajaxRequest(url, "POST", params, true, function () {
}, function (result) { }, function (result) {
console.log(result); console.log(result);
@ -70,9 +70,43 @@ function initTable(dataList, limit, page) {
return (page - 1) * limit + d.LAY_INDEX; return (page - 1) * limit + d.LAY_INDEX;
} }
}, },
{field: "loginName", title: "杆塔号", unresize: true, align: "center"}, {field: "towerName", title: "杆塔号", unresize: true, align: "center"},
{field: "username", title: "跨越类型", unresize: true, align: "center"}, {field: "", title: "跨越类型", unresize: true, align: "center",
{field: "username", 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", title: "操作", unresize: true, width: 200, align: "center",
templet: function (d) { templet: function (d) {
@ -102,13 +136,14 @@ function initTable(dataList, limit, page) {
function getReqParams(page, limit, type) { function getReqParams(page, limit, type) {
let obj = {}; let obj = {};
if (type === 2) { if (type === 2) {
$('#towerName').val('') $('#keyWord').val('')
layui.form.render(); layui.form.render();
} }
obj = { obj = {
page: page + "", page: page + "",
limit: limit + "", limit: limit + "",
towerName: $('#towerName').val() proId: idParam,
keyWord: $('#keyWord').val()
}; };
console.log("杆塔管理查询条件", obj) console.log("杆塔管理查询条件", obj)
obj={ obj={
@ -121,7 +156,7 @@ function getReqParams(page, limit, type) {
function query(type) { function query(type) {
pageNum = 1; pageNum = 1;
if(type === 2){ if(type === 2){
$('#towerName').val('') $('#keyWord').val('')
layui.form.render(); layui.form.render();
} }
pages(1, limitSize,type); pages(1, limitSize,type);
@ -135,7 +170,8 @@ function reloadData() {
function addData(id) { function addData(id) {
let title = '修改' let title = '修改'
let param = { let param = {
'id': id 'id': id,
'proId':idParam
} }
openIframe2("editPro", title, "threeSpanFormTemp.html", '1000px', '625px', param); openIframe2("editPro", title, "threeSpanFormTemp.html", '1000px', '625px', param);
} }
@ -143,7 +179,8 @@ function addData(id) {
function addDataThreeSpan(id) { function addDataThreeSpan(id) {
let title = '新增' let title = '新增'
let param = { let param = {
'id': id 'id': id,
'proId':idParam
} }
openIframe2("addDataThreeSpan", title, "threeSpanFormTemp.html", '1000px', '625px', param); openIframe2("addDataThreeSpan", title, "threeSpanFormTemp.html", '1000px', '625px', param);
} }
@ -154,7 +191,7 @@ function delData(id) {
move: false move: false
}, function () { }, function () {
let loadingMsg = layer.msg('数据删除中,请稍候...', {icon: 16, scrollbar: false, time: 0}); let loadingMsg = layer.msg('数据删除中,请稍候...', {icon: 16, scrollbar: false, time: 0});
let url = dataUrl + "/users/delById"; let url = dataUrl + "/tbThreeSpan/delTbThreeSpan";
let params = { let params = {
'id': id 'id': id
} }
@ -165,10 +202,11 @@ function delData(id) {
}, function (result) { }, function (result) {
layer.close(loadingMsg); // 关闭提示层 layer.close(loadingMsg); // 关闭提示层
if (result.code === 200) { if (result.code === 200) {
parent.layer.msg(result.msg, {icon: 1}) parent.layer.msg(result.data, {icon: 1})
parent.reloadData()
query() query()
} else if (result.code === 500) { } else if (result.code === 500) {
layer.alert(result.msg, {icon: 2}) layer.alert(result.data, {icon: 2})
} }
}, function (xhr) { }, function (xhr) {
layer.close(loadingMsg); // 关闭提示层 layer.close(loadingMsg); // 关闭提示层
@ -178,5 +216,32 @@ function delData(id) {
} }
function exportThreeSpan(){ 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; border-color: #409eff;
color: #409eff; color: #409eff;
} }
.layui-form-mid{
padding: 0px !important;
}
</style> </style>
</head> </head>
<body> <body>
<div id="main-box"> <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"> <input type="hidden" name="id" id="id">
<div class="layui-form-item" style="margin-top: 2%;"> <div class="layui-form-item" style="margin-top: 2%;">
@ -59,21 +62,28 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>杆塔:</label> <label class="layui-form-label"><span class="required-mark">*</span>杆塔:</label>
<div class="layui-input-inline"> <div class="layui-input-inline" style="width: 30%;">
<select name="towerId" lay-verify="required" lay-filter="towerSelect"> <select id="towerId" name="towerId" lay-verify="required" lay-filter="towerSelect">
<option value="">选择项目</option>
</select> </select>
</div> </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>
<!-- 跨线路输入框 --> <!-- 跨线路字段 -->
<div id="crossLineFields"> <div id="crossLineFields" >
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>上层线路:</label> <label class="layui-form-label"><span class="required-mark">*</span>上层线路:</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="upperLine" lay-verify="required" autocomplete="off" <input type="text" name="upperLine" lay-verify="required" autocomplete="off"
placeholder="请输入上层线路" class="layui-input"> placeholder="请输入上层线路" class="layui-input" maxlength="30">
</div> </div>
</div> </div>
@ -81,23 +91,26 @@
<label class="layui-form-label"><span class="required-mark">*</span>下层线路:</label> <label class="layui-form-label"><span class="required-mark">*</span>下层线路:</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="lowerLine" lay-verify="required" autocomplete="off" <input type="text" name="lowerLine" lay-verify="required" autocomplete="off"
placeholder="请输入下层线路" class="layui-input"> placeholder="请输入下层线路" class="layui-input" maxlength="30">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>交叉角度:</label> <label class="layui-form-label"><span class="required-mark">*</span>交叉角度:</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="crossAngle" lay-verify="required|number" autocomplete="off" <input type="text" name="intersectionAngle"
placeholder="请输入交叉角度" class="layui-input"> lay-verify="required|number"
autocomplete="off"
placeholder="请输入交叉角度"
class="layui-input" maxlength="30">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>垂直距离(m):</label> <label class="layui-form-label"><span class="required-mark">*</span>垂直距离(m):</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="verticalDistance" lay-verify="required|number" autocomplete="off" <input type="text" name="verticalDistance" lay-verify="required|number" autocomplete="off"
placeholder="请输入垂直距离" class="layui-input"> placeholder="请输入垂直距离" class="layui-input" maxlength="30">
</div> </div>
</div> </div>
@ -105,82 +118,90 @@
<label class="layui-form-label"><span class="required-mark">*</span>安全裕度(°):</label> <label class="layui-form-label"><span class="required-mark">*</span>安全裕度(°):</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="safetyMargin" lay-verify="required|number" autocomplete="off" <input type="text" name="safetyMargin" lay-verify="required|number" autocomplete="off"
placeholder="请输入安全裕度" class="layui-input"> placeholder="请输入安全裕度" class="layui-input" maxlength="30">
</div> </div>
</div> </div>
<!-- 跨越杆塔经纬度信息 --> <!-- 跨越杆塔经纬度信息 -->
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">跨越杆塔信息:</label> <label class="layui-form-label">跨越杆塔信息</label>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label> <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" <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>
<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" <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>
<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>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label> <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" <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>
<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" <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>
<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>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label> <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" <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>
<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" <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>
<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>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">跨越杆塔经纬度:</label> <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" <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>
<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" <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>
<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> </div>
<!-- 跨公路输入框 --> <!-- 跨公路字段 -->
<div id="crossPublicFields" style="display: none;"> <div id="crossPublicFields" style="display: none;">
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>垂直净距(m):</label> <label class="layui-form-label"><span class="required-mark">*</span>垂直净距(m):</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="verticalClearance" lay-verify="required|number" autocomplete="off" <input type="text" name="verticalClearDistance" id="verticalClearDistance" autocomplete="off"
placeholder="请输入垂直净距" class="layui-input"> placeholder="请输入垂直净距" class="layui-input" lay-verify="required|number">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>杆塔间距(m):</label> <label class="layui-form-label"><span class="required-mark">*</span>杆塔间距(m):</label>
<div class="layui-input-inline"> <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"> placeholder="请输入杆塔间距" class="layui-input">
</div> </div>
</div> </div>
@ -188,18 +209,18 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>公路宽度(m):</label> <label class="layui-form-label"><span class="required-mark">*</span>公路宽度(m):</label>
<div class="layui-input-inline"> <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"> placeholder="请输入公路宽度" class="layui-input">
</div> </div>
</div> </div>
</div> </div>
<!-- 跨铁路输入框 --> <!-- 跨铁路字段 -->
<div id="crossRailwayFields" style="display: none;"> <div id="crossRailwayFields" style="display: none;">
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>垂直净距(m):</label> <label class="layui-form-label"><span class="required-mark">*</span>垂直净距(m):</label>
<div class="layui-input-inline"> <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"> placeholder="请输入垂直净距" class="layui-input">
</div> </div>
</div> </div>
@ -207,7 +228,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>杆塔间距(m):</label> <label class="layui-form-label"><span class="required-mark">*</span>杆塔间距(m):</label>
<div class="layui-input-inline"> <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"> placeholder="请输入杆塔间距" class="layui-input">
</div> </div>
</div> </div>
@ -215,7 +236,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label"><span class="required-mark">*</span>交叉角度(°):</label> <label class="layui-form-label"><span class="required-mark">*</span>交叉角度(°):</label>
<div class="layui-input-inline"> <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"> placeholder="请输入交叉角度" class="layui-input">
</div> </div>
</div> </div>

View File

@ -20,7 +20,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline" style="padding: 0 0 0 10px;"> <div class="layui-inline" style="padding: 0 0 0 10px;">
<div class="layui-input-inline"> <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>
</div> </div>