From 11d850275e53fbd081e835c1850fc3258af038d2 Mon Sep 17 00:00:00 2001 From: lSun <15893999301@qq.com> Date: Sun, 27 Apr 2025 10:44:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=AE=A1=E7=90=86-=E7=BA=BF?= =?UTF-8?q?=E8=B7=AF=E5=B7=A5=E7=A8=8B=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/entity/dto/DistinctDto.java | 2 + .../system/controller/DistinctController.java | 15 ++ .../system/dao/DistinctDao.java | 2 + .../system/service/DistinctService.java | 2 + .../service/impl/DistinctServiceImpl.java | 5 + .../bonus/digitalSignage/system/vo/Org.java | 2 + .../mappers/system/DistinctMapper.xml | 4 + .../resources/mappers/system/UserMapper.xml | 3 +- .../lineManagement/child/lineFormTemp.js | 156 ++++++++++++++++-- .../js/basic/lineManagement/lineList.js | 86 ++++++++-- src/main/resources/static/js/select.js | 30 ++++ .../lineManagement/child/lineFormTemp.html | 45 ++--- .../pages/basic/lineManagement/lineList.html | 7 +- 13 files changed, 298 insertions(+), 61 deletions(-) diff --git a/src/main/java/com/bonus/digitalSignage/base/entity/dto/DistinctDto.java b/src/main/java/com/bonus/digitalSignage/base/entity/dto/DistinctDto.java index 8328a3f..bfee1fb 100644 --- a/src/main/java/com/bonus/digitalSignage/base/entity/dto/DistinctDto.java +++ b/src/main/java/com/bonus/digitalSignage/base/entity/dto/DistinctDto.java @@ -10,4 +10,6 @@ import lombok.Data; public class DistinctDto { private String keyWord; + + private String dictCode; } diff --git a/src/main/java/com/bonus/digitalSignage/system/controller/DistinctController.java b/src/main/java/com/bonus/digitalSignage/system/controller/DistinctController.java index 674cb2a..d73a0d0 100644 --- a/src/main/java/com/bonus/digitalSignage/system/controller/DistinctController.java +++ b/src/main/java/com/bonus/digitalSignage/system/controller/DistinctController.java @@ -149,4 +149,19 @@ public class DistinctController { } return ServerResponse.createSuccess(list); } + + + @PostMapping(value = "getProjectDepartment") + @DecryptAndVerify(decryptedClass = DistinctDto.class)//加解密统一管理 + @LogAnnotation(operModul = "系统管理-字典管理", operation = "查询所属项目部列表", operDesc = "业务级事件", operType = "查询") + public ServerResponse getProjectDepartment(EncryptedReq dto) { + List list = new ArrayList(); + try { + list = service.getProjectDepartment(dto.getData()); + } catch (Exception e) { + log.error("字典列表", e); + } + return ServerResponse.createSuccess(list); + } + } diff --git a/src/main/java/com/bonus/digitalSignage/system/dao/DistinctDao.java b/src/main/java/com/bonus/digitalSignage/system/dao/DistinctDao.java index 464f885..dd50ecc 100644 --- a/src/main/java/com/bonus/digitalSignage/system/dao/DistinctDao.java +++ b/src/main/java/com/bonus/digitalSignage/system/dao/DistinctDao.java @@ -66,4 +66,6 @@ public interface DistinctDao { int isHasChild(String id); List getDistinctListByParentCode(DistinctDto data); + + List getProjectDepartment(DistinctDto data); } diff --git a/src/main/java/com/bonus/digitalSignage/system/service/DistinctService.java b/src/main/java/com/bonus/digitalSignage/system/service/DistinctService.java index fd2f3ef..95bea6c 100644 --- a/src/main/java/com/bonus/digitalSignage/system/service/DistinctService.java +++ b/src/main/java/com/bonus/digitalSignage/system/service/DistinctService.java @@ -67,4 +67,6 @@ public interface DistinctService { * @date 2023/11/1 15:06 */ List getDistinctListByParentCode(DistinctDto data); + + List getProjectDepartment(DistinctDto data); } diff --git a/src/main/java/com/bonus/digitalSignage/system/service/impl/DistinctServiceImpl.java b/src/main/java/com/bonus/digitalSignage/system/service/impl/DistinctServiceImpl.java index e13e206..94bd3cf 100644 --- a/src/main/java/com/bonus/digitalSignage/system/service/impl/DistinctServiceImpl.java +++ b/src/main/java/com/bonus/digitalSignage/system/service/impl/DistinctServiceImpl.java @@ -142,6 +142,11 @@ public class DistinctServiceImpl implements DistinctService { return mapper.getDistinctListByParentCode(data); } + @Override + public List getProjectDepartment(DistinctDto data) { + return mapper.getProjectDepartment(data); + } + @Override public ServerResponse isRepeat(EncryptedReq vo) { try { diff --git a/src/main/java/com/bonus/digitalSignage/system/vo/Org.java b/src/main/java/com/bonus/digitalSignage/system/vo/Org.java index 393595f..cbc8503 100644 --- a/src/main/java/com/bonus/digitalSignage/system/vo/Org.java +++ b/src/main/java/com/bonus/digitalSignage/system/vo/Org.java @@ -13,4 +13,6 @@ public class Org{ private String title;//组织机构名称 private String checkArr;//组织机构名称 + private String level;//组织机构名称 + } diff --git a/src/main/resources/mappers/system/DistinctMapper.xml b/src/main/resources/mappers/system/DistinctMapper.xml index c262855..cda0f54 100644 --- a/src/main/resources/mappers/system/DistinctMapper.xml +++ b/src/main/resources/mappers/system/DistinctMapper.xml @@ -81,4 +81,8 @@ ORDER BY sd.dict_sort + + diff --git a/src/main/resources/mappers/system/UserMapper.xml b/src/main/resources/mappers/system/UserMapper.xml index 1d8fd87..45d14e9 100644 --- a/src/main/resources/mappers/system/UserMapper.xml +++ b/src/main/resources/mappers/system/UserMapper.xml @@ -175,7 +175,8 @@ select id, depart_name as title, parent_id as parentId, - '0' AS checkArr + '0' AS checkArr, + level from tb_depart where is_active = '1' diff --git a/src/main/resources/static/js/basic/lineManagement/child/lineFormTemp.js b/src/main/resources/static/js/basic/lineManagement/child/lineFormTemp.js index 9b8b22a..9563a7c 100644 --- a/src/main/resources/static/js/basic/lineManagement/child/lineFormTemp.js +++ b/src/main/resources/static/js/basic/lineManagement/child/lineFormTemp.js @@ -1,32 +1,71 @@ -let form, layer, util,laydate, idParam, phoneParam; +let form, layer, util, laydate, idParam, phoneParam; let arr = ['background', 'web', 'mobile', 'wx']; let background, web, mobile, wx; let data = [], appResList = []; let startDate, endDate; + function setParams(params) { console.log(params) idParam = JSON.parse(params).id; - layui.use(['form', 'layer', 'util', 'laydate'], function () { + layui.config({ + base: "../../../../js/layui-v2.6.8/" + }).extend({ + dtree: 'dtree/dtree', + formSelects: 'formSelects-v4', + }).use(['form', 'layer', 'dtree', 'util', 'laydate', 'formSelects'], function () { form = layui.form; layer = layui.layer; util = layui.util; + formSelects = layui.formSelects; + dtree = layui.dtree; laydate = layui.laydate; var $ = layui.jquery; + // 添加自定义验证规则 + form.verify({ + // 正数验证(线路长度) + positiveNumber: function (value, item) { + if (value) { + if (!/^[0-9]+\.?[0-9]*$/.test(value)) { + return '请输入正数'; + } + if (parseFloat(value) <= 0) { + return '请输入大于0的数'; + } + } + }, + // 经度验证 + longitude: function (value, item) { + if (value) { + 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) { + if (!/^[\-\+]?((90(\.0{1,6})?)|(([0-8]?\d)(\.\d{1,6})?))$/.test(value)) { + return '请输入正确的纬度(-90.0~+90.0)'; + } + } + } + }); // 初始化日期选择器 laydate.render({ - elem: '#plannedStartTime', - done: function(value, date){ + elem: '#planStartTime', + done: function (value, date) { startDate = value; validateDates(); } }); laydate.render({ - elem: '#plannedEndTime', - done: function(value, date){ + elem: '#planEndTime', + done: function (value, date) { endDate = value; validateDates(); } @@ -39,9 +78,14 @@ function setParams(params) { if (idParam) { getUserById(); } + form.render("select");//重新渲染页面checkbox控件 form.on('submit(formData)', function (data) { data.field.id = $('#id').val(); + console.log(data) + if (!data.field.orgId_select_nodeId) { + return layer.alert("请选择项目部!", {icon: 2}) + } saveData(data); }); @@ -54,7 +98,7 @@ function validateDates() { var start = new Date(startDate); var end = new Date(endDate); if (start > end) { - $("#plannedEndTime").val("") + $("#planEndTime").val("") layer.msg("开始日期不能大于结束日期") return false; } @@ -64,16 +108,20 @@ function validateDates() { // 初始化下拉选项 function initSelects() { - // 这里可以通过AJAX获取下拉选项数据 - // 项目部下拉选项 - // 工程状态下拉选项 + getOrgTree(); + + let voltageLevelData = getDistinctListByParentCode({dictCode: "voltage_level"}); + setSelectValueNameCode(voltageLevelData, "voltageLevel", "请选择电压等级") + + let proStatusData = getDistinctListByParentCode({dictCode: "pro_status"}); + setSelectValueNameCode(proStatusData, "proStatus", "请选择状态") } // 根据id获取用户信息 function getUserById() { let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, scrollbar: true, time: 0,}); setTimeout(() => { - let url = dataUrl + "/users/getById"; + let url = dataUrl + "/tbProject/getTbProjectById"; let params = { id: idParam } @@ -100,11 +148,21 @@ function getUserById() { function setFormData(data) { console.log("data:", data) if (data) { - $("#password").removeAttr("lay-verify"); - $("#pwd").css("display", "none"); $('#id').val(data.id) - $('#username').val(data.username) - $('#loginName').val(data.loginName) + $('#proName').val(data.proName) + $('#voltageLevel').val(data.voltageLevel) + $('#lineLength').val(data.lineLength) + $('#planStartTime').val(data.planStartTime) + $('#planEndTime').val(data.planEndTime) + + $('#lon').val(data.lon) + $('#lat').val(data.lat) + $('#address').val(data.address) + $('#proStatus').val(data.proStatus) + + $('#orgId').val(data.departId) + dtree.dataInit("orgId", data.departId); + dtree.selectVal("orgId"); layui.form.render(); } } @@ -116,12 +174,13 @@ function saveData2() { // 保存数据 function saveData(data) { let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0}); - let url = dataUrl + "/users/addTemp"; + let url = dataUrl + "/tbProject/addTbProject"; let params = data.field; if (params.id != "") { - url = dataUrl + "/users/update"; + url = dataUrl + "/tbProject/updateTbProject"; } - console.log("线路工程管理的新增修改",params) + params.departId = params.orgId_select_nodeId; + console.log("线路工程管理的新增修改", params) params = { encryptedData: encryptCBC(JSON.stringify(params)) } @@ -146,6 +205,67 @@ function saveData(data) { }); } +function getOrgTree() { + let data = []; + let url = dataUrl + '/users/getOrg'; + ajaxRequest(url, "POST", null, false, function () { + }, function (result) { + if (result.code === 200) { + console.log(result, "getOrgTree") + data = result.data; + data.forEach(node => { + if (node.level !== "3") { + node.disabled = true; // 标记为不可选中 + } + }); + setOrgTree(data) + } else { + layer.alert(result.msg, {icon: 2}) + } + }, function (xhr) { + error(xhr) + }); + return data; +} + +function setOrgTree(data) { + orgTree = dtree.renderSelect({ + elem: "#orgId", + data: data, + dataFormat: "list", + skin: "laySimple", + line: true, // 显示树线 + checkbar: false, //开启复选框 + done: function (data, url, first) { + console.log($('#orgId').val()) + if (first) { + var params = dtree.dataInit("orgId", $('#orgId').val()); + var selectParam = dtree.selectVal("orgId"); + console.log(params) + } + }, + formatter: { + title: function (data) { + // 非第三层的节点显示为灰色 + if (data.level != "3") { + return '' + + data.title + ''; + } + return data.title; + } + }, + nodeClick: function (param) { + alert(param) + // 如果节点不是第三层,则阻止选择 + if (param.level !== "3") { + layer.msg("只能选择第三层节点!", { icon: 0 }); + return false; // 阻止选择 + } + return true; // 允许选择 + } + }); +} + // 关闭页面 function closePage(type) { let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 diff --git a/src/main/resources/static/js/basic/lineManagement/lineList.js b/src/main/resources/static/js/basic/lineManagement/lineList.js index 0a7f9dd..7deacab 100644 --- a/src/main/resources/static/js/basic/lineManagement/lineList.js +++ b/src/main/resources/static/js/basic/lineManagement/lineList.js @@ -6,12 +6,16 @@ layui.use(['form', 'layer', 'table', 'laydate'], function () { layer = layui.layer; table = layui.table; layui.form.render(); + + let proStatusData = getDistinctListByParentCode({dictCode: "pro_status"}); + setSelectValueNameCode(proStatusData, "proStatus","请选择状态") + pages(1, 10, 1); }) function pages(pageNum, pageSize, typeNum) { let params = getReqParams(pageNum, pageSize, typeNum); - let url = dataUrl + "/users/getList" + let url = dataUrl + "/tbProject/getTbProjectList" ajaxRequest(url, "POST", params, true, function () { }, function (result) { console.log(result); @@ -67,29 +71,46 @@ function initTable(dataList, limit, page) { return (page - 1) * limit + d.LAY_INDEX; } }, - {field: "loginName", title: "所属项目部", width: 180, unresize: true, align: "center"}, - {field: "username", title: "线路工程名称",width: 180, unresize: true, align: "center"}, - {field: "username", title: "电压等级",width: 180, unresize: true, align: "center"}, - {field: "roleName", title: "线路长度(km)",width: 200, unresize: true, align: "center"}, - {field: "createTime", title: "计划起止时间",width: 180, unresize: true, align: "center"}, - {field: "deptName", title: "工程地址 ",width: 180, unresize: true, align: "center"}, - {field: "deptName", title: "工程状态 ",width: 180, unresize: true, align: "center"}, + {field: "departName", title: "所属项目部", width: 180, unresize: true, align: "center"}, + {field: "proName", title: "线路工程名称",width: 180, unresize: true, align: "center"}, + {field: "voltageLevel", title: "电压等级",width: 180, unresize: true, align: "center"}, + {field: "lineLength", title: "线路长度(km)",width: 200, unresize: true, align: "center"}, + {field: "", title: "计划起止时间",width: 180, unresize: true, align: "center", + templet: function (d) { + let html = d.planStartTime + "~" + d.planEndTime; + return html; + } + }, + {field: "address", title: "工程地址 ",width: 180, unresize: true, align: "center"}, + {field: "proStatus", title: "工程状态 ",width: 180, unresize: true, align: "center"}, {field: "", title: "杆塔数量 ",width: 130, unresize: true, align: "center", templet: function (d) { - let html = "0"; + let num = 0; + if (d.tbTowerVoList) { + num = d.tbTowerVoList.length; + } + let html = ""+num+""; return html; } }, {field: "", title: "“三跨”数量 ",width: 150, unresize: true, align: "center", templet: function (d) { - let html = "1"; + let num = 0; + if (d.tbThreeSpanVoList) { + num = d.tbThreeSpanVoList.length; + } + let html = ""+num+""; return html; } }, { field: "", title: "索道数量 ",width: 130, unresize: true, align: "center", templet: function (d) { - let html = "12"; + let num = 0; + if (d.tbCablewaTransVoList) { + num = d.tbCablewaTransVoList.length; + } + let html = ""+num+""; return html; } }, @@ -128,7 +149,7 @@ function getReqParams(page, limit, type) { if (type === 2) { $('#departName').val(''); $('#proName').val(''); - $('#state').val(''); + $('#proStatus').val(''); layui.form.render(); } obj = { @@ -136,7 +157,7 @@ function getReqParams(page, limit, type) { limit: limit + "", departName: $('#departName').val(), proName: $('#proName').val(), - state: $('#state').val(), + proStatus: $('#proStatus').val(), }; console.log("线路工程管理查询条件", obj) obj={ @@ -151,7 +172,7 @@ function query(type) { if(type === 2){ $('#departName').val(''); $('#proName').val(''); - $('#state').val(''); + $('#proStatus').val(''); layui.form.render(); } pages(1, limitSize,type); @@ -184,7 +205,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 + "/tbProject/delTbProject"; let params = { 'id': id } @@ -195,10 +216,10 @@ 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}) query() } else if (result.code === 500) { - layer.alert(result.msg, {icon: 2}) + layer.alert(result.data, {icon: 2}) } }, function (xhr) { layer.close(loadingMsg); // 关闭提示层 @@ -261,5 +282,34 @@ function addRopeway(id){ } function exportPro(){ - alert("导出") + let obj = { + departName: $('#departName').val(), + proName: $('#proName').val(), + proStatus: $('#proStatus').val(), + } + let params = { + encryptedData: encryptCBC(JSON.stringify(obj)) + } + let loadingMsg = layer.msg("数据导出中,请稍候...", {icon: 16, scrollbar: false, time: 0,}); + let url = dataUrl + "/tbProject/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(); } \ No newline at end of file diff --git a/src/main/resources/static/js/select.js b/src/main/resources/static/js/select.js index bf9e3bd..db83a0f 100644 --- a/src/main/resources/static/js/select.js +++ b/src/main/resources/static/js/select.js @@ -296,4 +296,34 @@ function getCurrentDate() { var month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要+1 var day = String(today.getDate()).padStart(2, '0'); // 获取日 return `${year}-${month}-${day}`; +} + + +// 字典-下拉选 +function getDistinctListByParentCode(obj) { + let data = []; + let url = dataUrl + "/sys/distinct/getDistinctListByParentCode" + let params = { + encryptedData: encryptCBC(JSON.stringify(obj)) + } + ajaxRequest(url, "POST", params, false, function () { + }, function (result) { + if (result.status === 200) { + data = result.data; + } else if (result.status === 500) { + layer.alert(result.msg, {icon: 2}) + } + }, function (xhr) { + error(xhr) + }); + return data; +} + +function setSelectValueNameCode(list, selectName, placeholder) { + let html = ''; + $.each(list, function (index, item) { + html += ''; + }) + $('#' + selectName).empty().append(html); + layui.form.render(); } \ No newline at end of file diff --git a/src/main/resources/static/pages/basic/lineManagement/child/lineFormTemp.html b/src/main/resources/static/pages/basic/lineManagement/child/lineFormTemp.html index 1d2c139..5d7c681 100644 --- a/src/main/resources/static/pages/basic/lineManagement/child/lineFormTemp.html +++ b/src/main/resources/static/pages/basic/lineManagement/child/lineFormTemp.html @@ -60,6 +60,9 @@ color: red; margin-right: 5px; } + .dtree-select{ + width: 34.8%; + } @@ -68,18 +71,16 @@
-
+
*项目部:
- +
    *工程名称:
    -
    @@ -89,15 +90,17 @@
    电压等级:
    - +
    线路长度(km):
    - +
    @@ -106,14 +109,14 @@
    计划开始时间:
    -
    计划完工时间:
    -
    @@ -121,17 +124,19 @@
    -
    工程程度:
    +
    工程经度:
    - +
    -
    工程结果:
    +
    工程纬度:
    - +
    @@ -140,15 +145,15 @@
    工程地址:
    -
    工程状态:
    - +
    diff --git a/src/main/resources/static/pages/basic/lineManagement/lineList.html b/src/main/resources/static/pages/basic/lineManagement/lineList.html index 9653bba..31b9efc 100644 --- a/src/main/resources/static/pages/basic/lineManagement/lineList.html +++ b/src/main/resources/static/pages/basic/lineManagement/lineList.html @@ -11,6 +11,7 @@ + 线路工程管理 @@ -28,10 +29,8 @@
    - +