건설현장 입력 여러사업 등록 처리, 사업명 중복 체크 보완
parent
8004401036
commit
f310066eee
|
|
@ -92,7 +92,7 @@ public class ProjectListController {
|
||||||
jsonObject.put("resultCode", "The name already exists.");
|
jsonObject.put("resultCode", "The name already exists.");
|
||||||
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 2");
|
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 2");
|
||||||
}
|
}
|
||||||
} else if( false && 0 < arrConstNameByProjectNameFromTempConstructSiteInfo.size() ) {
|
} else if( 0 < arrConstNameByProjectNameFromTempConstructSiteInfo.size() ) {
|
||||||
jsonObject.put("result", "false");
|
jsonObject.put("result", "false");
|
||||||
jsonObject.put("resultCode", "The name already exists.");
|
jsonObject.put("resultCode", "The name already exists.");
|
||||||
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 3");
|
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 3");
|
||||||
|
|
|
||||||
|
|
@ -312,110 +312,130 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
||||||
|
|
||||||
console.log(tableDataElements);
|
console.log(tableDataElements);
|
||||||
|
|
||||||
var dataIndexValue;
|
|
||||||
|
|
||||||
var jsonData = new Array();
|
|
||||||
for (var i = 0; i < tableDataElements.length; i++) {
|
for (var i = 0; i < tableDataElements.length; i++) {
|
||||||
|
|
||||||
let duplChkEle = document.querySelectorAll('.input-box[id*="const-name"]'); // 엑셀양식 로드시 사업명 중복 체크해야 하는 대상 엘리먼트
|
let duplChkEle = tableDataElements[i].querySelector('.input-box[id*="const-name"]') // 엑셀양식 로드시 사업명 중복 체크해야 하는 대상 엘리먼트
|
||||||
for (let i = 0 ; i < duplChkEle.length; i++) {
|
let result = projNmDuplChkResult(duplChkEle)
|
||||||
duplicateCheckProjectName(duplChkEle[i])
|
if (result.result == 'false') {
|
||||||
}
|
duplChkEle.focus();
|
||||||
|
shakeAndHighlight(duplChkEle, result.msg)
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
// 중복체크 통과시 border 초기화
|
||||||
|
|
||||||
var jsonItem = {};
|
|
||||||
dataIndexValue = tableDataElements[i].getAttribute('data-index');
|
|
||||||
|
|
||||||
// 사업명
|
|
||||||
var constNameEle = document.getElementById('const-name-' + dataIndexValue);
|
|
||||||
if (constNameEle) {
|
|
||||||
jsonItem.constName = constNameEle.value;
|
|
||||||
}
|
}
|
||||||
// 사업기간 - 시작
|
|
||||||
var constStartDateEle = document.getElementById('const-start-date-' + dataIndexValue);
|
|
||||||
if (constStartDateEle) {
|
|
||||||
jsonItem.constStartDate = constStartDateEle.value;
|
|
||||||
}
|
|
||||||
// 사업기간 - 종료
|
|
||||||
var constEndDateEle = document.getElementById('const-end-date-' + dataIndexValue);
|
|
||||||
if (constEndDateEle) {
|
|
||||||
jsonItem.constEndDate = constEndDateEle.value;
|
|
||||||
}
|
|
||||||
// 사업단계
|
|
||||||
var constStateCodeEle = document.getElementById('const-state-code-' + dataIndexValue);
|
|
||||||
if (constStateCodeEle) {
|
|
||||||
jsonItem.constStateCode = constStateCodeEle.value;
|
|
||||||
}
|
|
||||||
// 발주기관 - 담당부서
|
|
||||||
var masterCompanyDeptEle = document.getElementById('master-company-dept-' + dataIndexValue);
|
|
||||||
if (masterCompanyDeptEle) {
|
|
||||||
jsonItem.masterCompanyDept = masterCompanyDeptEle.value;
|
|
||||||
}
|
|
||||||
// 발주기관 - 담당자
|
|
||||||
var masterCompanyAdminEle = document.getElementById('master-company-admin-' + dataIndexValue);
|
|
||||||
if (masterCompanyAdminEle) {
|
|
||||||
jsonItem.masterCompanyAdmin = masterCompanyAdminEle.value;
|
|
||||||
}
|
|
||||||
// 발주기관 - 담당자 연락처
|
|
||||||
var masterCompanyTelEle = document.getElementById('master-company-tel-' + dataIndexValue);
|
|
||||||
if (masterCompanyTelEle) {
|
|
||||||
jsonItem.masterCompanyTel = masterCompanyTelEle.value;
|
|
||||||
}
|
|
||||||
// 건설사 - 건설사명
|
|
||||||
var constCompanyNameEle = document.getElementById('const-company-dept-' + dataIndexValue);
|
|
||||||
if (constCompanyNameEle) {
|
|
||||||
jsonItem.constCompanyName = constCompanyNameEle.value;
|
|
||||||
}
|
|
||||||
// 건설사 - 담당자
|
|
||||||
var constCompanyAdminEle = document.getElementById('const-company-admin-' + dataIndexValue);
|
|
||||||
if (constCompanyAdminEle) {
|
|
||||||
jsonItem.constCompanyAdmin = constCompanyAdminEle.value;
|
|
||||||
}
|
|
||||||
// 건설사 - 담당자 연락처
|
|
||||||
var constCompanyTelEle = document.getElementById('const-company-tel-' + dataIndexValue);
|
|
||||||
if (constCompanyTelEle) {
|
|
||||||
jsonItem.constCompanyTel = constCompanyTelEle.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cid) {
|
|
||||||
jsonItem.cid=cid;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( isValid(dataIndexValue) == false ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
jsonData.push(jsonItem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 사업명 중복 체크 통과시 등록처리호출
|
||||||
|
addDrillingInput(tableDataElements)
|
||||||
|
|
||||||
if (cid) {
|
});
|
||||||
xhr.open('POST', '/drilling/input/modify.do', true);
|
|
||||||
} else {
|
});
|
||||||
xhr.open('POST', '/drilling/input/add.do', true);
|
|
||||||
|
// 사업 등록 처리
|
||||||
|
function addDrillingInput(tableDataElements) {
|
||||||
|
const cid = getQueryString('CID');
|
||||||
|
var dataIndexValue;
|
||||||
|
|
||||||
|
var jsonData = new Array();
|
||||||
|
for (var i = 0; i < tableDataElements.length; i++) {
|
||||||
|
|
||||||
|
var jsonItem = {};
|
||||||
|
dataIndexValue = tableDataElements[i].getAttribute('data-index');
|
||||||
|
|
||||||
|
// 사업명
|
||||||
|
var constNameEle = document.getElementById('const-name-' + dataIndexValue);
|
||||||
|
if (constNameEle) {
|
||||||
|
jsonItem.constName = constNameEle.value;
|
||||||
|
}
|
||||||
|
// 사업기간 - 시작
|
||||||
|
var constStartDateEle = document.getElementById('const-start-date-' + dataIndexValue);
|
||||||
|
if (constStartDateEle) {
|
||||||
|
jsonItem.constStartDate = constStartDateEle.value;
|
||||||
|
}
|
||||||
|
// 사업기간 - 종료
|
||||||
|
var constEndDateEle = document.getElementById('const-end-date-' + dataIndexValue);
|
||||||
|
if (constEndDateEle) {
|
||||||
|
jsonItem.constEndDate = constEndDateEle.value;
|
||||||
|
}
|
||||||
|
// 사업단계
|
||||||
|
var constStateCodeEle = document.getElementById('const-state-code-' + dataIndexValue);
|
||||||
|
if (constStateCodeEle) {
|
||||||
|
jsonItem.constStateCode = constStateCodeEle.value;
|
||||||
|
}
|
||||||
|
// 발주기관 - 담당부서
|
||||||
|
var masterCompanyDeptEle = document.getElementById('master-company-dept-' + dataIndexValue);
|
||||||
|
if (masterCompanyDeptEle) {
|
||||||
|
jsonItem.masterCompanyDept = masterCompanyDeptEle.value;
|
||||||
|
}
|
||||||
|
// 발주기관 - 담당자
|
||||||
|
var masterCompanyAdminEle = document.getElementById('master-company-admin-' + dataIndexValue);
|
||||||
|
if (masterCompanyAdminEle) {
|
||||||
|
jsonItem.masterCompanyAdmin = masterCompanyAdminEle.value;
|
||||||
|
}
|
||||||
|
// 발주기관 - 담당자 연락처
|
||||||
|
var masterCompanyTelEle = document.getElementById('master-company-tel-' + dataIndexValue);
|
||||||
|
if (masterCompanyTelEle) {
|
||||||
|
jsonItem.masterCompanyTel = masterCompanyTelEle.value;
|
||||||
|
}
|
||||||
|
// 건설사 - 건설사명
|
||||||
|
var constCompanyNameEle = document.getElementById('const-company-dept-' + dataIndexValue);
|
||||||
|
if (constCompanyNameEle) {
|
||||||
|
jsonItem.constCompanyName = constCompanyNameEle.value;
|
||||||
|
}
|
||||||
|
// 건설사 - 담당자
|
||||||
|
var constCompanyAdminEle = document.getElementById('const-company-admin-' + dataIndexValue);
|
||||||
|
if (constCompanyAdminEle) {
|
||||||
|
jsonItem.constCompanyAdmin = constCompanyAdminEle.value;
|
||||||
|
}
|
||||||
|
// 건설사 - 담당자 연락처
|
||||||
|
var constCompanyTelEle = document.getElementById('const-company-tel-' + dataIndexValue);
|
||||||
|
if (constCompanyTelEle) {
|
||||||
|
jsonItem.constCompanyTel = constCompanyTelEle.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
xhr.setRequestHeader('Content-type', 'application/json');
|
if (cid) {
|
||||||
|
jsonItem.cid=cid;
|
||||||
|
}
|
||||||
|
|
||||||
xhr.onreadystatechange = function() {
|
if ( isValid(dataIndexValue) == false ) {
|
||||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
return false;
|
||||||
// 요청 성공 시 처리
|
}
|
||||||
|
jsonData.push(jsonItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cid) {
|
||||||
|
xhr.open('POST', '/drilling/input/modify.do', true);
|
||||||
|
} else {
|
||||||
|
xhr.open('POST', '/drilling/input/add.do', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
xhr.setRequestHeader('Content-type', 'application/json');
|
||||||
|
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||||
|
// 요청 성공 시 처리
|
||||||
let result = JSON.parse(xhr.response);
|
let result = JSON.parse(xhr.response);
|
||||||
console.log(result.resultCode)
|
console.log(result.resultCode)
|
||||||
|
|
||||||
console.log(xhr.responseText);
|
console.log(xhr.responseText);
|
||||||
const obj = JSON.parse(xhr.responseText);
|
const obj = JSON.parse(xhr.responseText);
|
||||||
alert(obj.message);
|
if (obj.resultCode == 100) {
|
||||||
// window.location.href='/drilling/inquiry.do';
|
if(confirm(obj.message)) {
|
||||||
} else if (xhr.readyState === 4) {
|
window.location.href='/drilling/inquiry.do';
|
||||||
// 요청 실패 시 처리
|
}
|
||||||
console.error('요청 실패:', xhr.status);
|
} else {
|
||||||
}
|
alert(obj.message);
|
||||||
};
|
}
|
||||||
|
} else if (xhr.readyState === 4) {
|
||||||
xhr.send(JSON.stringify(jsonData));
|
// 요청 실패 시 처리
|
||||||
});
|
console.error('요청 실패:', xhr.status);
|
||||||
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
|
xhr.send(JSON.stringify(jsonData));
|
||||||
|
}
|
||||||
|
|
||||||
function isValid(index) {
|
function isValid(index) {
|
||||||
// 사업명
|
// 사업명
|
||||||
|
|
|
||||||
|
|
@ -6832,6 +6832,9 @@ ul.faq-q > li textarea {
|
||||||
resize: none;
|
resize: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
.drilling .drilling .input-box.error {
|
||||||
|
border: 2px solid red;
|
||||||
|
}
|
||||||
.drilling .check-box {
|
.drilling .check-box {
|
||||||
padding-left: 0px;
|
padding-left: 0px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -5189,6 +5189,9 @@ ul.faq-q > li textarea {
|
||||||
resize: none;
|
resize: none;
|
||||||
margin: 0 ;
|
margin: 0 ;
|
||||||
}
|
}
|
||||||
|
.drilling .input-box.error {
|
||||||
|
border: 2px solid red;
|
||||||
|
}
|
||||||
.check-box {
|
.check-box {
|
||||||
padding-left: 0px;
|
padding-left: 0px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
|
||||||
|
|
@ -1857,10 +1857,11 @@ function fn_openClipReport(table,project,hole,sample,etc1,etc2,gbn){
|
||||||
|
|
||||||
|
|
||||||
function shakeAndHighlight(targetEle, message) {
|
function shakeAndHighlight(targetEle, message) {
|
||||||
var originalStyle = targetEle.style.border; // 원래 스타일 저장
|
// var originalStyle = targetEle.style.border; // 원래 스타일 저장
|
||||||
|
|
||||||
// 빨간색 테두리 설정
|
// 빨간색 테두리 설정
|
||||||
targetEle.style.border = "2px solid red";
|
// targetEle.style.border = "2px solid red";
|
||||||
|
targetEle.classList.add("error");
|
||||||
|
|
||||||
// 흔들리는 애니메이션 추가
|
// 흔들리는 애니메이션 추가
|
||||||
targetEle.classList.add("shake-animation");
|
targetEle.classList.add("shake-animation");
|
||||||
|
|
@ -1882,7 +1883,9 @@ function shakeAndHighlight(targetEle, message) {
|
||||||
|
|
||||||
// 3초 후 원래 스타일로 복원
|
// 3초 후 원래 스타일로 복원
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
targetEle.style.border = originalStyle;
|
// targetEle.style.border = originalStyle;
|
||||||
|
|
||||||
|
targetEle.classList.remove("error");
|
||||||
targetEle.classList.remove("shake-animation");
|
targetEle.classList.remove("shake-animation");
|
||||||
//targetEle.focus();
|
//targetEle.focus();
|
||||||
showSnackbar();
|
showSnackbar();
|
||||||
|
|
@ -2035,3 +2038,44 @@ function duplicateCheckProjectName( projectNameInput, projectCode ) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 프로젝트 명 중복 체크
|
||||||
|
* 동기처리
|
||||||
|
* 응답 받은 후 호출한 부분에서 처리
|
||||||
|
*/
|
||||||
|
function projNmDuplChkResult( projectNameInput, projectCode) {
|
||||||
|
if( typeof projectCode === 'undefined' || projectCode ==="null") {
|
||||||
|
projectCode = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
projectName = projectNameInput.value;
|
||||||
|
let result = {result:"false", msg: ''};
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type : "GET",
|
||||||
|
data : {
|
||||||
|
projectName : projectName,
|
||||||
|
projectCode : projectCode,
|
||||||
|
isProjectNameChecking : "true"
|
||||||
|
},
|
||||||
|
url : "/project-duplicate-check.json",
|
||||||
|
dataType : "json",
|
||||||
|
async: false,
|
||||||
|
success : function( json ){
|
||||||
|
resultData = json.result;
|
||||||
|
if(resultData == "false"){
|
||||||
|
// shakeAndHighlight(projectNameInput, json.message);
|
||||||
|
result.result = "false";
|
||||||
|
result.msg= json.message;
|
||||||
|
} else {
|
||||||
|
result.result = "true";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(xhr, option, error){
|
||||||
|
alert(xhr.status); // 오류코드
|
||||||
|
alert(error); // 오류내용
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue