/** * 쓰세염 java.util.map 동일해욤 */ jQuery.fn.serializeObject = function() { var obj = null; try { // this[0].tagName이 form tag일 경우 if(this[0].tagName && this[0].tagName.toUpperCase() == "FORM" ) { var arr = this.serializeArray(); if(arr){ obj = {}; jQuery.each(arr, function() { // obj의 key값은 arr의 name, obj의 value는 value값 obj[this.name] = this.value; }); } } }catch(e) { Swal.fire(e.message); }finally {} return obj; }; Map = function(){ this.map = new Object(); }; Map.prototype = { put : function(key, value){ this.map[key] = value; }, get : function(key){ return this.map[key]; }, containsKey : function(key){ return key in this.map; }, containsValue : function(value){ for(var prop in this.map){ if(this.map[prop] == value) return true; } return false; }, isEmpty : function(key){ return (this.size() == 0); }, clear : function(){ for(var prop in this.map){ delete this.map[prop]; } }, remove : function(key){ delete this.map[key]; }, keys : function(){ var keys = new Array(); for(var prop in this.map){ keys.push(prop); } return keys; }, values : function(){ var values = new Array(); for(var prop in this.map){ values.push(this.map[prop]); } return values; }, size : function(){ var count = 0; for (var prop in this.map) { count++; } return count; } }; /** * 입력부의 유효성을 검사한다. * 1. 유효성 검사 필요한 부분은 required를 추가한다. * 2. 입력부에 type이 없는 경우 (ex. select box의 경우 type="select"를 추가하여준다.) * 3. 입력 필요한 부분은 title을 추가하여 alert 출력 시 사용 할 수 있도록한다. */ function fnc_valitate(targetName){ if(0 < $("#"+targetName).length){ var targetSize = $("#"+targetName).find("[required]").size(); if(0 < targetSize){ for(var i=0;i-1 || id.indexOf("date")>-1 || id.indexOf("DATE")>-1){ $dateinput.eq(i).attr("size","10"); $dateinput.eq(i).datepicker({ changeMonth:true, changeYear:true }); }else{ $dateinput.eq(i).attr("size","10"); } } } } //name 대상 function fnc_datepick2(){ $("input").each(function(){ var name = $(this).attr("name"); if(name != null){ if(name.indexOf("Date")>-1 || name.indexOf("date")>-1 || name.indexOf("DATE")>-1 || name.indexOf("_DT")>-1 || name.indexOf("_dt")>-1){ $(this).attr("size","10"); $(this).datepicker({ changeMonth:true, changeYear:true }); }else{ $(this).attr("size","10"); } } }); } /*function fnc_datepick(startDateId,endDateId){ $("#"+endDateId).datepicker({ numberOfMonths:1, onSelect:function(selectDate){ var dt = new Date(selectDate); dt.setDate(dt.getDate()-1); $("#"+startDateId).datepicker("option","maxDate",dt); } }); $("#"+startDateId).datepicker({ numberOfMonths:1, onSelect:function(selectDate){ var dt = new Date(selectDate); dt.setDate(dt.getDate()+1); $("#"+endDateId).datepicker("option","minDate",dt); } }); }*/ function fnc_monthpick(){ var $dateinput = $("input"); for(var i=0; i<$dateinput.length; i++){ var id = $dateinput.eq(i).attr("id"); if(id != null){ if(id.indexOf("Month")>-1){ $dateinput.eq(i).attr("size","7"); $dateinput.eq(i).monthpicker({ pattern:'yyyy-mm', selectedYear:2018, finalYear:2020, monthNames:['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월',] }); }else{ $dateinput.eq(i).attr("size","7"); } } } } function fnc_monthpick2(){ var $dateinput = $("input"); for(var i=0; i<$dateinput.length; i++){ var id = $dateinput.eq(i).attr("id"); if(id != null){ if(id.indexOf("Month")>-1 || id.indexOf("month")>-1){ $dateinput.eq(i).attr("size","7"); $dateinput.eq(i).monthpicker({ pattern:'mm', monthNames:['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월',] }); }else{ $dateinput.eq(i).attr("size","7"); } } } } //datepicker() 적용 기준을 name으로 조회한다. function fnc_datepickForName(){ var $dateinput = $("input"); for(var i=0; i<$dateinput.length; i++){ var name = $dateinput.eq(i).attr("name"); if(name != null){ if(name.indexOf("Date")>-1 || name.indexOf("date")>-1 || name.indexOf("DATE")>-1){ $dateinput.eq(i).attr("size","10"); $dateinput.eq(i).datepicker({ changeMonth:true, changeYear:true }); }else{ $dateinput.eq(i).attr("size","10"); } } } } /*페이지 이동 script start*/ function fnc_goPrev(prevPage) { if(document.form1.page) document.form1.page.value = prevPage; if(document.form1.PAGE_T) document.form1.PAGE_T.value = prevPage; //tabulator용 if(document.form1.actionType) document.form1.actionType.value = ""; fn_search(); } function fnc_goNext(nextPage) { if(document.form1.page) document.form1.page.value = nextPage; if(document.form1.PAGE_T) document.form1.PAGE_T.value = nextPage; //tabulator용 if(document.form1.actionType) document.form1.actionType.value = ""; fn_search(); } function fnc_goStart() { if(document.form1.page) document.form1.page.value = "1"; if(document.form1.PAGE_T) document.form1.PAGE_T.value = "1"; //tabulator용 if(document.form1.actionType) document.form1.actionType.value = ""; fn_search(); } function fnc_goEnd(maxPage) { if(document.form1.page) document.form1.page.value = maxPage; if(document.form1.PAGE_T) document.form1.PAGE_T.value = maxPage; //tabulator용 if(document.form1.actionType) document.form1.actionType.value = ""; fn_search(); } function fnc_goPage(i) { if(document.form1.page) document.form1.page.value = i; if(document.form1.PAGE_T) document.form1.PAGE_T.value = i; //tabulator용 if(document.form1.actionType) document.form1.actionType.value = ""; fn_search(); } /*페이지 이동 script end*/ function getMonthDiff(startDate, endDate) { var date1 = new Date(startDate); var date2 = new Date(endDate); var months; months = (date2.getFullYear() - date1.getFullYear()) * 12; months -= date1.getMonth(); months += date2.getMonth(); return months <= 0 ? 0 : months; } function fnc_getDate(delimiter){ var today = new Date(); // 년, 월, 일 추출 var year = today.getFullYear(); // 년도 var month = today.getMonth() + 1; // 월 (0부터 시작하므로 1을 더함) var day = today.getDate(); // 일 // 월과 일이 한 자리 숫자인 경우 앞에 0 추가 month = (month < 10 ? '0' : '') + month; day = (day < 10 ? '0' : '') + day; if(fnc_isEmpty(delimiter)){ //delimiter = '-'; delimiter = ''; } // 오늘 날짜 문자열 생성 (형식: yyyy-mm-dd) var todayStr = year + delimiter + month + delimiter + day; //console.log(todayStr); // 오늘 날짜 출력 return todayStr; } //날짜 입력형태 점검 function fnc_dateFormChk(fromDate,toDate){ var fromDate = fromDate.replace('-'); var toDate = toDate.replace('-'); if(fromDate != '' && toDate != ''){ if(fromDate > toDate){ Swal.fire("날짜 입력이 올바르지 않습니다."); return false; }else{ return true; } }else{ return true; } } //날짜 입력폼 초기화 function fnc_date_empty(){ $('#search_fromDate').val(''); $('#search_toDate').val(''); } //fromDate와 toDate간 날짜체크 (false : 종료일이 시작이보다 앞섬, true : 통과) function fnc_dateCheck(fromDate, toDate){ fromDate = fnc_checkNull(fromDate); toDate = fnc_checkNull(toDate); if(fromDate != "" && toDate != ""){ var startDateArr = fromDate.split('-'); var endDateArr = toDate.split('-'); var startDateCompare = new Date(startDateArr[0], parseInt(startDateArr[1])-1, startDateArr[2]); var endDateCompare = new Date(endDateArr[0], parseInt(endDateArr[1])-1, endDateArr[2]); if(startDateCompare.getTime() > endDateCompare.getTime()) { return false; }else{ return true; } }else{ return true; } } function fnc_isEmpty(targetValue){ if(targetValue == null || targetValue == "null" || targetValue == "undefined" || targetValue == undefined || targetValue == ''){ return true; }else{ return false; } } function fnc_isNotEmpty(targetValue){ return !fnc_isEmpty(targetValue); } //targetValue가 Null 또는 undefined일때 ""를 return 한다. function fnc_checkNull(targetValue){ var returnVal = ""; if(targetValue == null || targetValue == "null" || targetValue == "undefined" || targetValue == undefined || targetValue == "NaN"){ returnVal = ""; }else{ returnVal = targetValue; } return returnVal; } //targetValue가 Null 또는 undefined일때 returnDefaultValue를 return 한다. function fnc_checkNullDefaultValue(targetValue,returnDefaultValue){ var returnVal = ""; if("" == fnc_checkNull(targetValue)){ returnVal = returnDefaultValue; }else{ returnVal = targetValue; } return returnVal; } function fnc_checkZeroDefaultValue(targetValue, returnDefaultValue){ var returnVal = ""; if(fnc_checkNull(targetValue) == 0){ returnVal = returnDefaultValue; }else{ returnVal = targetValue; } return returnVal; } //targetValue가 Null 또는 undefined일때 returnDefaultValue를 return 한다. function fnc_checkcommmanumberDefaultValue(targetValue,returnDefaultValue){ var returnVal = ""; if("" == fnc_checkNull(targetValue)){ returnVal = returnDefaultValue; }else{ returnVal = targetValue.replace(/[^0-9]/g,''); } return returnVal; } function fnc_fileRegist(objId, docType, docTypeName, parentTargetObjId, searchAllInParent, columnField, callbackFnc){ var popup_width = 800; var popup_height = 335; var objId = objId; var docType = docType; var docTypeName = docTypeName; var params = "?targetObjId="+objId+"&docType="+docType+"&docTypeName="+docTypeName+"&parentTargetObjId="+parentTargetObjId+"&searchAllInParent="+searchAllInParent+"&columnField="+columnField+"&callbackFnc="+callbackFnc; var url = "/common/FileRegistPopup.do"+params; fn_centerPopup(popup_width, popup_height, url); } function fnc_fileDetailPopup(objId, docType, docTypeName, parentTargetObjId, searchAllInParent, columnField, callbackFnc){ var popup_width = 800; var popup_height = 335; var objId = objId; var docType = docType; var docTypeName = docTypeName; var params = "?targetObjId="+objId+"&docType="+docType+"&docTypeName="+docTypeName+"&parentTargetObjId="+parentTargetObjId+"&searchAllInParent="+searchAllInParent+"&columnField="+columnField+"&callbackFnc="+callbackFnc; var url = "/common/FileDetailPopup.do"+params; fn_centerPopup(popup_width, popup_height, url); } /*File Drop Zone 설정 * divId : Drop Zone의 DIV ID를 String 형태로 입력. * uploadUrl : upload할 Url * callbackFnc : 업로드 후 실행할 함수명을 String 형태로 입력. * onlyOne : 1개만 업로드 허용할것이면 true, 여러개를 허용할것이면 false. */ function fnc_setFileDropZone(divId, targetObjId, docType, docTypeName, callbackFnc, onlyOne, preProcessor, url, okExt, parentTargetObjId){ var obj = $("#"+divId); obj.on('dragenter', function (e) { e.stopPropagation(); e.preventDefault(); $(this).css('border', '2px solid #5272A0'); }); obj.on('dragleave', function (e) { e.stopPropagation(); e.preventDefault(); $(this).css('border', '2px dotted #8296C2'); }); obj.on('dragover', function (e) { e.stopPropagation(); e.preventDefault(); }); obj.on('drop', function (e) { e.preventDefault(); $(this).css('border', '2px dotted #8296C2'); var files = e.originalEvent.dataTransfer.files; if(files.length < 1){ return; } if(onlyOne){ if(files.length > 1){ Swal.fire("1개의 파일만 등록 가능합니다."); return; } } if (files && files[0]) { var maxSize = 1000 * 1024 * 1024; for(var i=0; i maxSize){ //240510 막음 //alert("첨부파일 사이즈는 1GB(1000MB) 이내로 등록 가능합니다."); //$(this).val(''); //return false; } } } } if(preProcessor != null) eval(fnc_checkNull(preProcessor)+"();"); if(url == null) url = "/common/fileUploadProc.do"; fnc_fileMultiUpload(files, obj, targetObjId, docType, docTypeName, url, callbackFnc, okExt, parentTargetObjId); //eval(uploadFnc+"(files, obj, uploadUrl, callbackFnc);"); }); } //파일 멀티 업로드 /** * * okExt(업로드 가능 확장자 ex."jpg,png") */ function fnc_fileMultiUpload(files, obj, targetObjId, docType, docTypeName, uploadUrl, callbackFnc, okExt, parentTargetObjId) { if(okExt != null){ for(var i = 0 ; i < files.length ; i++){ var _fileName = files[i].name; var _ext = _fileName.substring(_fileName.lastIndexOf(".")+1).toUpperCase()+","; if((okExt.toUpperCase()+",").indexOf(_ext)<0){ Swal.fire("허용되지 않은 확장자입니다.\n업로드 가능 확장자 : "+okExt); return; } } }else{ var _okExt = "JSP,BAT,EXE,PHP,JS,SQL"; for(var i = 0 ; i < files.length ; i++){ var _fileName = files[i].name; var _ext = _fileName.substring(_fileName.lastIndexOf(".")+1).toUpperCase(); if(_okExt.toUpperCase().indexOf(_ext)>0){ Swal.fire("허용되지 않은 확장자입니다."+_ext); return; } } } for(var i = 0 ; i < files.length ; i++){ var _fileName = files[i].name; var pattern = /[#%&*+[]]/; if(pattern.test(_fileName)){ Swal.fire("파일에 허용되지 않은 특수문자를 포함하고 있습니다(#,%,&,*,+,[,])."); return; } } if(confirm(files.length + "개의 파일을 업로드 하시겠습니까?") ) { uploadUrl = fnc_checkNull(uploadUrl); if(uploadUrl == "") uploadUrl = "/common/fileUploadProc.do"; var data = new FormData(); for (var i = 0; i < files.length; i++) { data.append('file', files[i]); } //기본정보 세팅 data.append("targetObjId", targetObjId); data.append("docType", docType); data.append("docTypeName", docTypeName); data.append("parentTargetObjId", parentTargetObjId); //targetObjId의 부모키 240625 추가 //var url = "/common/fileUploadProc.do"; $.ajax({ url: uploadUrl, method: 'post', data: data, dataType: 'text', processData: false, contentType: false, beforeSend:function(){ _startLoading("업로드 중입니다. 용량에 따라 시간이 걸릴 수 있습니다."); }, success: function(res) { //alert('11'); if(fnc_checkNull(callbackFnc) != ""){ eval(callbackFnc+"();"); }else{ fnc_fileMultiUpload_Callback(res.files); } }, complete:function(){ //alert('22'); _endLoading(); }, error: function(jqxhr, status, error){ //alert('33'); alert(jqxhr.statusText + ", " + status + ", " + error); alert(jqxhr.status); alert(jqxhr.responseText); } }); } } // 파일 멀티 업로드 Callback function fnc_fileMultiUpload_Callback(files) { for(var i=0; i < files.length; i++) console.log(files[i].file_nm + " - " + files[i].file_size); } //파일 삭제(Confirm 있음) function fnc_deleteFile(fileObjId, callbackFnc){ if(confirm("파일을 삭제하시겠습니까?")){ $.ajax({ url:"/common/deleteFileInfo.do", type:"POST", data:{"objId":fileObjId}, dataType:"json", async:true, success:function(data){ Swal.fire(data.msg); eval(callbackFnc+"();"); }, error: function(jqxhr, status, error){ Swal.fire(jqxhr.statusText + ", " + status + ", " + error); Swal.fire(jqxhr.status); Swal.fire(jqxhr.responseText); } }); } } //파일 다운로드 function fnc_downloadFile(fileObjId){ location.href = "/common/downloadFile.do?objId="+fileObjId; } //dataType에 따라서 해당 유형에 해당하는 값인지 확인한다. function fnc_checkDataType(dataType,targetValue){ // Swal.fire("dataType:"+dataType); // Swal.fire("targetValue:"+targetValue); var pattren = ""; if("number" == dataType){ pattren = /^[0-9]*$/; if(!pattren.test(targetValue) || "" == fnc_checkNull(targetValue)){ Swal.fire("입력된 값이 없거나 유효하지 않은 데이터 유형입니다."); return false; } } } //text return 값이 true인지를 반환 function fnc_checkTrue(val){ if(val == "true" || val == true || val || val == "TRUE"){ return true; }else{ return false; } } //setStep2 function fnc_setStep2(val, step2){ var append = ""; if(val == "design"){ append += ""; append += ""; append += ""; append += ""; append += ""; }else if(val == "develop"){ append += ""; append += ""; append += ""; append += ""; append += ""; }else if(val == "production"){ append += ""; } $("#step2").children().remove(); $("#step2").append(append); var dbVal = fnc_checkNull(step2); if(dbVal != ""){ $("#step2").val(dbVal).attr("selected", "true"); } } //setType2 function fnc_setType2(val, type2){ var append = ""; if(val == "design"){ append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; }else if(val == "mold"){ append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; } /* else if(val == "quality"){ append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; } */ else if(val == "facilities"){ append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; }else if(val == "etc"){ append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; append += ""; } $("#type2").children().remove(); $("#type2").append(append); var dbVal = fnc_checkNull(type2); if(dbVal != ""){ $("#type2 > option[value='"+dbVal+"']").attr("selected", "true"); } } //pdm의 part를 조회한다.(시작 PartX) function fnc_openPartDetailPopup(userId, partNo){ //Swal.fire("userId : "+userId+", partNo : "+partNo); var url = "/part/pmsPartDetailViewPopup.do?partNo="+partNo; //Swal.fire("url : "+url+params); window.open(url, "partDetailPopup","width=750, height=930, location=no"); } //pdm의 시작 part를 조회한다. function fnc_openStartPartDetailPopup(userId, partNo){ //Swal.fire("userId : "+userId+", partNo : "+partNo); var url = "http://pdm.iljitech.co.kr/main.do"; //url = "http://localhost:8081/main.do"; var params = "?userId="+userId+"&externalAccess=PMS&forwardPage=/part/openStartDevPartDetailPopUp.do?partNo="+partNo; //Swal.fire("url : "+url+params); window.open(url+params, "partDetailPopup","width=750, height=930, location=no"); } $(document).ready(function(){ function warning(){ $(".warning").animate({backgroundColor:"#FF5A5A"}, 600); $(".warning").animate({backgroundColor:"#ffffff"}, 600); } setInterval(function() { warning(); },1200); }); $(document).ready(function(){ function gate_blink(){ $(".gate_blink").animate({opacity:"0.5"},400) $(".gate_blink").animate({opacity:"1"},400) } setInterval(gate_blink,1000) }); //문제점 목록 팝업(단위문제점) 차종정보 function fn_openProblemList_byCar(obj){ var category = obj.category; var seriesName = obj.series.name; var oemObjId = obj.series.userOptions.oemObjId[obj.index]; var carObjId = obj.series.userOptions.carObjId[obj.index]; var status = ""; if(seriesName == "완료") status = "complete"; else if(seriesName == "조치") status = "complete"; else if(seriesName == "미결") status = "create"; //console.log(obj.series); //Swal.fire("차종 : "+category+", 선택값 : "+obj.series.name+", oemObjId : "+oemObjId+", carObjId : "+carObjId); var params = "?search_oemObjId="+oemObjId+"&search_carObjId="+carObjId+"&search_status="+status; window.open("/dashboard/problemListPopUp.do"+params, "", "width=1700, height=585"); } //문제점 목록 팝업(단위문제점) 제품정보 function fn_openProblemList_byProduct(obj){ var prodGroupObjId = obj.options.prodGroupObjId; var prodObjId = obj.options.prodObjId; var params = "?search_prodGroupObjId="+prodGroupObjId+"&search_prodObjId="+prodObjId; window.open("/dashboard/problemListPopUp.do"+params, "", "width=1700, height=585"); } function fn_openProblemList(oemObjId, carObjId, prodGroupObjId, prodObjId, step1, step2, type1, type2, partNo, status, reqFromDate, reqToDate, resPlanFromDate, resPlanToDate){ var params = "?"; if(oemObjId != null) params += "&search_oemObjId="+oemObjId; if(carObjId != null) params += "&search_carObjId="+carObjId; if(prodGroupObjId != null) params += "&search_prodGroupObjId="+prodGroupObjId; if(prodObjId != null) params += "&search_prodObjId="+prodObjId; if(step1 != null) params += "&step1="+step1; if(step2 != null) params += "&step2="+step2; if(type1 != null) params += "&type1="+type1; if(type2 != null) params += "&type2="+type2; if(partNo != null) params += "&search_partNo="+partNo; if(status != null) params += "&search_status="+status; if(reqFromDate != null) params += "&search_reqFromDate="+reqFromDate; if(reqToDate != null) params += "&search_reqToDate="+reqToDate; if(resPlanFromDate != null) params += "&search_resPlanFromDate="+resPlanFromDate; if(resPlanToDate != null) params += "&search_resPlanToDate="+resPlanToDate; window.open("/dashboard/problemListPopUp.do"+params, "", "width=1700, height=585"); } function _startLoading(loadingMsg){ $(".loading-container-wrap").show(); $("#_loadingMessage").text(loadingMsg); } function _endLoading(){ $(".loading-container-wrap").hide(); } /**숫자 천단위 콤마변환 * 1000000 --> 1,000,000 */ function numberWithCommas(x) { if(fnc_isEmpty(x)) return x; return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } //codeId를 부모로 사용하는 코드의 정보목록을 가져온다. function fnc_getCodeList(codeId){ var resultList = null; if(fnc_checkNull(codeId)!=""){ $.ajax({ url:"/common/getCodeList.do", type:"POST", data:{"codeId":codeId}, dataType:"json", async:false, success:function(data){ resultList = data }, error: function(jqxhr, status, error){ } }); } return resultList; } //JQGrid 사용시 select box option 구성용으로 사용 function fnc_getCodeJsonStr(codeId){ var resultStr = {}; $.ajax({ url:"/common/getCodeList.do", type:"POST", data:{"codeId":codeId}, dataType:"json", async:false, success:function(data){ var defaultOptions = [{"CODE_ID":'',"CODE_NAME":"선택"}]; var resultList = data var concatList = defaultOptions.concat(resultList); for(var i=0;i선택"); if(resultList != null && 0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE_ID; var commonCodeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } } //codeId에 애당하는 codeName을 가져온다. function fnc_getCodeId(codeId,targetCodeName){ var resultList = fnc_getCodeList(codeId); var resultCodeId = ""; // console.log("resultList:"+resultList); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE_ID; var commonCodeName = resultList[i].CODE_NAME; if(targetCodeName == commonCodeName){ resultCodeId = commonCodeId; break; } } } return resultCodeId; } //공급업체 정보목록을 가져온다. function fnc_getSupplyCodeListAppend(selectboxId,selectedVal){ $.ajax({ url:"/common/getSupplyCodeList.do", type:"POST", data:{}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE_ID; var commonCodeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } //공급업체 정보목록을 가져온다. function fnc_getSupplyCodeListAppend2(supplyCode,selectboxId,selectedVal){ $.ajax({ url:"/common/getSupCdList.do", type:"POST", data:{"codeId":supplyCode}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE_ID; var commonCodeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } //공급업체 정보목록을 가져온다. function fnc_getAdminSupCdListAppend(supplyCode,selectboxId,selectedVal){ $.ajax({ url:"/common/getAdminSupCdList.do", type:"POST", data:{"codeId":supplyCode}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE_ID; var commonCodeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } //targetCode에 해당하는 대상구분명을 반환한다. function fnc_getApprovalTargetName(targetCode){ var targetTypeTitle = ""; var targetTypeArr = []; targetTypeArr.push({"code":"CUSTOMER_MNG","name":"고객관리"}); targetTypeArr.push({"code":"EXPENSE_APPLY","name":"경비신청서"}); targetTypeArr.push({"code":"MATERIAL_SORTAPPLY","name":"발주서"}); targetTypeArr.push({"code":"MATERIAL_APPLY","name":"발주등록"}); targetTypeArr.push({"code":"USED_MNG","name":"고객지원"}); for(var i=0;i선택"); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var codeId = resultList[i].CODE_ID; var codeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } //selectboxId 지정 시 해당영역에 select box를 그려준다. function fnc_getDeptListAppend(selectboxId,selectedVal){ $.ajax({ url:"/common/getDeptList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var code = resultList[i].CODE; var name = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } //selectboxId 지정 시 해당영역에 select box를 그려준다. function fnc_getDeptList(selectboxId,selectedVal){ $.ajax({ url:"/common/getDeptList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var code = resultList[i].CODE; var name = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_getDeptList(resultSearch,selectedVal){ var resultTxt = ""; $.ajax({ url:"/common/getDeptList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ var resultList = data; if(resultSearch){ resultTxt = ""; } resultTxt += ""; if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var code = resultList[i].CODE; var name = resultList[i].NAME; resultTxt += ""; } } resultTxt += ""; }, error: function(jqxhr, status, error){ } }); return resultTxt; } function fnc_getUserList2(selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); $.ajax({ url:"/common/searchUserList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ var resultList = data; // console.log("resultList:"+resultList); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var code = resultList[i].CODE; var name = resultList[i].NAME; var deptName = resultList[i].DEPT_NAME; var email = fnc_checkNull(resultList[i].EMAIL); var tel = fnc_checkNull(resultList[i].TEL); var hp = fnc_checkNull(resultList[i].CELL_PHONE); $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_getUserList3(selectboxId,selectedVal){ $.ajax({ url:"/common/searchUserList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var code = resultList[i].USER_ID; var name = resultList[i].USER_NAME; var deptName = resultList[i].DEPT_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_getUserDataList(){ var resultList; $.ajax({ url:"/common/searchUserList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ resultList = data; }, error: function(jqxhr, status, error){ } }); return resultList; } function fnc_getUserList(resultSearch,selectedVal){ var resultTxt = ""; $.ajax({ url:"/common/searchUserList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ var resultList = data; if(resultSearch){ resultTxt = ""; } resultTxt += ""; if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var code = resultList[i].CODE; var name = resultList[i].NAME; var deptName = resultList[i].DEPT_NAME; resultTxt += ""; } } resultTxt += ""; }, error: function(jqxhr, status, error){ } }); return resultTxt; } function fnc_addComma(value){ //value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ","); //return value; var parts = value.split('.'); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); return parts.join('.'); } //차종정보 조회 select box용 /** * selectboxId option이 들어갈 영역, * selectedVal 선택될 option 값 */ function fnc_getCarList(oemCode,oemObjId,selectboxId,selectedVal){ $.ajax({ url:"/common/getCarTypeList.do", type:"POST", data:{"isJson":true,"search_oemCode":oemCode,"search_oemObjId":oemObjId}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var objId = resultList[i].OBJID; var code = resultList[i].CAR_CODE; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } //고객사 조회 select box용 /** * selectboxId option이 들어갈 영역, * selectedVal 선택될 option 값 */ function fnc_getOEMList(selectboxId,selectedVal){ $.ajax({ url:"/common/getOEMList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var objId = resultList[i].OBJID; var code = resultList[i].OEM_CODE+"("+resultList[i].OEM_NAME+")"; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } /** * 이미지 미리보기 클릭 시 실제 이미지 화면 팝업 */ function fnc_openImagePopUp(url){ var img=new Image(); img.src=url; var img_width=img.width; var img_height=img.height; var win_width=img.width+25; var height=img.height+30; window.open(url,"problemImgPopUp","width="+img_width+",height="+height+", menubars=no, scrollbars=yes'"); } /** * selectboxId option이 들어갈 영역, * selectedVal 선택될 option 값 */ function fnc_getPartMngList(existPartNo,notExistPart,isLast,status,selectboxId,selectedVal){ $.ajax({ url:"/common/getPartMngList.do", type:"POST", data:{ "isJson":true, "search_exist_part_no":existPartNo, "search_not_exist_part_no":notExistPart, "IS_LAST":isLast, "STATUS":status }, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var objId = resultList[i].OBJID; var code = resultList[i].PART_NO; var codeRev = resultList[i].REVISION; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_getMilestoneList(oemObjId,selectboxId,selectedVal){ $.ajax({ url:"/common/getMilestoneList.do", type:"POST", data:{ "isJson":true, "search_oemObjId":oemObjId }, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var objId = resultList[i].OBJID; var code = resultList[i].MILESTONE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_getSpecNoList(specNoType,selectboxId,selectedVal){ $.ajax({ url:"/common/getSPECList.do", type:"POST", data:{ "isJson":true, "search_categoryName":specNoType }, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var objId = resultList[i].OBJID; var specNo = resultList[i].SPEC_NO; var docName = resultList[i].DOC_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_pageAuthController(menuObjId){ if("" != menuObjId){ $.ajax({ type : "POST", url : "/common/getPageAuthInfo.do", data: {"menuObjId":menuObjId}, dataType:"json", success:function(data){ if(data != null){ if(Number(data.CREATE_AUTH_CNT) == 0){ $(".create").hide(); } if(Number(data.READ_AUTH_CNT) == 0){ $(".read").hide(); } if(Number(data.update_AUTH_CNT) == 0){ $(".update").hide(); } if(Number(data.DELETE_AUTH_CNT) == 0){ $(".delete").hide(); } }; } ,error: function(jqxhr, status, error){ } }); } } function fnc_createObjId(){ var resultObjId = ""; $.ajax({ type : "POST", url : "/common/createObjectId.do", data: {}, dataType:"json", async:false, success:function(data){ resultObjId = data.OBJID; } ,error: function(jqxhr, status, error){ } }); return resultObjId; } //양산제품 정보 select box 구성 function fnc_getProductMgmtList(selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); $.ajax({ url:"/common/getProductMgmtList.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_productUPGList(productMgmtObjId,upgMasterObjId,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != productMgmtObjId || "" != upgMasterObjId){ $.ajax({ url:"/common/getProductUPGList.do", type:"POST", data:{"isJson":true,"PRODUCT_MGMT_OBJID":productMgmtObjId,"UPG_MASTER_OBJID":upgMasterObjId}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].UPG_NO; var commonCodeName = resultList[i].UPG_NO; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_productUPGNEWList(productMgmtObjId,upgMasterObjId,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != productMgmtObjId || "" != upgMasterObjId){ $.ajax({ url:"/common/getProductUPGNewList.do", type:"POST", data:{"isJson":true,"PRODUCT_MGMT_OBJID":productMgmtObjId,"UPG_MASTER_OBJID":upgMasterObjId}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_getProductUPGPARTList(productUpgObjId,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != productUpgObjId){ $.ajax({ url:"/common/getProductUPGPARTList.do", type:"POST", data:{"isJson":true,"UPG_OBJID":productUpgObjId}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].OBJID; var commonCodeName = resultList[i].PART_NO; var partName = resultList[i].PART_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_AsproductList(year,custCd,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != custCd){ $.ajax({ url:"/common/getAsProductList.do", type:"POST", data:{"isJson":true,"YEAR":year,"CUSTCD":custCd}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; var GOODSCD = resultList[i].ID; var PSHELLNO = resultList[i].PSHELLNO; var GOODSGUARANTEE = resultList[i].GOODSGUARANTEE; var INOUTDATE = resultList[i].INOUTDATE; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_ContractcodeList(OBJID,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != OBJID){ $.ajax({ url:"/common/getContractcodeList.do", type:"POST", data:{"isJson":true,"OBJID":OBJID}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_ContractproductList(OBJID,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != OBJID){ $.ajax({ url:"/common/getContractProductList.do", type:"POST", data:{"isJson":true,"OBJID":OBJID}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_OptionChildlist(OBJID,category,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != OBJID){ $.ajax({ url:"/common/getOptionMidList.do", type:"POST", data:{"isJson":true,"OBJID":OBJID,"CATEGORY":category}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_getOptionHighselect(OBJID,category,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != OBJID){ $.ajax({ url:"/common/getOptionHighselect.do", type:"POST", data:{"isJson":true}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_productModelList(productMgmtObjId,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != productMgmtObjId){ $.ajax({ url:"/common/getProductModelList.do", type:"POST", data:{"isJson":true,"PRODUCT_MGMT_OBJID":productMgmtObjId}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } //구조등록 Rev 리스트 조회 function fnc_getProductRevtList(selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); $.ajax({ url:"/common/getProductRevList.do", type:"POST", data:{"isJson":true,"PRODUCT_MGMT_OBJID":selectedVal}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; var commId = resultList[i].ID; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(); } }, error: function(jqxhr, status, error){ } }); } function fnc_AsContractYearList(custCd,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != custCd){ $.ajax({ url:"/common/getAsContractYearList.do", type:"POST", data:{"isJson":true,"CUSTCD":custCd}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].YY_DATE; var commonCodeName = resultList[i].YY_DATE; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } /** * 이미지 미리보기 클릭 시 실제 이미지 화면 팝업 */ function fnc_openAttachFilePopUp(objId,docType){ var params = "?targetObjId="+objId; params += "&docType="+docType; params += "&docTypeName="; window.open("/common/FileDetailPopup.do"+params, "", "width=800, height=335"); } //codeId를 부모로 사용하는 코드의 정보목록을 가져온다. function fnc_getSpecNameListAppend(codeId,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); var resultList = null; $.ajax({ url:"/common/getSpecNameList.do", type:"POST", data:{"codeId":codeId}, dataType:"json", async:false, success:function(data){ resultList = data if(resultList != null && 0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE_ID; var commonCodeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_getAjaxProductMgmtList(selectboxId,productCategory,productType,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); $.ajax({ url:"/common/getAjaxProductMgmtList.do", type:"POST", data:{"PRODUCT_GROUP":productCategory,"PRODUCT_TYPE":productType}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_address2List(CODE,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != CODE){ $.ajax({ url:"/common/getAddress2List.do", type:"POST", data:{"isJson":true,"CODE":CODE}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fnc_getproductcode(OBJID,product_codeId){ $("#"+product_codeId).empty(); if("" != OBJID){ $.ajax({ url:"/common/getproductcode.do", type:"POST", data:{"isJson":true,"OBJID":OBJID}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ var product_code = resultList[0].CODE; $("#"+product_codeId).val(product_code); } }, error: function(jqxhr, status, error){ } }); } } //팝업창 가운데 정렬 function fn_centerPopup(popup_width, popup_height, url, target){ const popupX = Math.round(window.screenX + (window.outerWidth / 2) - (popup_width / 2)); const popupY = Math.round(window.screenY + (window.outerHeight /2) - (popup_height / 2)); window.open(url, target, "width="+popup_width+" height="+popup_height+" left="+popupX+" top="+popupY+" menubar=no status=no"); } function fn_projectNameList(customer_objid,selectboxId,selectedVal,contract_objid){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != customer_objid || "" != contract_objid){ $.ajax({ url:"/common/getprojectNameList.do", type:"POST", data:{"isJson":true,"customer_objid":customer_objid, "contract_objid":contract_objid}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fn_UnitCodeList(project_objid,selectboxId,selectedVal, customer_objid){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != project_objid){ $.ajax({ url:"/common/getUnitCodeList.do", //url:"/common/getProjectUnitCodeList.do", type:"POST", data:{"isJson":true,"project_objid":project_objid,"customer_objid":customer_objid}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function getProjectUnitCodeList(project_objid,selectboxId,selectedVal, customer_objid){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != project_objid){ $.ajax({ //url:"/common/getUnitCodeList.do", url:"/common/getProjectUnitCodeList.do", type:"POST", data:{"isJson":true,"project_objid":project_objid}, //,"customer_objid":customer_objid dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fn_UnitCodeListJson(customer_objid,objectId,emptyOptText){ $("#"+objectId).empty(); var str = ''; str += '"":"'+emptyOptText+'",' if("" != customer_objid){ $.ajax({ url:"/common/getUnitCodeList.do", type:"POST", data:{"isJson":true,"customer_objid":customer_objid}, dataType:"json", async:false, success:function(data){ resultList = data return resultList; if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; //sbJson.append("\""+String.valueOf(data.get(id_colName))+"\":\""+(String)data.get(name_colName)+"\""); str += '"'+commonCodeId+'":"'+commonCodeName+'",' if(i선택"); if("" != objid){ $.ajax({ url:"/common/getBomUnitCodeList.do", type:"POST", data:{"isJson":true,"OBJID":objid}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fn_BomPartLastList(OBJID,UNIT_CODE,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != OBJID && "" != UNIT_CODE){ $.ajax({ url:"/common/getBomPartLastList.do", type:"POST", data:{"isJson":true,"OBJID":OBJID,"UNIT_CODE":UNIT_CODE}, dataType:"json", async:false, success:function(data){ resultList = data //alert(resultList.length); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; //var PART_NAME = encodeURIComponent(resultList[i].PART_NAME); var PART_NAME = resultList[i].PART_NAME; var SPEC = resultList[i].SPEC; var MAKER = resultList[i].MAKER; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } function fn_BomPartList(OBJID,UNIT_CODE,selectboxId,selectedVal){ $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if("" != OBJID && "" != UNIT_CODE){ $.ajax({ url:"/common/getBomPartList.do", type:"POST", data:{"isJson":true,"OBJID":OBJID,"UNIT_CODE":UNIT_CODE}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; var PART_NAME = resultList[i].PART_NAME; var SPEC = resultList[i].SPEC; var MAKER = resultList[i].MAKER; var MATERIAL = resultList[i].MATERIAL; var PART_TYPE = resultList[i].PART_TYPE; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } } /** ※고정컬럼 : CODE_ID, CODE_NAME, PARENT_CODE_ID ※select box 기본값 속성추가 : @param JsonLevel3Data, step1SelBox(element), step2SelBox, step3SelBox { LEV1 : [{"CODE_ID":"xxx", "CODE_NAME":"xxx", "PARENT_CODE_ID":"xxx", ...},{...},...] ,LEV2 : [{"CODE_ID":"xxx", "CODE_NAME":"xxx", "PARENT_CODE_ID":"xxx", ...},{...},...] ,LEV3 : [{"CODE_ID":"xxx", "CODE_NAME":"xxx", "PARENT_CODE_ID":"xxx", ...},{...},...] ,ETC : [{"CODE_ID":"xxx", "CODE_NAME":"xxx", "PARENT_CODE_ID":"xxx", ...},{...},...] } @param step1SelBox(element) @param step2SelBox, step3SelBox @param step3SelBox 밧밧이 악당 */ function fnc_setCodeStepSelectByJsonLevel3(JsonLevel3Data, step1SelBox, step2SelBox, step3SelBox){ var arrLEV1 = JsonLevel3Data.LEV1; var arrLEV2 = JsonLevel3Data.LEV2; var arrLEV3 = JsonLevel3Data.LEV3; if(fnc_checkNull(arrLEV1)=="" || fnc_checkNull(arrLEV2)=="" || fnc_checkNull(arrLEV3)==""){ Swal.fire("fnc_setCodeStepSelectByJsonLevel3 :: code data가 없습니다."); return; } if(fnc_checkNull(arrLEV1[0].CODE_ID)=="" || fnc_checkNull(arrLEV1[0].CODE_NAME)=="" || fnc_checkNull(arrLEV1[0].PARENT_CODE_ID)==""){ Swal.fire("fnc_setCodeStepSelectByJsonLevel3 :: 고정컬럼이 업습니다. (CODE_ID, CODE_NAME, PARENT_CODE_ID)"); return; } var maxStep = 3; for(var l=1; l<=maxStep; l++){ var arr, te; arr = eval("arrLEV"+l); te = eval("$(step"+l+"SelBox)"); if(fnc_checkNull(arr)=="" || fnc_checkNull(te)==""){ break; } te.empty(); te.append(""); var pv = ""; if(l>1){ pv = eval("$(step"+(l-1)+"SelBox).attr('def-value')"); } for(var i in arr){ var row = arr[i]; var attr = ""; if(l>1 && (pv == "" || row["PARENT_CODE_ID"]!=pv)){ continue; } for(var k in arr[i]){ attr += " data-"+k+"=\""+row[k]+"\""; } te.append(""); } te.val( te.attr("def-value") ); if(l선택"); for(var i in _narr){ var row = _narr[i]; if(row["PARENT_CODE_ID"] != $(this).val()){ continue; } var attr = ""; for(var k in _narr[i]){ attr += " data-"+k+"=\""+row[k]+"\""; } _nte.append(""); } _nte.val("").trigger("change"); }); } } } /** * DB내용 다가져온다 ㅇㅇ pch부자 * @param jsonParam { "sqlId":"", "":"".... } * @return resultList_json * ex) fnc_getJsonAllDataListBySqlId({"sqlId":"contractMgmt.getContractMgmtInfo", "objId":"-267018167"}); */ function fnc_getJsonAllDataListBySqlId(jsonParam){ var resultList_json = {}; $.ajax({ url:"/common/getJsonAllDataListBySqlId.do", type:"POST", data: jsonParam, dataType:"json", async:false, success:function(data){ resultList_json = data }, error: function(jqxhr, status, error){ } }); return resultList_json; } //fnc_getJsonAllDataListBySqlIdForSelectBox({"sqlId":"common.getProgressProjectNoList", "objId":"-267018167"})); function fnc_getJsonAllDataListBySqlIdForSelectBox(selectboxId, jsonParam, showEmpty, selectedVal){ data = fnc_getJsonAllDataListBySqlId(jsonParam); var resultList = data; $("#"+selectboxId).empty(); if(showEmpty) $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var codeId = resultList[i].CODE_ID; var codeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } } //발주 정보목록을 가져온다. function fnc_getPurchaseOrderCdListAppend(selectboxId,selectedVal,partObjid,partnerObjid){ $.ajax({ url:"/common/getPurchaseOrderCdList.do", type:"POST", data:{"part_objid":partObjid,"partnerObjid":partnerObjid}, dataType:"json", async:false, success:function(data){ var resultList = data; $("#"+selectboxId).empty(); $("#"+selectboxId).append(""); if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE_ID; var commonCodeName = resultList[i].CODE_NAME; $("#"+selectboxId).append(""); } $("#"+selectboxId).val(selectedVal); } }, error: function(jqxhr, status, error){ } }); } function fnc_numToKr(strNum, prefix, suffix) { if(!$.isNumeric(fnc_checkNullDefaultValue( strNum ))){ Swal.fire("숫자오류"); return; } var sign = ""; //부호 if(Number(strNum) < 0){ sign = "-"; strNum = strNum.replace("-",""); } var hanA = new Array("","일","이","삼","사","오","육","칠","팔","구","십"); var danA = new Array("","십","백","천","","십","백","천","","십","백","천","","십","백","천"); var result = ""; for(i=0; i선택"); if("" != objid){ $.ajax({ url:"/common/getUnitTitleCodeList.do", type:"POST", data:{"isJson":true,"OBJID":objid}, dataType:"json", async:false, success:function(data){ resultList = data if(0 < resultList.length){ for (var i = 0; i < resultList.length; i++) { var commonCodeId = resultList[i].CODE; var commonCodeName = resultList[i].NAME; $("#"+selectboxId).append(""); } } }, error: function(jqxhr, status, error){ } }); } } function fnc_maxLengthCheck(object){ if (object.value.length > object.maxLength){ object.value = object.value.slice(0, object.maxLength); } } //230330 페이지네이션 없애고 총건수 그리드위에 표시 function fnc_changePaginationAndTotalCountArea(){ /* if(fnc_isNotEmpty($(".page_pro"))) { //$(".pdm_page").hide(); //페이징 영역 숨김 $(".page_pro").find("table").hide(); $(".btn_wrap").append($(".pdm_page")); } //$(".in_table_scroll_wrap ._table2").css("height", "650px"); //$(".in_table_scroll_wrap ._table2").height("650px"); if(fnc_isNotEmpty($("._table2"))) { $(".contents_page_basic_margin > ._table2").height("643px"); } */ } function fnc_calculateContentHeight(gridDivId, etcHeight) { var windowHeight = $(window).height(); var headerHeight = 0;//fnc_checkNullDefaultValue($('.header').outerHeight(), 80); //80 var menuTitleHeight = fnc_checkNullDefaultValue($('.plm_menu_name_gdnsi h2').outerHeight(), 35); //35 var searchZonHeight = $('#plmSearchZon').outerHeight(); //25/50 var totalCntAreaHeight = $('.totalCntArea').outerHeight(); //totalCntArea total_count_text //25 //var pagingAreaHeight = $('.pdm_page').outerHeight(); //paging 230615추가 var pagingAreaHeight = $('.table_paging_wrap').outerHeight(); //paging 230615추가 if(!etcHeight) etcHeight = 0; var contentHeight = windowHeight - headerHeight - menuTitleHeight - searchZonHeight - totalCntAreaHeight - 0 - pagingAreaHeight - (pagingAreaHeight > 0 ? 25 : 0) - etcHeight; //Swal.fire(contentHeight + " : " + headerHeight + " : " + menuTitleHeight + " : " + searchZonHeight + " : " + totalCntAreaHeight + " : " ); $('#'+gridDivId).css('height', contentHeight); //calc(100% - 56px); max-height: calc(100% - 56px); //$('.content').css('max-height', contentHeight); //$(".total_count_text").empty(); } function fnc_reCalculateContentHeight(gridDivId, width){ fnc_calculateContentHeight(gridDivId, width); $('#'+gridDivId).off("fnc_calculateContentHeight"); $(window).resize(function() { fnc_calculateContentHeight(gridDivId, width); }); } function fnc_approvalDetail(approvalObjId, routeObjId){ var params = "?approvalObjId="+approvalObjId; params += "&routeObjId="+routeObjId; window.open("/approval/approvalDetail.do"+params,"approvalDetailPopup","width=650 height=400 menubar=no status=no"); } function fnc_convertTypePOToPart(poType){ /* 0001788 구매품표준 0001540 용접품 0001398 사내제작품 0001397 가공품 0001396 레이저품 0000085 표준품 0000065 사급품 0000064 제작품 0000063 구매품 */ if(poType == '0001069'){ //일반부품 //return '0000085'; //표준품 return ''; }else if(poType == '0001070'){ //장납기품 return '0000063'; }else if(poType == '0001787'){ //구매품표준 return '0001788'; //구매품표준 }else if(poType == '0001654'){ //사급품 return '0000065'; }else if(poType == '0001538'){ //잡자재 return ''; }else if(poType == 'aa'){ return ''; }else if(poType == 'aa'){ return ''; } } //tabulator용 Function 시작 //tabulator 그리드 사용 시 컬럼에 A Tag와 같은 디자인 적용 시 사용 function fnc_createGridAnchorTag(cell, formatterParams, onRendered){ var appendText = ""; var fieldValue = fnc_checkNull(cell.getValue()); appendText += ""+fieldValue+""; return appendText; } function fnc_createGridApprovalAnchorTag(cell, formatterParams, onRendered){ var appendText = ""; var targetStatusTitle = fnc_checkNull(cell.getValue()); var targetStatus = fnc_checkNull(cell.getData().APPR_STATUS).toUpperCase(); var approvalObjId = fnc_checkNull(cell.getData().APPROVAL_OBJID); var routeObjId = fnc_checkNull(cell.getData().ROUTE_OBJID); if("CREATE" == targetStatus || "REJECT" == targetStatus){ appendText += targetStatusTitle; }else{ appendText += ""+targetStatusTitle+""; } return appendText; } function fnc_createGridAnchorTagAndComma(cell, formatterParams, onRendered){ var appendText = ""; var fieldValue = numberWithCommas(fnc_checkNull(cell.getValue())); appendText += ""+fieldValue+""; return appendText; } //하위 정보 존재여부를 보여주는 영역 처리 시 사용. function fnc_subInfoCntFormatter(cell){ var targetCnt = fnc_checkNullDefaultValue(cell.getValue(),0); var imgTag = ""; if(0 < targetCnt){ imgTag = fnc_getFolderIcon(); }else{ imgTag = fnc_getFolderEmptyIcon(); } return imgTag; } //하위 정보 존재여부를 보여주는 영역 처리 시 사용. function fnc_subInfoCntFormatter2(targetCnt){ var imgTag = ""; if(0 < targetCnt){ imgTag = fnc_getFolderIcon(); }else{ imgTag = fnc_getFolderEmptyIcon(); } return imgTag; } function fnc_subInfoValueFormatter(cell){ var targetCnt = fnc_checkNullDefaultValue(cell.getValue(),0); var imgTag = ""; if(fnc_isEmpty(targetCnt)){ imgTag = fnc_getFolderEmptyIcon(); }else{ imgTag = fnc_getFolderIcon(); } return imgTag; } function fnc_getFolderIcon(){ return ""; } function fnc_getFolderEmptyIcon(){ return ""; } function fnc_subInfoCntFileFormatter(cell){ var targetCnt = fnc_checkNullDefaultValue(cell.getValue(),0); var imgTag = ""; if(0 < targetCnt){ imgTag = fnc_getClipIcon(); }else{ imgTag = fnc_getHyphenIcon(); //imgTag = "-"; } return imgTag; } function fnc_subDownCntFileFormatter(cell){ var targetCnt = fnc_checkNullDefaultValue(cell.getValue(),0); var imgTag = ""; if(0 < targetCnt){ imgTag = fnc_getDownIcon(); }else{ imgTag = fnc_getDownEmptyIcon(); //imgTag = "-"; } return imgTag; } function fnc_getDownIcon(){ return ""; } function fnc_getDownEmptyIcon(){ return ""; } function fnc_subInfoCntFileFormatter2(targetCnt){ var imgTag = ""; if(0 < targetCnt){ imgTag = fnc_getClipIcon(); }else{ imgTag = fnc_getHyphenIcon(); //imgTag = "-"; } return imgTag; } function fnc_getClipIcon(){ return ""; } function fnc_getHyphenIcon(){ return "";; } function selectSetVal(selValName, doTrigger){ $('select').each(function(index){ var selVal = $(this).attr(selValName); var classVal = $(this).attr("class"); $(this).val(selVal); //console.log('classVal:'+classVal); if(doTrigger || classVal && classVal.indexOf("select2") > -1){ $(this).trigger("change"); } }); } $(document).ready(function() { // 초기화 버튼 추가 $('.btnArea').append(""); function initializeButtons() { var gridToUse = typeof _tabulGrid !== 'undefined' ? _tabulGrid : typeof grid !== 'undefined' ? grid : null; if (gridToUse && gridToUse.getRows().length > 0) { var pageTitle = $('.plm_menu_name_gdnsi h2 span').text().trim(); $('.btnArea').append(""); $(document).on('click', '.excelBtn', async function() { console.log("Excel 다운로드 버튼 클릭됨"); var data = gridToUse.getData(); var columns = gridToUse.getColumnDefinitions(); console.log("Original columns:", columns); const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet(pageTitle || "ExcelData"); // 제목 추가 worksheet.mergeCells('A1:E1'); const titleCell = worksheet.getCell('A1'); titleCell.value = pageTitle; titleCell.font = { size: 16, bold: true }; titleCell.alignment = { vertical: 'middle', horizontal: 'center' }; worksheet.getRow(1).height = 30; // 빈 행 추가 worksheet.addRow([]); // HTML 태그 제거 함수 (DOM 파서 사용) function stripTags(input) { if (typeof input !== 'string') return input; var tmp = document.createElement("DIV"); tmp.innerHTML = input; return tmp.textContent || tmp.innerText || ""; } // 컬럼 처리 함수 function processColumns(columns, depth = 0) { let processedColumns = []; columns.forEach((col) => { if (col.visible === false || col.title === undefined) return; let column = { title: stripTags(col.title), // 컬럼 제목에서도 태그 제거 field: col.field, depth: depth, colspan: 1, rowspan: 1, children: [], headerHozAlign: col.headerHozAlign, hozAlign: col.hozAlign, width: col.width, formatter: col.formatter, formatterParams: col.formatterParams }; if (col.columns) { column.children = processColumns(col.columns, depth + 1); if (column.children.length > 0) { column.colspan = column.children.reduce((sum, child) => sum + child.colspan, 0); } } processedColumns.push(column); }); return processedColumns; } // 스팬 계산 함수 function calculateSpans(columns, maxDepth) { columns.forEach(col => { if (col.children.length === 0) { col.rowspan = maxDepth - col.depth; } else { calculateSpans(col.children, maxDepth); col.rowspan = 1; } }); } // 최대 깊이 계산 함수 function getMaxDepth(column) { if (column.children.length === 0) return column.depth; return Math.max(...column.children.map(child => getMaxDepth(child))); } // 헤더 셀 추가 함수 function addHeaderCells(worksheet, columns, startRow, startCol, maxDepth) { columns.forEach(col => { const cell = worksheet.getCell(startRow, startCol); cell.value = col.title; let endRow = startRow + (col.children.length === 0 ? maxDepth - col.depth : 0); let endCol = startCol + col.colspan - 1; if (endRow > startRow || endCol > startCol) { worksheet.mergeCells(startRow, startCol, endRow, endCol); } // 스타일 적용 cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FF4472C4' } }; cell.font = { color: { argb: 'FFFFFFFF' }, bold: true }; cell.alignment = { vertical: 'middle', horizontal: col.headerHozAlign || 'center', wrapText: true }; cell.border = { top: { style: 'thin' }, left: { style: 'thin' }, bottom: { style: 'thin' }, right: { style: 'thin' } }; // 열 너비 설정 if (col.width) { worksheet.getColumn(startCol).width = parseFloat(col.width) / 7; // 대략적인 변환 } if (col.children.length > 0) { addHeaderCells(worksheet, col.children, startRow + 1, startCol, maxDepth); } startCol += col.colspan; }); } let processedColumns = processColumns(columns); const maxDepth = Math.max(...processedColumns.map(col => getMaxDepth(col))); calculateSpans(processedColumns, maxDepth); // 헤더 추가 (제목 행과 빈 행 다음부터) const headerStartRow = 3; for (let i = 0; i < maxDepth; i++) { worksheet.addRow([]); } addHeaderCells(worksheet, processedColumns, headerStartRow, 1, maxDepth); // 리프 컬럼 가져오기 function getLeafColumns(columns) { let leafColumns = []; columns.forEach(col => { if (col.children.length > 0) { leafColumns = leafColumns.concat(getLeafColumns(col.children)); } else { leafColumns.push(col); } }); return leafColumns; } let leafColumns = getLeafColumns(processedColumns); console.log("Leaf columns:", leafColumns); // 데이터 추가 (헤더 다음 행부터) const dataStartRow = headerStartRow + maxDepth; data.forEach((row, rowIndex) => { let rowData = leafColumns.map(col => { let value = row[col.field]; // HTML 태그 제거 if (typeof value === 'string') { value = stripTags(value); console.log(`Row ${rowIndex + 1}, Column ${col.field} after stripTags:`, value); } if (col.formatter === "money" && col.formatterParams) { // 금액 포맷팅 적용 let precision = col.formatterParams.precision === false ? 0 : (col.formatterParams.precision || 0); value = new Intl.NumberFormat('ko-KR', { style: 'decimal', minimumFractionDigits: precision, maximumFractionDigits: precision }).format(value); } else if (typeof col.formatter === 'function') { try { value = col.formatter({ value, data: row }); } catch (error) { console.warn(`Error applying formatter for column ${col.field}:`, error); } } return (value === null || value === 'null') ? '' : value; }); // 데이터 셀에 스타일 적용 let excelRow = worksheet.addRow(rowData); excelRow.eachCell((cell, colNumber) => { let column = leafColumns[colNumber - 1]; if (column) { cell.alignment = { vertical: 'middle', horizontal: column.hozAlign || 'left' }; if (column.formatter === "money") { // 금액 셀에 대한 추가 스타일링 cell.numFmt = '#,##0'; // 숫자 형식 적용 } } }); }); // 열 너비 설정 worksheet.columns.forEach((column, index) => { let maxLength = 0; column.eachCell({ includeEmpty: true }, function(cell) { let columnLength = cell.value ? cell.value.toString().length : 10; if (columnLength > maxLength) { maxLength = columnLength; } }); column.width = Math.max(maxLength, 15); }); // 파일명 생성 및 다운로드 (시간 포함) var date = new Date(); var currentDate = date.getFullYear() + ("0" + (date.getMonth() + 1)).slice(-2) + ("0" + date.getDate()).slice(-2) + "_" + ("0" + date.getHours()).slice(-2) + ("0" + date.getMinutes()).slice(-2); var fileName = (pageTitle || "ExcelData") + "_" + currentDate + ".xlsx"; const buffer = await workbook.xlsx.writeBuffer(); saveAs(new Blob([buffer]), fileName); console.log("Excelww 다운로드 프로세스 완료"); }); } else { setTimeout(initializeButtons, 1); } } // 초기화 버튼 클릭 시 동작 $(document).on('click', '.resetBtn', function() { $("input[type='text']").val(""); $("input[type='checkbox']").prop('checked', false); $('select.select2').val(null).trigger('change'); }); initializeButtons(); }); function fnc_hideResetButton(Btnclass){ $(".resetBtn").hide(); } function fn_createResetButton(Btnclass){ $('.'+Btnclass).append(""); } function fnc_tabulCallbackFnc(objid, docType, columnField, fileCnt){ var sameRows = _tabulGrid.searchRows("OBJID", "=", objid); sameRows.forEach(function (sameRow) { var sameRowData = sameRow.getData(); sameRowData.FILE_CNT = fileCnt; sameRow.update(sameRowData); //sameRow.update(sameRow.getData()); }); } //tabulator용 Function 종료