ERP-node/WebContent/js/common.js

3257 lines
92 KiB
JavaScript
Raw Permalink Normal View History

2025-08-21 09:41:46 +09:00
/**
* 쓰세염 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<targetSize;i++){
var inputType = $("[required]:eq("+i+")").attr("type");
var validateReqTitle = $("[required]:eq("+i+")").attr("reqTitle");
var validateTitle = $("[required]:eq("+i+")").attr("title");
var alertTitle = "";
if("" == validateReqTitle || null == validateReqTitle){
alertTitle = "내용";
}else{
alertTitle = validateReqTitle;
}
if("내용" == alertTitle){
if("" == validateTitle || null == validateTitle){
alertTitle = "내용";
}else{
alertTitle = validateTitle;
}
}
if(inputType == "text" || inputType == "select" || inputType == "number" || inputType == "textarea"){
if(fnc_isEmpty($.trim($("[required]:eq("+i+")").val()))){
if("text" == inputType || "textarea" == inputType){
Swal.fire("입력된 "+alertTitle+"이/가 없습니다.");
}else if("number" == inputType){
Swal.fire("입력된 "+alertTitle+"이/가 없습니다.");
}else if("select" == inputType){
Swal.fire("선택된 "+alertTitle+"이/가 없습니다.");
}
$("[required]:eq("+i+")").focus();
return false;
}
}else if(inputType == "radio"){
if(!$("input:radio[name="+$("[required]:eq("+i+")").attr("name")+"]").is(':checked')){
Swal.fire("선택된 "+alertTitle+"이/가 없습니다.");
return false;
}
}else if(inputType == "checkbox"){
if(!$("input:checkbox[name="+$("[required]:eq("+i+")").attr("name")+"]").is(':checked')){
Swal.fire("선택된 "+alertTitle+"이/가 없습니다.");
return false;
}
}
}
}
return true;
}
}
function fnc_validate2(targetName){
if(0 < $("#"+targetName).length){
var targetSize = $("#"+targetName).find("[required]").size();
if(0 < targetSize){
for(var i=0;i<targetSize;i++){
var inputType = $("[required]:eq("+i+")").attr("type");
var validateReqTitle = $("[required]:eq("+i+")").attr("reqTitle");
var validateTitle = $("[required]:eq("+i+")").attr("title");
var alertTitle = "";
if("" == validateReqTitle || null == validateReqTitle){
alertTitle = "내용";
}else{
alertTitle = validateReqTitle;
}
if("내용" == alertTitle){
if("" == validateTitle || null == validateTitle){
alertTitle = "내용";
}else{
alertTitle = validateTitle;
}
}
if(inputType == "text" || inputType == "select" || inputType == "number" || inputType == "textarea"){
if("" == $("[required]:eq("+i+")").val()){
if("text" == inputType || "textarea" == inputType){
alert("입력된 "+alertTitle+"이/가 없습니다.");
}else if("number" == inputType){
alert("입력된 "+alertTitle+"이/가 없습니다.");
}else if("select" == inputType){
alert("선택된 "+alertTitle+"이/가 없습니다.");
}
$("[required]:eq("+i+")").focus();
return false;
}
}else if(inputType == "radio"){
if(!$("input:radio[name="+$("[required]:eq("+i+")").attr("name")+"]").is(':checked')){
alert("선택된 "+alertTitle+"이/가 없습니다.");
return false;
}
}else if(inputType == "checkbox"){
if(!$("input:checkbox[name="+$("[required]:eq("+i+")").attr("name")+"]").is(':checked')){
alert("선택된 "+alertTitle+"이/가 없습니다.");
return false;
}
}
}
}
return true;
}
}
function fnc_validate(targetName){
return fnc_valitate(targetName);
}
function fnc_datepick(){
var $dateinput = $("input");
for(var i=0; i<$dateinput.length; i++){
var id = $dateinput.eq(i).attr("id");
if(id != null){
if(id.indexOf("Date")>-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<files.length; i++){
if(files[i]){
var fileSize = files[i].size;
if(fileSize > 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 = "<option value=''>선택</option>";
if(val == "design"){
append += "<option value='L1'>L1</option>";
append += "<option value='L2'>L2</option>";
append += "<option value='L3'>L3</option>";
append += "<option value='L4'>L4</option>";
append += "<option value='INSTL'>INSTL</option>";
}else if(val == "develop"){
append += "<option value='초도'>초도</option>";
append += "<option value='S/B'>S/B</option>";
append += "<option value='P1'>P1</option>";
append += "<option value='P2'>P2</option>";
append += "<option value='M'>M</option>";
}else if(val == "production"){
append += "<option value='양산'>양산</option>";
}
$("#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 = "<option value=''>선택</option>";
if(val == "design"){
append += "<option value='구조'>구조</option>";
append += "<option value='수밀'>수밀</option>";
append += "<option value='NVH'>NVH</option>";
append += "<option value='DATA'>DATA</option>";
append += "<option value='생산성'>생산성</option>";
append += "<option value='조립성'>조립성</option>";
append += "<option value='성형성'>성형성</option>";
append += "<option value='작업성'>작업성</option>";
append += "<option value='원가절감'>원가절감</option>";
append += "<option value='기타'>기타</option>";
}else if(val == "mold"){
append += "<option value='크랙, 네크'>크랙, 네크</option>";
append += "<option value='주름'>주름</option>";
append += "<option value='버(BURR)'>버(BURR)</option>";
append += "<option value='스크래치'>스크래치</option>";
append += "<option value='이종재질'>이종재질</option>";
append += "<option value='두께불량'>두께불량</option>";
append += "<option value='녹(RUST)'>녹(RUST)</option>";
append += "<option value='홀(HOLE)'>홀(HOLE)</option>";
append += "<option value='형상변형'>형상변형</option>";
append += "<option value='미성형'>미성형</option>";
append += "<option value='평탄도'>평탄도</option>";
append += "<option value='이물질'>이물질</option>";
append += "<option value='공정누락'>공정누락</option>";
append += "<option value='기타'>기타</option>";
}
/*
else if(val == "quality"){
append += "<option value='정도'>정도</option>";
append += "<option value='외관'>외관</option>";
append += "<option value='EO'>EO</option>";
append += "<option value='설계'>설계</option>";
append += "<option value='용접'>용접</option>";
append += "<option value='Tool'>Tool</option>";
append += "<option value='작업자'>작업자</option>";
append += "<option value='기타'>기타</option>";
}
*/
else if(val == "facilities"){
append += "<option value='HW조립'>HW조립</option>";
append += "<option value='SPOT용접'>SPOT용접</option>";
append += "<option value='CO2용접'>CO2용접</option>";
append += "<option value='오조립'>오조립</option>";
append += "<option value='구조용접착제'>구조용접착제</option>";
append += "<option value='TAPE실러'>TAPE실러</option>";
append += "<option value='산포'>산포</option>";
append += "<option value='지그'>지그</option>";
append += "<option value='PAD'>PAD</option>";
append += "<option value='TOOL'>TOOL</option>";
append += "<option value='풀프루프'>풀프루프</option>";
append += "<option value='작업성'>작업성</option>";
append += "<option value='기타'>기타</option>";
}else if(val == "etc"){
append += "<option value='PAD'>PAD</option>";
append += "<option value='HW'>HW</option>";
append += "<option value='PLT'>PLT</option>";
append += "<option value='구조용접착제'>구조용접착제</option>";
append += "<option value='TAPE실러'>TAPE실러</option>";
append += "<option value='작업자'>작업자</option>";
append += "<option value='안전성'>안전성</option>";
append += "<option value='TOOL'>TOOL</option>";
append += "<option value='기타'>기타</option>";
}
$("#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<concatList.length;i++){
var commonCodeId = concatList[i].CODE_ID;
var commonCodeName = concatList[i].CODE_NAME;
resultStr[i] = (commonCodeId,commonCodeName);
}
},
error: function(jqxhr, status, error){
}
});
return resultStr;
}
//JQGrid 사용시 공급업체 정보목록을 select box option 구성용으로 사용
function fnc_getSupplyCodeListJsonStr(){
var resultStr = {};
$.ajax({
url:"/common/getSupplyCodeList.do",
type:"POST",
dataType:"json",
async:false,
success:function(data){
var resultList = data
resultStr[""] = "선택";
for(var i=0;i<resultList.length;i++){
var commonCodeId = resultList[i].CODE_ID;
var commonCodeName = resultList[i].CODE_NAME;
resultStr[commonCodeId] = commonCodeName;
}
},
error: function(jqxhr, status, error){
}
});
return resultStr;
}
function fnc_getSupplyCodeList(){
var resultList = null;
$.ajax({
url:"/common/getSupplyCodeList.do",
type:"POST",
dataType:"json",
async:false,
success:function(data){
resultList = data
},
error: function(jqxhr, status, error){
}
});
return resultList;
}
//codeId를 부모로 사용하는 코드의 정보목록을 가져온다.
function fnc_getCodeListAppend(codeId,selectboxId,selectedVal){
var resultList = fnc_getCodeList(codeId);
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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<targetTypeArr.length;i++){
var tempMap = targetTypeArr[i];
// console.log("tempMap:"+tempMap);
if(tempMap.code == targetCode){
targetTypeTitle = tempMap.name;
break;
}
}
// console.log("targetTypeTitle:"+targetTypeTitle);
return targetTypeTitle;
}
function fnc_getProjectNoList(selectboxId,selectedVal){
$.ajax({
url:"/common/getProjectNoList.do",
type:"POST",
data:{},
dataType:"json",
async:false,
success:function(data){
var resultList = data;
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+codeId+"'>"+codeName+"</option>");
}
$("#"+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("<option value=''>선택</option>");
if(0 < resultList.length){
for (var i = 0; i < resultList.length; i++) {
var code = resultList[i].CODE;
var name = resultList[i].NAME;
$("#"+selectboxId).append("<option value='"+code+"'>"+name+"</option>");
}
$("#"+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("<option value=''>선택</option>");
if(0 < resultList.length){
for (var i = 0; i < resultList.length; i++) {
var code = resultList[i].CODE;
var name = resultList[i].NAME;
$("#"+selectboxId).append("<option value='"+code+"'>"+name+"</option>");
}
$("#"+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 = "<select class='select2'>";
}else{
resultTxt = "<select>";
}
resultTxt += "<option value=''>선택</option>";
if(0 < resultList.length){
for (var i = 0; i < resultList.length; i++) {
var code = resultList[i].CODE;
var name = resultList[i].NAME;
resultTxt += "<option value='"+code+"'>"+name+"</option>";
}
}
resultTxt += "</select>";
},
error: function(jqxhr, status, error){
}
});
return resultTxt;
}
function fnc_getUserList2(selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
$.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("<option value='"+code+"' data-EMAIL='"+email+"' data-TEL='"+tel+"' data-HP='"+hp+"'>"+deptName+" "+name+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+code+"'>"+deptName+" "+name+"</option>");
}
$("#"+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 = "<select class='select2'>";
}else{
resultTxt = "<select>";
}
resultTxt += "<option value=''>선택</option>";
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 += "<option value='"+code+"'>"+deptName+" "+name+"</option>";
}
}
resultTxt += "</select>";
},
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("<option value=''>선택</option>");
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("<option value='"+objId+"'>"+code+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+objId+"'>"+code+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+objId+"'>"+code+"(rev:"+codeRev+")</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+objId+"'>"+code+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+objId+"'>"+specNo+"("+docName+")</option>");
}
$("#"+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("<option value=''>선택</option>");
$.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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
function fnc_productUPGList(productMgmtObjId,upgMasterObjId,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_productUPGNEWList(productMgmtObjId,upgMasterObjId,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeId+"("+commonCodeName+")</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_getProductUPGPARTList(productUpgObjId,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"' id='"+partName+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_AsproductList(year,custCd,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"' id='"+GOODSCD+"' data-pshellno='"+PSHELLNO+"' data-goodsguarantee='"+GOODSGUARANTEE+"' data-inoutdate='"+INOUTDATE+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_ContractcodeList(OBJID,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_ContractproductList(OBJID,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_OptionChildlist(OBJID,category,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_getOptionHighselect(OBJID,category,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fnc_productModelList(productMgmtObjId,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeId+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
//구조등록 Rev 리스트 조회
function fnc_getProductRevtList(selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value='' >신규생성</option>");
$.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("<option value='"+commonCodeId+"' ids='"+commId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val();
}
},
error: function(jqxhr, status, error){
}
});
}
function fnc_AsContractYearList(custCd,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
function fnc_getAjaxProductMgmtList(selectboxId,productCategory,productType,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
$.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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
function fnc_address2List(CODE,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fn_UnitCodeList(project_objid,selectboxId,selectedVal, customer_objid){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function getProjectUnitCodeList(project_objid,selectboxId,selectedVal, customer_objid){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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<resultList.length-1){
str += ',';
}
}
}
},
error: function(jqxhr, status, error){
}
});
}
$("#"+objectId).text(str);
return "{"+str+"}";
}
function fn_BomUnitCodeList(objid,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fn_BomPartLastList(OBJID,UNIT_CODE,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option data-part_name='"+PART_NAME+"' data-spec='"+SPEC+"' data-maker='"+MAKER+"' value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
function fn_BomPartList(OBJID,UNIT_CODE,selectboxId,selectedVal){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option data-part_name='"+PART_NAME+"' data-spec='"+SPEC+"' data-maker='"+MAKER+"' data-material='"+MATERIAL+"' data-part_type='"+PART_TYPE+"' value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+selectboxId).val(selectedVal);
}
},
error: function(jqxhr, status, error){
}
});
}
}
/**
고정컬럼 : CODE_ID, CODE_NAME, PARENT_CODE_ID
select box 기본값 속성추가 : <select def-value=""></select>
@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("<option value=\"\">선택</option>");
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("<option value=\""+row["CODE_ID"]+"\" "+attr+">"+row["CODE_NAME"]+"</option>");
}
te.val( te.attr("def-value") );
if(l<maxStep){
var narr= eval("arrLEV"+(l+1));
var nte = eval("$(step"+(l+1)+"SelBox)");
te.change({narr:narr, nte:nte}, function(e){
var _nte = e.data.nte;
var _narr= e.data.narr;
_nte.empty();
_nte.append("<option value=\"\">선택</option>");
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("<option value=\""+row["CODE_ID"]+"\" "+attr+">"+row["CODE_NAME"]+"</option>");
}
_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("<option value=''>선택</option>");
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("<option value='"+codeId+"'>"+codeName+"</option>");
}
$("#"+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("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
$("#"+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<strNum.length; i++) {
str = "";
han = hanA[strNum.charAt(strNum.length-(i+1))];
if(han != "") str += han+danA[i];
if(i == 4) str += "만";
if(i == 8) str += "억";
if(i == 12) str += "조";
result = str + result;
}
if(strNum != 0){
result = prefix + sign+result + suffix;
}
return result ;
}
function fn_addComma(data){
return data.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function fn_addCommaAndFloat(data){
var dataArr = data.split(".");
var resultData = "";
console.log(dataArr.length);
if(1 == dataArr.length){
resultData = ((dataArr[0]).replace(/[^0-9]/g,"")).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}else if(1 < dataArr.length){
resultData = ((dataArr[0]).replace(/[^0-9]/g,"")).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "." +dataArr[1].replace(/[^0-9]/g,"");
}
return resultData;
}
function fn_UnitTitleList(objid,selectboxId){
$("#"+selectboxId).empty();
$("#"+selectboxId).append("<option value=''>선택</option>");
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("<option value='"+commonCodeId+"'>"+commonCodeName+"</option>");
}
}
},
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 += "<a href='#' href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
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 += "<a href='#' href='#none' style='color:#0000EE'>"+targetStatusTitle+"</a>";
}
return appendText;
}
function fnc_createGridAnchorTagAndComma(cell, formatterParams, onRendered){
var appendText = "";
var fieldValue = numberWithCommas(fnc_checkNull(cell.getValue()));
appendText += "<a href='#' href='#none' style='color:#0000EE'>"+fieldValue+"</a>";
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 "<img src='/images/folder_blue.png' height='25px' width='25px' />";
}
function fnc_getFolderEmptyIcon(){
return "<img src='/images/file_empty.png' height='25px' width='25px' />";
}
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 "<img src='/images/downlord.icn-03.png' height='25px' width='25px' />";
}
function fnc_getDownEmptyIcon(){
return "<img src='/images/downlord.icn-02.png' height='25px' width='25px' />";
}
function fnc_subInfoCntFileFormatter2(targetCnt){
var imgTag = "";
if(0 < targetCnt){
imgTag = fnc_getClipIcon();
}else{
imgTag = fnc_getHyphenIcon();
//imgTag = "-";
}
return imgTag;
}
function fnc_getClipIcon(){
return "<img src='/images/clip-01.png' height='25px' width='25px' />";
}
function fnc_getHyphenIcon(){
return "<img src='/images/hyphen.png' height='25px' width='25px' />";;
}
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("<input type='button' class='plm_btns resetBtn' value='초기화'>");
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("<input type='button' class='plm_btns excelBtn' value='Excel Download'>");
$(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("<input type='button' class='plm_btns resetBtn' value='초기화'>");
}
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 종료