건설현장 입력 여러사업 등록 처리, 사업명 중복 체크 보완
parent
8004401036
commit
f310066eee
|
|
@ -92,7 +92,7 @@ public class ProjectListController {
|
|||
jsonObject.put("resultCode", "The name already exists.");
|
||||
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 2");
|
||||
}
|
||||
} else if( false && 0 < arrConstNameByProjectNameFromTempConstructSiteInfo.size() ) {
|
||||
} else if( 0 < arrConstNameByProjectNameFromTempConstructSiteInfo.size() ) {
|
||||
jsonObject.put("result", "false");
|
||||
jsonObject.put("resultCode", "The name already exists.");
|
||||
jsonObject.put("message", "해당 사업명이 이미 있습니다. 다른 사업명으로 입력해 주세요. code 3");
|
||||
|
|
|
|||
|
|
@ -312,110 +312,130 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
|
||||
console.log(tableDataElements);
|
||||
|
||||
var dataIndexValue;
|
||||
|
||||
var jsonData = new Array();
|
||||
for (var i = 0; i < tableDataElements.length; i++) {
|
||||
|
||||
let duplChkEle = document.querySelectorAll('.input-box[id*="const-name"]'); // 엑셀양식 로드시 사업명 중복 체크해야 하는 대상 엘리먼트
|
||||
for (let i = 0 ; i < duplChkEle.length; i++) {
|
||||
duplicateCheckProjectName(duplChkEle[i])
|
||||
}
|
||||
let duplChkEle = tableDataElements[i].querySelector('.input-box[id*="const-name"]') // 엑셀양식 로드시 사업명 중복 체크해야 하는 대상 엘리먼트
|
||||
let result = projNmDuplChkResult(duplChkEle)
|
||||
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 (xhr.readyState === 4 && xhr.status === 200) {
|
||||
// 요청 성공 시 처리
|
||||
if ( isValid(dataIndexValue) == false ) {
|
||||
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);
|
||||
console.log(result.resultCode)
|
||||
|
||||
console.log(xhr.responseText);
|
||||
const obj = JSON.parse(xhr.responseText);
|
||||
alert(obj.message);
|
||||
// window.location.href='/drilling/inquiry.do';
|
||||
} else if (xhr.readyState === 4) {
|
||||
// 요청 실패 시 처리
|
||||
console.error('요청 실패:', xhr.status);
|
||||
}
|
||||
};
|
||||
|
||||
xhr.send(JSON.stringify(jsonData));
|
||||
});
|
||||
|
||||
});
|
||||
if (obj.resultCode == 100) {
|
||||
if(confirm(obj.message)) {
|
||||
window.location.href='/drilling/inquiry.do';
|
||||
}
|
||||
} else {
|
||||
alert(obj.message);
|
||||
}
|
||||
} else if (xhr.readyState === 4) {
|
||||
// 요청 실패 시 처리
|
||||
console.error('요청 실패:', xhr.status);
|
||||
}
|
||||
};
|
||||
|
||||
xhr.send(JSON.stringify(jsonData));
|
||||
}
|
||||
|
||||
function isValid(index) {
|
||||
// 사업명
|
||||
|
|
|
|||
|
|
@ -6832,6 +6832,9 @@ ul.faq-q > li textarea {
|
|||
resize: none;
|
||||
margin: 0;
|
||||
}
|
||||
.drilling .drilling .input-box.error {
|
||||
border: 2px solid red;
|
||||
}
|
||||
.drilling .check-box {
|
||||
padding-left: 0px;
|
||||
cursor: pointer;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -5189,6 +5189,9 @@ ul.faq-q > li textarea {
|
|||
resize: none;
|
||||
margin: 0 ;
|
||||
}
|
||||
.drilling .input-box.error {
|
||||
border: 2px solid red;
|
||||
}
|
||||
.check-box {
|
||||
padding-left: 0px;
|
||||
cursor: pointer;
|
||||
|
|
|
|||
|
|
@ -1857,10 +1857,11 @@ function fn_openClipReport(table,project,hole,sample,etc1,etc2,gbn){
|
|||
|
||||
|
||||
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");
|
||||
|
|
@ -1882,7 +1883,9 @@ function shakeAndHighlight(targetEle, message) {
|
|||
|
||||
// 3초 후 원래 스타일로 복원
|
||||
setTimeout(function() {
|
||||
targetEle.style.border = originalStyle;
|
||||
// targetEle.style.border = originalStyle;
|
||||
|
||||
targetEle.classList.remove("error");
|
||||
targetEle.classList.remove("shake-animation");
|
||||
//targetEle.focus();
|
||||
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