From 99dc4b0baa291e88c9e460c0059583a3ab7a6b0f Mon Sep 17 00:00:00 2001
From: lSun <15893999301@qq.com>
Date: Wed, 31 Jul 2024 12:19:10 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AF=95=E9=AA=8C=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../js/basis/standard/child/testForm.js | 23 +-
.../js/basis/tools/child/addTestStandards.js | 20 +-
.../basis/tools/child/checkTestStandards.js | 654 ++++++++++++++++++
.../basic/tools/child/addTestStandards.html | 10 +-
.../basic/tools/child/checkTestStandards.html | 2 +-
5 files changed, 702 insertions(+), 7 deletions(-)
create mode 100644 src/main/resources/static/js/basis/tools/child/checkTestStandards.js
diff --git a/src/main/resources/static/js/basis/standard/child/testForm.js b/src/main/resources/static/js/basis/standard/child/testForm.js
index 7f06ce4..be325bb 100644
--- a/src/main/resources/static/js/basis/standard/child/testForm.js
+++ b/src/main/resources/static/js/basis/standard/child/testForm.js
@@ -306,11 +306,32 @@ function basisAdd() {
// 创建新的div元素
var newDiv = document.createElement('div');
newDiv.className = 'layui-inline basis';
- newDiv.innerHTML = `
+ if(count!=2){
+ if (count % 2 === 0) {
+ newDiv.innerHTML = `
+
+
+
+ `;
+ } else {
+ newDiv.innerHTML = `
`;
+ }
+ }else{
+ newDiv.innerHTML = `
+
+
+
+ `;
+ }
+ // newDiv.innerHTML = `
+ //
+ //
+ //
+ // `;
// 将新div插入到现有元素之后
var parent = devElems[count - 2].parentNode;
parent.insertBefore(newDiv, parent.querySelector('.btn-box'));
diff --git a/src/main/resources/static/js/basis/tools/child/addTestStandards.js b/src/main/resources/static/js/basis/tools/child/addTestStandards.js
index c8a36c9..cfd11a9 100644
--- a/src/main/resources/static/js/basis/tools/child/addTestStandards.js
+++ b/src/main/resources/static/js/basis/tools/child/addTestStandards.js
@@ -293,11 +293,29 @@ function basisAdd() {
// 创建新的div元素
var newDiv = document.createElement('div');
newDiv.className = 'layui-inline basis';
- newDiv.innerHTML = `
+ if(count!=2){
+ if (count % 2 === 0) {
+ newDiv.innerHTML = `
+
+
+
+ `;
+ } else {
+ newDiv.innerHTML = `
`;
+ }
+ }else{
+ newDiv.innerHTML = `
+
+
+
+ `;
+ }
+
+
// 将新div插入到现有元素之后
var parent = devElems[count - 2].parentNode;
parent.insertBefore(newDiv, parent.querySelector('.btn-box'));
diff --git a/src/main/resources/static/js/basis/tools/child/checkTestStandards.js b/src/main/resources/static/js/basis/tools/child/checkTestStandards.js
new file mode 100644
index 0000000..13606d4
--- /dev/null
+++ b/src/main/resources/static/js/basis/tools/child/checkTestStandards.js
@@ -0,0 +1,654 @@
+let form, layer, dtree, util, idParam, phoneParam, selectInput, laydate, table;
+let arr = ['background', 'web', 'mobile', 'wx'];
+let background, web, mobile, wx;
+let data = [], appResList = [];
+// 角色下拉选
+let roleList;
+let orgData;
+
+var cols = []; // 初始化为空,因为我们将动态构建表头
+function setParams(params) {
+ idParam = JSON.parse(params).id;
+ layui.config({
+ base: "../../../../js/layui-v2.6.8/dtree/", //此处路径请自行处理, 可以使用绝对路径
+ }).extend({
+ dtree: 'dtree',
+ selectInput: 'selectInput/selectInput'
+ }).use(['form', 'layer', 'dtree', 'util', 'selectInput', 'laydate', 'table'], function () {
+ layer = layui.layer;
+ laydate = layui.laydate;
+ form = layui.form;
+ util = layui.util;
+ dtree = layui.dtree;
+ selectInput = layui.selectInput;
+ table = layui.table;
+
+ laydate.render({
+ elem: '#devContractDate'
+ });
+
+ if (idParam) {
+ getTestById();
+ }
+
+ //设备类别
+ // getDicts("dev_code",'devTypeName',"","设备类别",30);
+ getDevCode()
+
+ //试验地点
+ getDicts("sy_local",'experLocal',"","试验地点",30);
+
+ //试验设备列表
+ // getDevList("devName-1" ,"","试验设备列表",30);
+
+ //设备名称
+ getDevList("experDevName" ,"","设备名称",30);
+
+ //试验依据
+ getDicts("sy_basis",'basisName-1',"","试验依据",30);
+
+ form.on('submit(formData)', function (data) {
+ saveData(data);
+ });
+
+ var ins = selectInput.getInstance("#experDevName");
+ // 监听select 选择事件
+ ins.on('itemSelect(experDevName)', function(obj) {
+ var devId=JSON.stringify(ins.getValue().value).replace(/"/g, '');
+ getEcho(devId);
+ });
+
+ });
+}
+
+//下拉选回显
+function getEcho(devId){
+ let url = dataUrl + '/sys/select/getDevices';
+ let obj = {
+ 'id':devId
+ }
+ let params = {
+ encryptedData: encryptCBC(JSON.stringify(obj))
+ }
+ ajaxRequest(url, "POST", params, false, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ console.log(result.data)
+ if(result.data.length>0){
+ $('#experDevModule').val(result.data[0].devModule);
+ $('#experDevCode').val(result.data[0].devCode);
+ $('#devContractDate').val(result.data[0].contractDate);
+ }
+ } else {
+ layer.alert(result.msg, {icon: 2})
+ }
+ }, function (xhr) {
+ error(xhr)
+ });
+}
+
+//设备类别
+function getDevCode(){
+ let url = dataUrl + '/sys/select/getDicts';
+ let obj = {
+ 'code':'dev_code'
+ }
+ let params = {
+ encryptedData: encryptCBC(JSON.stringify(obj))
+ }
+ ajaxRequest(url, "POST", params, false, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ setSelectValue(result.data, 'devCode');
+ } else {
+ layer.alert(result.msg, {icon: 2})
+ }
+ }, function (xhr) {
+ error(xhr)
+ });
+}
+
+/*下拉选表单赋值*/
+function setSelectValue(list, selectName) {
+ let html = '';
+ $.each(list, function (index, item) {
+ html += '';
+ })
+ $('#' + selectName).empty().append(html);
+ layui.form.render();
+}
+
+function getDicts(code,id,value,name,maxlength){
+ let url = dataUrl + '/sys/select/getDicts';
+ let obj = {
+ 'code':code
+ }
+ let params = {
+ encryptedData: encryptCBC(JSON.stringify(obj))
+ }
+
+ ajaxRequest(url, "POST", params, false, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ getSelect(result.data, id,value,name,maxlength);
+ } else {
+ layer.alert(result.msg, {icon: 2})
+ }
+ }, function (xhr) {
+ error(xhr)
+ });
+}
+
+//试验设备列表
+function getDevList(id,value,name,maxlength) {
+ let url = dataUrl + '/sys/select/getDevices';
+ ajaxRequest(url, "POST", null, false, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ let formattedData = result.data.map(({devName, devId}) => ({name: devName, value: devId}));
+ getSelect(formattedData, id,value,name,maxlength);
+ } else {
+ layer.alert(result.msg, {icon: 2})
+ }
+ }, function (xhr) {
+ error(xhr)
+ });
+}
+
+//新增标题
+function titleAdd() {
+ // 获取当前已有的'dev'类元素
+ var devElems = document.querySelectorAll('.info');
+ var count = devElems.length +1 ;
+
+ // 创建新的div元素
+ var newDiv = document.createElement('div');
+ newDiv.className = 'info';
+ newDiv.style.marginTop = '2%';
+ newDiv.style.display='flex';
+ newDiv.style.flexDirection='column';
+ newDiv.style.border='1px solid #ccc';
+ newDiv.innerHTML = `
+
+
+
+
+
+
+
+
+
+ `;
+ // 将新div插入到现有'dev'元素之后
+ var parent = devElems[count - 2].parentNode;
+ parent.insertBefore(newDiv, parent.querySelector('.btn-box'));
+}
+
+//删除标题
+function titleDel() {
+ // 获取所有的'dev'类元素
+ var devElems = document.querySelectorAll('.info');
+ var count = devElems.length;
+
+ // 检查是否至少保留一个'dev'元素
+ if (count > 1) {
+ // 删除最后一个'dev'元素
+ devElems[count - 1].remove();
+ } else {
+ layer.msg('至少保留一个试验设备信息');
+ }
+}
+
+
+//新增子标题
+function itemNameAdd(num) {
+ // 获取包含 input 元素的 div
+ var divElement = document.querySelector('.subtitle-'+num);
+ // 获取所有 input 元素
+ var inputs = divElement.querySelectorAll('input');
+ // 初始化最大 id 为0
+ var maxId = 0;
+ // 遍历所有 input 元素,找出最大的 id
+ inputs.forEach(function(input) {
+ var idParts = input.id.split('-');
+ if (idParts[0] === 'itemName' && !isNaN(idParts[1])) {
+ var idNum = parseInt(idParts[2], 10);
+ if (idNum > maxId) {
+ maxId = idNum;
+ }
+ }
+ });
+ // 创建一个新的 input 元素,id为下一个数字
+ var newInput = document.createElement('input');
+ newInput.type = 'text';
+ newInput.setAttribute('lay-verify', 'required');
+ newInput.className = 'layui-input-dev';
+ newInput.placeholder = '请输入名称';
+ newInput.id = 'itemName-'+num+'-' + (maxId + 1);
+ newInput.name = 'itemName-'+num+'-' + (maxId + 1);
+ newInput.maxLength='30';
+
+ // 将新的 input 元素追加到 div 中
+ divElement.appendChild(newInput);
+}
+
+//删除子标题
+function itemNameDel(num) {
+ // 获取包含 input 元素的 div
+ var divElement = document.querySelector('.subtitle-'+num);
+ // 获取所有的 input 元素
+ var inputs = divElement.querySelectorAll('input');
+ // 检查是否有超过一个 input 元素
+ if (inputs.length > 1) {
+ // 获取最后一个 input 元素
+ var lastInput = inputs[inputs.length - 1];
+ // 删除最后一个 input 元素
+ divElement.removeChild(lastInput);
+ }else{
+ layer.msg('至少保留一个子标题');
+ }
+}
+
+//新增试验设备列表
+/*function devAdd() {
+ // 获取当前已有的'dev'类元素
+ var devElems = document.querySelectorAll('.dev');
+ var count = devElems.length +1 ;
+
+ // 创建新的div元素
+ var newDiv = document.createElement('div');
+ newDiv.className = 'layui-inline dev';
+ newDiv.innerHTML = `
+
+
+ `;
+ // 将新div插入到现有'dev'元素之后
+ var parent = devElems[count - 2].parentNode;
+ parent.insertBefore(newDiv, parent.querySelector('.btn-box'));
+
+ getDevList("devName-"+count,"","试验设备列表",30);
+}*/
+
+//删除试验设备列表
+/*function devDel() {
+ // 获取所有的'dev'类元素
+ var devElems = document.querySelectorAll('.dev');
+ var count = devElems.length;
+
+ // 检查是否至少保留一个'dev'元素
+ if (count > 1) {
+ // 删除最后一个'dev'元素
+ devElems[count - 1].remove();
+ } else {
+ layer.msg('至少保留一个试验设备信息');
+ }
+}*/
+
+//新增试验依据
+function basisAdd() {
+ // 获取当前已有的类元素
+ var devElems = document.querySelectorAll('.basis');
+ var count = devElems.length+1;
+
+ // 创建新的div元素
+ var newDiv = document.createElement('div');
+ newDiv.className = 'layui-inline basis';
+ if(count!=2){
+ if (count % 2 === 0) {
+ newDiv.innerHTML = `
+
+
+
+ `;
+ } else {
+ newDiv.innerHTML = `
+
+
+
+ `;
+ }
+ }else{
+ newDiv.innerHTML = `
+
+
+
+ `;
+ }
+
+
+ // 将新div插入到现有元素之后
+ var parent = devElems[count - 2].parentNode;
+ parent.insertBefore(newDiv, parent.querySelector('.btn-box'));
+ getDicts("sy_basis","basisName-" + count,"","试验依据",30);
+}
+
+//删除试验依据
+function basisDel() {
+ // 获取所有类元素
+ var devElems = document.querySelectorAll('.basis');
+ var count = devElems.length;
+
+ if (count > 1) {
+ // 删除最后一个
+ devElems[count - 1].remove();
+ } else {
+ layer.msg('至少保留一个试验依据');
+ }
+}
+
+function saveData2() {
+ $('#formSubmit').trigger('click')
+}
+
+function saveData(data) {
+ //获取试验设备列表
+ // var devList = convertToDevList(data.field);
+
+ //试验依据列表
+ var yjList = convertToYjList(data.field);
+
+ //主要设备
+ var mainDevList = [{
+ "devTypeCode": "",
+ "devTypeName": "",
+ "experDevName": data.field["experDevName"],
+ "experDevModule": data.field["experDevModule"],
+ "experDevCode": data.field["experDevCode"],
+ "devContractDate": data.field["devContractDate"],
+ "experId": null
+ }];
+
+ //获取试验项内容列表
+ var items = convertToItems(data.field);
+
+ // 获取select元素
+ var selectElement = document.getElementById('devCode');
+ // 获取选中的option
+ var selectedOption = selectElement.options[selectElement.selectedIndex];
+ // 读取option的value和text
+ var value = selectedOption.value;
+ var text = selectedOption.text;
+
+ let paramsData = {
+ 'yjList':yjList,
+ // 'devList':devList,
+ 'mainDevList':mainDevList,
+ 'items':items,
+ }
+ let obj = {
+ 'id': data.field["id"],
+ 'devTypeCode': value,
+ 'devTypeName': text,
+ 'devModule': data.field["devModule"],
+ 'experLocalCode':'',
+ 'experLocal': data.field["experLocal"],
+ 'paramsData':paramsData
+ }
+
+
+ let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0});
+ let url = dataUrl + "/experimentStandard/addData";
+ let params = obj;
+
+ if(params.id !=""){
+ url = dataUrl + "/experimentStandard/editData";
+ }
+ params={
+ encryptedData:encryptCBC(JSON.stringify(params))
+ }
+ ajaxRequest(url, "POST", params, true, function () {
+ $('.save').addClass("layui-btn-disabled").attr("disabled", true);
+ $('.cancel').addClass("layui-btn-disabled").attr("disabled", true);
+ }, function (result) {
+ layer.close(loadingMsg); // 关闭提示层
+ if (result.code === 200) {
+ closePage(1);
+ parent.layer.msg(result.msg, {icon: 1});
+ } else {
+ layer.alert(result.msg, {icon: 2})
+ $('.save').removeClass("layui-btn-disabled").attr("disabled", false);
+ $('.cancel').removeClass("layui-btn-disabled").attr("disabled", false);
+ }
+ }, function (xhr) {
+ layer.close(loadingMsg); // 关闭提示层
+ $('.save').removeClass("layui-btn-disabled").attr("disabled", false);
+ $('.cancel').removeClass("layui-btn-disabled").attr("disabled", false);
+ error(xhr)
+ });
+}
+
+/*function convertToDevList(obj){
+ return Object.entries(obj)
+ .filter(([key, value]) => key.startsWith('devName-'))
+ .map(([key, value]) => ({
+ devTypeCode: "",
+ devTypeName: "", // 如果需要,可以在这里使用 key 或 value
+ devName: value,
+ devId: null
+ }));
+}*/
+
+function convertToYjList(obj){
+ return Object.entries(obj)
+ .filter(([key, value]) => key.startsWith('basisName-'))
+ .map(([key, value]) => ({
+ basisName: value,
+ }));
+}
+
+function convertToItems(obj){
+ var dataField = obj;
+ var items = [];
+ // 先收集所有的 experTypeName 键名,以便知道有多少个试验项
+ var experTypeNames = Object.keys(dataField).filter(key => key.startsWith('experTypeName-'));
+ var experTypeCount = experTypeNames.length;
+
+ // 预创建试验项对象,先不填充数据
+ for (let i = 0; i < experTypeCount; i++) {
+ items.push({
+ "experTypeCode": "",
+ "experTypeName": "",
+ "experNum": 0, // 将会在后面设置
+ "itemsSort": i + 1,
+ "amount": "",
+ "item": []
+ });
+ }
+
+ // 填充数据
+ experTypeNames.forEach(key => {
+ const experTypeIndex = key.split('-')[1];
+ const item = items[experTypeIndex - 1];
+ item.experTypeName = dataField[key];
+ item.amount = dataField['amount-' + experTypeIndex];
+ });
+
+ // 填充 itemName 数据
+ Object.keys(dataField).forEach(key => {
+ if (key.startsWith('itemName-')) {
+ const parts = key.split('-');
+ const experTypeIndex = parts[1];
+ const itemIndex = parts[2];
+ const itemNum = parseInt(itemIndex);
+ const itemName = dataField[key];
+
+ // 找到对应的试验项并添加试验项内容
+ items[experTypeIndex - 1].item.push({
+ "itemName": itemName,
+ "itemNum": itemNum
+ });
+ }
+ });
+
+ // 设置 experNum 为 item 数组的长度
+ items.forEach(item => {
+ item.experNum = item.item.length;
+ });
+ // 按照 itemsSort 排序
+ items.sort((a, b) => a.itemsSort - b.itemsSort);
+ return items;
+}
+
+function getTestById() {
+ let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, scrollbar: false, time: 0,});
+ let url = dataUrl + "/experimentStandard/viewData";
+ let params = {
+ id: idParam
+ }
+ params={
+ encryptedData:encryptCBC(JSON.stringify(params))
+ }
+ ajaxRequest(url, "POST", params, true, function () {
+ }, function (result) {
+ layer.close(loadingMsg); // 关闭提示层
+ if (result.code === 200) {
+ setFormData(result.data);
+ } else if (result.code === 500) {
+ layer.alert(result.msg, {icon: 2})
+ }
+ }, function (xhr) {
+ layer.close(loadingMsg); // 关闭提示层
+ error(xhr)
+ });
+}
+
+
+function setFormData(data) {
+ if (data) {
+ $('#id').val(data.id);
+ //设备类别
+ // getDicts("dev_code",'devTypeName',data.devTypeName,"设备类别",30);
+
+ $('#devCode option[value=' + data.devTypeCode + ']').attr('selected', true)
+
+ //设备规格
+ $('#devModule').val(data.devModule)
+
+ //试验地点
+ getDicts("sy_local",'experLocal',data.experLocal,"试验地点",30);
+
+ //试验设备列表
+ /*for (let i = 0; i < data.deviceVos.length; i++) {
+ var k = i+1;
+ if(k>1){
+ devAdd()
+ }
+ getDevList("devName-"+k ,data.deviceVos[i].devName,"试验设备列表",30);
+ }*/
+
+ //设备名称
+ getDevList("experDevName" ,data.mainDeviceVos[0].experDevName,"设备名称",30);
+
+ //设备型号
+ $('#experDevModule').val(data.mainDeviceVos[0].experDevModule)
+ //设备编号
+ $('#experDevCode').val(data.mainDeviceVos[0].experDevCode)
+ //合同生效日期
+ $('#devContractDate').val(data.mainDeviceVos[0].devContractDate)
+
+ //试验依据
+ for (let i = 0; i < data.basisVos.length; i++) {
+ var k = i+1;
+ if(k>1){
+ basisAdd()
+ }
+ getDicts("sy_basis",'basisName-'+k,data.basisVos[i].basisName,"试验依据",30);
+ }
+
+ //试验项信息
+ console.log(data);
+ console.log(data.configItemsVos);
+ for (let i = 0; i < data.configItemsVos.length; i++) {
+ var k = i+1;
+ //标题大于1
+ if(k>1){
+ // 新增一个标题
+ titleAdd();
+ }else{
+
+ }
+
+ // 循环判断子标题
+ for (let j = 0; j < data.configItemsVos[i].itemList.length; j++){
+ var kk = j+1;
+ //子标题大于1
+ if(kk>1){
+ //新增一个子标题
+ itemNameAdd(k);
+ }
+ }
+
+ }
+
+ // 赋值
+
+ data.configItemsVos.forEach((item, index) => {
+ const experTypeNameInput = document.getElementById(`experTypeName-${index + 1}`);
+ const amountInput = document.getElementById(`amount-${index + 1}`);
+ const subtitleContainer = document.querySelector(`.subtitle-${index + 1}`);
+
+ // 设置主标题和金额输入框的值
+ experTypeNameInput.value = item.experTypeName;
+ amountInput.value = item.amount;
+
+ // 清空现有的子标题输入框
+ while (subtitleContainer.firstChild) {
+ subtitleContainer.removeChild(subtitleContainer.firstChild);
+ }
+
+ // 添加子标题输入框
+ item.itemList.forEach((subItem, subIndex) => {
+ const inputElement = document.createElement('input');
+ inputElement.type = 'text';
+ inputElement.classList.add('layui-input-dev');
+ inputElement.setAttribute('lay-verify', 'required');
+ inputElement.setAttribute('placeholder', '请输入名称');
+ inputElement.setAttribute('name', `itemName-${index + 1}-${subIndex + 1}`);
+ inputElement.id = `itemName-${index + 1}-${subIndex + 1}`;
+ inputElement.value = subItem.itemName;
+ subtitleContainer.appendChild(inputElement);
+ });
+ });
+
+ // if(data.configItemsVos.length>1){
+ // for (let i = 0; i < data.configItemsVos.length; i++) {
+ //
+ // }
+ // }else{
+ // if(data.configItemsVos[0].itemList.length>2){
+ // for (let i = 0; i < data.configItemsVos[0].itemList.length; i++){
+ // var divElement = document.querySelector('.subtitle-1');
+ // // 创建一个新的 input 元素,id为下一个数字
+ // var newInput = document.createElement('input');
+ // newInput.type = 'text';
+ // newInput.setAttribute('lay-verify', 'required');
+ // newInput.className = 'layui-input-dev';
+ // newInput.placeholder = '请输入名称';
+ // newInput.vlue = data.configItemsVos[0].itemList[i].itemName;
+ // newInput.id = 'itemName-1'+'-' + (3 + i);
+ // newInput.name = 'itemName-1'+'-' + (3 + i);
+ // // 将新的 input 元素追加到 div 中
+ // divElement.appendChild(newInput);
+ // }
+ // }else{
+ // for(let i = 0; i < data.configItemsVos[0].itemList.length; i++){
+ //
+ // }
+ // // $('#itemName-1-1').val(data.items[0].item.)
+ // // $('#itemName-1-2').val(data.items[0].item.devContractDate)
+ // }
+ // }
+
+
+ layui.form.render();
+ }
+}
+
+// 关闭页面
+function closePage(type) {
+ let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
+ parent.layer.close(index); //再执行关闭
+ if (type === 1) {
+ parent.reloadData()
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/static/pages/basic/tools/child/addTestStandards.html b/src/main/resources/static/pages/basic/tools/child/addTestStandards.html
index cdc0bf3..e5d235d 100644
--- a/src/main/resources/static/pages/basic/tools/child/addTestStandards.html
+++ b/src/main/resources/static/pages/basic/tools/child/addTestStandards.html
@@ -137,10 +137,12 @@
-
-
-
-
+
+
+
+
+
+
diff --git a/src/main/resources/static/pages/basic/tools/child/checkTestStandards.html b/src/main/resources/static/pages/basic/tools/child/checkTestStandards.html
index c7cd452..b3d5777 100644
--- a/src/main/resources/static/pages/basic/tools/child/checkTestStandards.html
+++ b/src/main/resources/static/pages/basic/tools/child/checkTestStandards.html
@@ -179,6 +179,6 @@