/* * 로그아웃 */ const logout = function () { ajax_json({ url: "/inc/common.ajax.php", type: "POST", data: { mode: "memberLogout" }, success: function (data) { if (data.code) { kuls_alert("로그아웃 되었습니다.", function () { location.href = "/ksvc/"; }); } }, error: function (request, status, error) { kuls_alert(error.message); }, }); }; // 사이드메뉴 const side_menu_load = function (menu_code) { ajax_json({ url: "/inc/common.ajax.php", type: "POST", data: { mode: "getSiteMenuList", menu_code: menu_code, }, success: function (data) { if (data.code) { jQuery(".side-nav .side-menu").fancytree({ activeVisible: true, clickFolderMode: 3, source: data.data, // activate: function(e, data){ // if( !data.node.folder ){ // location.href = data.node.data.href || '###'; // } // }, // createNode: function(event, data) { // // 노드 생성 후 span을 a로 변경 // // let node = data.node; // // let spanTag = $(node.span); // // // // let aTag = $("").html(spanTag.find("> span.fancytree-title").html()); // // spanTag.find("> span.fancytree-title").replaceWith(aTag); // }, click: function (event, data) { if (!data.node.folder) { location.href = data.node.data.href || "###"; } }, }); } }, error: function (request, status, error) {}, complete: function (request, status) { jQuery(".side-nav").on("click", "a", function (e) { e.preventDefault(); }); jQuery(".side-nav").on("click", ".node-side-nav", function (e) { if (jQuery(this).find(".expand-icon").length == 0) { let href = jQuery(this).find("> a").attr("href"); href && (location.href = href); }; }); if (jQuery(".fold-btn-container").length) { const container = jQuery(".container"); // container 에 on 클래스: 메뉴가 접힌상태면, 서브메뉴는 하나씩만 열리고 평소에는 닫아주기 if(container.hasClass("on")){ jQuery(".side-nav .side-menu").fancytree("option", "autoCollapse", true); if (jQuery(".side-nav .side-menu").fancytree("instance")) { jQuery.ui.fancytree.getTree(".side-nav .side-menu").expandAll(false); } }else{ jQuery(".side-nav .side-menu").fancytree("option", "autoCollapse", false); } // 닫힘 버튼 클릭하면, container에 on버튼 붙이고 서브메뉴는 위와 동일하게 작동 jQuery(".fold-btn-container").on("click", function() { const sidevar = window.localStorage.getItem('sidevar'); if(sidevar){ window.localStorage.removeItem('sidevar'); jQuery(".side-nav .side-menu").fancytree("option", "autoCollapse", false); container.removeClass("on"); }else{ window.localStorage.setItem('sidevar','on'); jQuery(".side-nav .side-menu").fancytree("option", "autoCollapse", true); if (jQuery(".side-nav .side-menu").fancytree("instance")) { jQuery.ui.fancytree.getTree(".side-nav .side-menu").expandAll(false); } container.addClass("on"); } // const container = jQuery(".container"); // if (container.hasClass("on")) { // container.removeClass("on"); // jQuery(".side-nav .side-menu").fancytree("option", "autoCollapse", false); // } else { // container.addClass("on"); // jQuery(".side-nav .side-menu").fancytree("option", "autoCollapse", true); // if (jQuery(".side-nav .side-menu").fancytree("instance")) { // jQuery.ui.fancytree.getTree(".side-nav .side-menu").expandAll(false); // } // } }); } }, }); }; const cont_hfix = function () { jQuery(".cont_hfix").css("height", 0); let win_h = jQuery(window).outerHeight(); jQuery(".cont_hfix") .toArray() .forEach((tgt) => { let cont_y = jQuery(tgt).offset().top; let cont_height = win_h - cont_y - 20; jQuery(tgt).css("height", cont_height); }); }; const cont_hfix_page = function () { jQuery(".cont_hfix_page").css("height", 0); let win_h = jQuery(window).outerHeight(); jQuery(".cont_hfix_page") .toArray() .forEach((tgt) => { let cont_y = jQuery(tgt).offset().top; let cont_height = win_h - cont_y - 20; jQuery(tgt).css("height", cont_height); }); }; const show_spinner = function () { document.getElementById("loading_div").classList.remove("d-none"); }; const hide_spinner = function () { document.getElementById("loading_div").classList.add("d-none"); }; const pop_filedown = function (file_url, file_ext) { let preview_type = [ "pdf", "jpg", "jpeg", "png", "gif", "tiff", "jfif", "bmp", ]; if (preview_type.indexOf(file_ext) !== -1) { vnLoad( "", "/ksvc/inc/popup.php", "#pop_file_preview", function (loadHtml) { previewModal = kuls_modal(loadHtml, { resizable: true, dontclose: true, }); if (file_ext == "pdf") { document.querySelector("#preview_frame").src = "/include/vendor/pdfjs/web/viewer.html?file=" + encodeURIComponent(file_url); } else { document.querySelector("#preview_frame").src = "/include/vendor/pdfjs/web/imgviewer.php?file=" + encodeURIComponent(file_url); } } ); } else { location.href = file_url; } }; jQuery(document).ready(function () { // localstorage에 sidevar가 있으면 container에 on 클래스 붙이기. const container = jQuery(".container"); const sidevar = window.localStorage.getItem('sidevar'); if(sidevar){ container.addClass("on"); }else{ container.removeClass("on"); } if (jQuery(".side-nav").length) { side_menu_load(menu_code); } cont_hfix(); cont_hfix_page(); }); jQuery(window).on("resize", function () { cont_hfix(); cont_hfix_page(); }); jQuery("#log_out_btn").on("click", function () { kuls_confirm("로그아웃", "정말 로그아웃 하시겠습니까?", () => { logout(); }); }); jQuery(document).on("focus", ".timepicker", function (e) { jQuery(e.target).timepicker({ show2400: true, timeFormat: "H:i", showOn: ["click"], }); }); // if (document.getElementById("hamburger_icon")) { // document.getElementById("hamburger_icon").addEventListener("click", () => { // if ( // document.getElementById("frame_main").classList.contains("full_width") // ) { // document.getElementById("frame_main").classList.remove("full_width"); // } else { // document.getElementById("frame_main").classList.add("full_width"); // } // }); // } /* tabulator 페이징 처리 * 1. sp 변경 * 2.1 ajax.php 에 $params 내 page 변수 추가, * 2.2 ajax.php 에 $row['LIST_NUM'] 추가 * 3.1 tabulator 옵션에 footerElement 추가 * 3.2 filter 무효화 * 3.3 #bntListSearch 조회버튼 및 이벤트 추가 * 3.4 getMainList ajax 에 page 옵션추가 * 3.5 success에 putPagiNation({}) 실행추가 * 4. sort 기능 * 4.1 columnDefaults //컬럼 공통 규칙에 sorter:()=>{}, headerSort: false, 속성부여 * 4.2 columnSort 함수 추가 확인 * 4.3 headerClick 이벤트에 columnSort 함수 설정 * 4.4 sort 가능한 컬럼에 headerSort: true 속성 부여 * */ const putPagiNation = function (conf) { if (!conf.TARGET) return false; conf.NOW_PAGE = conf.NOW_PAGE || 1; conf.PREB_PAGE = conf.PREB_PAGE || 1; conf.NEXB_PAGE = conf.NEXB_PAGE || 1; conf.LAST_PAGE = conf.LAST_PAGE || 1; conf.PAGE_LISTS = conf.PAGE_LISTS || [1]; let ul = document.createElement("ul"); ul.className = "pagination justify-content-center align-items-center"; ul.appendChild( putPageButton({ ...conf, NOW_PAGE: 1, text: '', }) ); ul.appendChild( putPageButton({ ...conf, NOW_PAGE: conf.PREB_PAGE, class: "mr-3", text: '', }) ); for (let i = 0; i < conf.PAGE_LISTS.length; i++) { ul.appendChild( putPageButton({ ...conf, NOW_PAGE: conf.PAGE_LISTS[i], active: conf.PAGE_LISTS[i] == conf.NOW_PAGE, text: conf.PAGE_LISTS[i], }) ); } ul.appendChild( putPageButton({ ...conf, NOW_PAGE: conf.NEXB_PAGE, class: "ml-3", text: '', }) ); ul.appendChild( putPageButton({ ...conf, NOW_PAGE: conf.LAST_PAGE, text: '', }) ); document.querySelector(conf.TARGET).innerHTML = ""; document.querySelector(conf.TARGET).appendChild(ul); }; const putPageButton = function (conf) { let li = document.createElement("li"); let a = document.createElement("a"); let span = document.createElement("span"); span.className = "f_page"; a.className = "pn_link npage btn btn-outline-secondary"; ["click", "keypress"].forEach((evt) => a.addEventListener(evt, () => { conf.callback(conf); }) ); if (conf.active) { a.classList.add("active"); } span.innerHTML = conf.text; a.appendChild(span); li.appendChild(a); conf.class && li.classList.add(conf.class); return li; }; // const popItemList = function (columns, tabrow) { // // 팝업 템플릿 로드 후 모달 출력 // vnLoad("", "/ksvc/inc/popup.inc.php", "#pop_item_search", function (loadHtml) { // let partnerModal = kuls_modal(loadHtml); // const fields = [ // { // formatter: "rownum", // title: "No", // width: 40, // headerSort: false, // hozAlign: "center", // }, // { field: "ITEM_CD", title: "품목코드", width: 80 }, // ]; // const table_pop_item_search = new Tabulator("#popItemList", { // layout: "fitColumns", // data: [], // 기본 데이터 // height: "100%", // columns: fields, // 컬럼 설정 // columnDefaults: { // vertAlign: "middle", // hozAlign: "center", // resizable: "header", // Resize 는 헤더에서만 가능 // headerHozAlign: "center", // 헤더 정렬 // headerSortTristate: true, // 정렬 => 정/역/초기화 // }, // headerSortElement: "", // 정렬 아이콘 // }); // const getPopItemList = function () { // // 리스트 불러오기 // ajax_json({ // url: "/ksvc/inc/common.ajax.php", // data: { mode: "getItemList" }, // success: function (data) { // if (data.code) { // table_pop_item_search.setData(data.data); // } // }, // error: function (request, status, error) { // // kuls_alert(error.message); // }, // }); // }; // // const setTableFilter = function () { // // // 검색어 필터 적용 // // let stxt = document.querySelector("#awn-popup-wrapper input[name=stxt]").value.trim(); // // let sgrp = document.querySelector("#awn-popup-wrapper select[name=sgrp]").value.trim(); // // table_pop_item_search.setFilter(function (data) { // // return ( // // (!sgrp || data["SALES_GRP"] === sgrp) && // // (!stxt || // // data["ITEM_CD"].search(new RegExp(stxt, "i")) !== -1) // // ); // // }, "=", true); // // }; // const setPopPartnerData = function (e, tgt) { // // Row 더블클릭 실행 // let row = tgt._row; // if (tabrow) { // let uptjson = { _STATUS_: tabrow.getData()["_STATUS_"] || "U" }; // Object.keys(columns).forEach((key) => { // if (key === "tgt_id") { // uptjson[columns[key]] = row.data["ITEM_CD"]; // } // }); // tabrow.updateData(uptjson); // } else { // if (document.querySelector(columns.tgt_id)) // document.querySelector(columns.tgt_id).value = row.data["ITEM_CD"]; // if (document.querySelector(columns.tgt_name)) // document.querySelector(columns.tgt_name).dispatchEvent(new Event("change")); // } // partnerModal.delete(); // }; // document.querySelector("#awn-popup-wrapper [name=stxt]").addEventListener("keyup", function () { // // 검색어 입력 이벤트 // setTableFilter(); // }); // // document.querySelector("#awn-popup-wrapper .btnPopSearch").addEventListener("click", getPopPartnerList); // // document.querySelector("#awn-popup-wrapper .btnPopInit").addEventListener("click", initPopPartnerData); // table_pop_item_search.on("rowDblClick", setPopPartnerData); // Row 더블클릭 이벤트 // table_pop_item_search.on("tableBuilt", getPopItemList); // 초기 데이터 불러오기 이벤트 // }); // }; const popPartnerList = function (columns, tabrow) { //tabrow 존재하면 (tabulator 필드명), 그외는 거래처코드 selector=>tgt_id, 거래처명 selector => 거래처명 //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_partner_search", function (loadHtml) { let partnerModal = kuls_modal(loadHtml); let selecttag = document.querySelector("#sgrp"); selecttag.options.length = 0; let opt = document.createElement("option"); opt.value = ""; opt.text = "- 전 체 -"; selecttag.add(opt); Object.keys(varsSALES_GRP).forEach((key) => { opt = document.createElement("option"); opt.value = key; opt.text = varsSALES_GRP[key]; selecttag.add(opt); }); const fields = [ { formatter: "rownum", title: "No", width: 40, headerSort: false, hozAlign: "center", }, { field: "SALES_GRP", title: "영업구분", width: 80, formatter: (cell) => varsSALES_GRP[cell.getValue()], }, { field: "BP_CD", title: "거래처", width: 80 }, { field: "BP_NM", title: "거래처명", width: 150 }, { field: "REPRESN_NM", title: "대표자명", width: 100 }, { field: "CURRENCY_CD", title: "거래화폐", width: 90 }, { field: "PUR_FLG", title: "매입처", width: 70, formatter: tb_common_funtions.formatterSelCircleIcon, }, { field: "SAL_FLG", title: "매출처", width: 70, formatter: tb_common_funtions.formatterSelCircleIcon, }, ]; const table_pop_partner_search = new Tabulator("#pop_partner_list", { layout: "fitColumns", data: [], //기본 데이터 height: "100%", columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header", //Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //정렬 => 정/역/초기화 }, headerSortElement: "", //정렬 아이콘 }); const getPopPartnerList = function () { //리스트 불러오기 ajax_json({ url: "/ksvc/inc/common.ajax.php", data: { mode: "getPartnerList" }, success: function (data) { if (data.code) { table_pop_partner_search.setData(data.data); if (columns.tgt_filter && columns.txt_filter) { document.querySelector(columns.tgt_filter).value = columns.txt_filter; setTableFilter(); } } }, error: function (request, status, error) { //kuls_alert(error.message); }, }); }; const setTableFilter = function () { //검색어 필터 적용 let stxt = trim( document.querySelector("#awn-popup-wrapper input[name=stxt]").value ); let sgrp = trim( document.querySelector("#awn-popup-wrapper select[name=sgrp]").value ); table_pop_partner_search.setFilter( function (data) { return ( (!sgrp || data["SALES_GRP"] === sgrp) && (!stxt || data["BP_CD"].search(RegExp(stxt, "is")) !== -1 || data["BP_NM"].search(RegExp(stxt, "is")) !== -1 || data["BP_FULL_NM"].search(RegExp(stxt, "is")) !== -1) ); }, "=", true ); }; const setPopPartnerData = function (e, tgt) { //Row 더블클릭 실행 let row = tgt._row; if (tabrow) { let uptjson = { _STATUS_: tabrow.getData()["_STATUS_"] || "U" }; Object.keys(columns).forEach((key) => { switch (key) { case "tgt_id": uptjson[columns[key]] = row.data["BP_CD"]; break; case "tgt_name": uptjson[columns[key]] = row.data["BP_NM"]; break; case "tgt_full_name": uptjson[columns[key]] = row.data["BP_FULL_NM"] || row.data["BP_NM"]; break; case "tgt_addr": uptjson[columns[key]] = row.data["ADDR1"]; break; case "tgt_currency": uptjson[columns[key]] = row.data["CURRENCY_CD"]; break; case "tgt_chid": uptjson[columns[key]] = row.data["BP_PRSN_ID"]; break; case "tgt_chname": uptjson[columns[key]] = row.data["BP_PRSN_NM"]; break; case "tgt_chmail": uptjson[columns[key]] = row.data["BP_PRSN_EMAIL"]; break; case "tgt_chtel": uptjson[columns[key]] = row.data["BP_PRSN_TEL_NO"]; break; case "tgt_chcell": uptjson[columns[key]] = row.data["BP_PRSN_CELL_NO"]; break; case "tgt_chfax": uptjson[columns[key]] = row.data["BP_PRSN_FAX_NO"]; break; case "tgt_portnm": uptjson[columns[key]] = row.data["PORT_NM"]; break; case "tgt_sales_grp": uptjson[columns[key]] = row.data["SALES_GRP"]; break; } }); tabrow.updateData(uptjson); // if( tgt_id && tabrow.getCell(tgt_id) ) tabrow.getCell(tgt_id).setValue(row.data['BP_CD']); // if( tgt_name && tabrow.getCell(tgt_name)) tabrow.getCell(tgt_name).setValue(row.data['BP_NM']); // if( tgt_addr && tabrow.getCell(tgt_addr)) tabrow.getCell(tgt_addr).setValue(row.data['ADDR1']); // if( tgt_currency && tabrow.getCell(tgt_currency)) tabrow.getCell(tgt_currency).setValue(row.data['CURRENCY_CD']); } else { if (document.querySelector(columns.tgt_id)) document.querySelector(columns.tgt_id).value = row.data["BP_CD"]; if (document.querySelector(columns.tgt_name)) document.querySelector(columns.tgt_name).value = row.data["BP_NM"]; if (document.querySelector(columns.tgt_full_name)) document.querySelector(columns.tgt_full_name).value = row.data["BP_FULL_NM"] || row.data["BP_NM"]; if (document.querySelector(columns.tgt_addr)) document.querySelector(columns.tgt_addr).value = row.data["ADDR1"]; if (document.querySelector(columns.tgt_currency)) document.querySelector(columns.tgt_currency).value = row.data["CURRENCY_CD"]; if (document.querySelector(columns.tgt_chid)) document.querySelector(columns.tgt_chid).value = row.data["BP_PRSN_ID"]; if (document.querySelector(columns.tgt_chname)) document.querySelector(columns.tgt_chname).value = row.data["BP_PRSN_NM"]; if (document.querySelector(columns.tgt_chmail)) document.querySelector(columns.tgt_chmail).value = row.data["BP_PRSN_EMAIL"]; if (document.querySelector(columns.tgt_chtel)) document.querySelector(columns.tgt_chtel).value = row.data["BP_PRSN_TEL_NO"]; if (document.querySelector(columns.tgt_chcell)) document.querySelector(columns.tgt_chcell).value = row.data["BP_PRSN_CELL_NO"]; if (document.querySelector(columns.tgt_chfax)) document.querySelector(columns.tgt_chfax).value = row.data["BP_PRSN_FAX_NO"]; if (document.querySelector(columns.tgt_portnm)) document.querySelector(columns.tgt_portnm).value = row.data["PORT_NM"]; if (document.querySelector(columns.tgt_sales_grp)) document.querySelector(columns.tgt_sales_grp).value = row.data["SALES_GRP"]; document.querySelector(columns.tgt_name) && document .querySelector(columns.tgt_name) .dispatchEvent(new Event("change")); } partnerModal.delete(); }; const initPopPartnerData = function () { //Row 더블클릭 실행 if (tabrow) { kuls_warning("거래처는 필수항목 입니다."); } else { if (document.querySelector(columns.tgt_id)) document.querySelector(columns.tgt_id).value = ""; if (document.querySelector(columns.tgt_name)) document.querySelector(columns.tgt_name).value = ""; if (document.querySelector(columns.tgt_addr)) document.querySelector(columns.tgt_addr).value = ""; if (document.querySelector(columns.tgt_currency)) document.querySelector(columns.tgt_addr).value = ""; if (document.querySelector(columns.tgt_chname)) document.querySelector(columns.tgt_chname).value = ""; if (document.querySelector(columns.tgt_chmail)) document.querySelector(columns.tgt_chmail).value = ""; if (document.querySelector(columns.tgt_chtel)) document.querySelector(columns.tgt_chtel).value = ""; if (document.querySelector(columns.tgt_chcell)) document.querySelector(columns.tgt_chcell).value = ""; if (document.querySelector(columns.tgt_chfax)) document.querySelector(columns.tgt_chfax).value = ""; if (document.querySelector(columns.tgt_portnm)) document.querySelector(columns.tgt_portnm).value = ""; } partnerModal.delete(); }; //document.querySelector("#awn-popup-wrapper .btnPopSearch").addEventListener("click",function() { //조회버튼 클릭 이벤트 // getPopPartnerList(); //}); //document.querySelector("#awn-popup-wrapper .btnPopInit").addEventListener("click",function() { //조회버튼 클릭 이벤트 // initPopPartnerData(); //}); document .querySelector("#awn-popup-wrapper [name=stxt]") .addEventListener("keyup", function () { //검색어 입력 이벤트 setTableFilter(); }); document .querySelector("#awn-popup-wrapper [name=sgrp]") .addEventListener("change", function () { //영업분류 변경 이벤트 setTableFilter(); }); ["click", "keypress"].forEach((evt) => document .querySelector("#awn-popup-wrapper #ptReset") .addEventListener(evt, function () { //검색어 입력 이벤트 initPopPartnerData(); }) ); table_pop_partner_search.on("rowDblClick", setPopPartnerData); //Row 더블클릭 이벤트 table_pop_partner_search.on("tableBuilt", function () { //초기 데이터 불러오기 이벤트 getPopPartnerList(); }); } ); }; const popBizareaList = function (tgt_id, tgt_name, tabrow) { //tabrow 존재하면 (tabulator 필드명), 그외는 거래처코드 selector=>tgt_id, 거래처명 selector => 거래처명 //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_bizarea_search", function (loadHtml) { let bizareaModal = kuls_modal(loadHtml); const fields = [ { formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: "center", }, { field: "BIZ_AREA_CD", title: "사업장코드", width: 100 }, { field: "BIZ_AREA_NM", title: "사업장명", width: 160 }, { field: "HQ_FLG", title: "본사구분", width: 90 }, { field: "WORK_STD_TIME", title: "기준시간", width: 90 }, { field: "STD_CURRENCY_CD", title: "기준화폐", width: 90 }, ]; const table_pop_bizarea_search = new Tabulator("#pop_bizarea_list", { layout: "fitColumns", data: [], //기본 데이터 height: "100%", columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header", //Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //정렬 => 정/역/초기화 }, headerSortElement: "", //정렬 아이콘 }); const getPopBizareaList = function () { //리스트 불러오기 ajax_json({ url: "/ksvc/inc/common.ajax.php", data: { mode: "getBizareaList" }, success: function (data) { if (data.code) { table_pop_bizarea_search.setData(data.data); } }, error: function (request, status, error) { //kuls_alert(error.message); }, }); }; const setTableFilter = function () { //검색어 필터 적용 let stxt = trim( document.querySelector("#awn-popup-wrapper input[name=stxt]").value ); table_pop_bizarea_search.setFilter( function (data) { return ( !stxt || data["BP_CD"].search(RegExp(stxt, "is")) !== -1 || data["BP_NM"].search(RegExp(stxt, "is")) !== -1 || data["BP_FULL_NM"].search(RegExp(stxt, "is")) !== -1 ); }, "=", true ); }; const setPopBizareaData = function (e, tgt) { //Row 더블클릭 실행 let row = tgt._row; if (tabrow) { tabrow.updateData({ [tgt_id]: row.data["BIZ_AREA_CD"], [tgt_name]: row.data["BIZ_AREA_NM"], _STATUS_: tabrow.getData()["_STATUS_"] || "U", }); } else { if (document.querySelector(tgt_id)) document.querySelector(tgt_id).value = row.data["BIZ_AREA_CD"]; if (document.querySelector(tgt_name)) document.querySelector(tgt_name).value = row.data["BIZ_AREA_NM"]; } bizareaModal.delete(); }; const initPopBizareaData = function () { //Row 더블클릭 실행 if (tabrow) { kuls_warning("Bizarea is neccessary field!"); } else { if (document.querySelector(tgt_id)) document.querySelector(tgt_id).value = ""; if (document.querySelector(tgt_name)) document.querySelector(tgt_name).value = ""; } bizareaModal.delete(); }; //document.querySelector("#awn-popup-wrapper .btnPopSearch").addEventListener("click",function() { //조회버튼 클릭 이벤트 // getPopBizareaList(); //}); //document.querySelector("#awn-popup-wrapper .btnPopInit").addEventListener("click",function() { //조회버튼 클릭 이벤트 // initPopBizareaData(); //}); document .querySelector("#awn-popup-wrapper [name=stxt]") .addEventListener("keyup", function () { //검색어 입력 이벤트 setTableFilter(); }); table_pop_bizarea_search.on("rowDblClick", setPopBizareaData); //Row 더블클릭 이벤트 table_pop_bizarea_search.on("tableBuilt", function () { //초기 데이터 불러오기 이벤트 getPopBizareaList(); }); } ); }; const popMemberList = function (tgt_id, tgt_name, tabrow) { //tabrow 존재하면 (tabulator 필드명), 그외는 거래처코드 selector=>tgt_id, 거래처명 selector => 거래처명 //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_member_search", function (loadHtml) { let bizareaModal = kuls_modal(loadHtml); const fields = [ { formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: "center", }, { field: "EMP_NO", title: "사 번", width: 100 }, { field: "EMP_NM", title: "이 름", width: 160 }, { field: "DEPT_NM", title: "부서명", width: 90 }, { field: "BIZ_AREA_NM", title: "사업장", width: 90 }, ]; const table_pop_bizarea_search = new Tabulator("#pop_bizarea_list", { layout: "fitColumns", data: [], //기본 데이터 height: "100%", columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header", //Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //정렬 => 정/역/초기화 }, headerSortElement: "", //정렬 아이콘 }); const getPopBizareaList = function () { //리스트 불러오기 ajax_json({ url: "/ksvc/inc/common.ajax.php", data: { mode: "getBizareaList" }, success: function (data) { if (data.code) { table_pop_bizarea_search.setData(data.data); } }, error: function (request, status, error) { //kuls_alert(error.message); }, }); }; const setTableFilter = function () { //검색어 필터 적용 let stxt = trim( document.querySelector("#awn-popup-wrapper input[name=stxt]").value ); table_pop_bizarea_search.setFilter( function (data) { return ( !stxt || data["BP_CD"].search(RegExp(stxt, "is")) !== -1 || data["BP_NM"].search(RegExp(stxt, "is")) !== -1 || data["BP_FULL_NM"].search(RegExp(stxt, "is")) !== -1 ); }, "=", true ); }; const setPopBizareaData = function (e, tgt) { //Row 더블클릭 실행 let row = tgt._row; if (tabrow) { tabrow.updateData({ [tgt_id]: row.data["BIZ_AREA_CD"], [tgt_name]: row.data["BIZ_AREA_NM"], _STATUS_: tabrow.getData()["_STATUS_"] || "U", }); } else { if (document.querySelector(tgt_id)) document.querySelector(tgt_id).value = row.data["BIZ_AREA_CD"]; if (document.querySelector(tgt_name)) document.querySelector(tgt_name).value = row.data["BIZ_AREA_NM"]; } bizareaModal.delete(); }; const initPopBizareaData = function () { //Row 더블클릭 실행 if (tabrow) { kuls_warning("Bizarea is neccessary field!"); } else { if (document.querySelector(tgt_id)) document.querySelector(tgt_id).value = ""; if (document.querySelector(tgt_name)) document.querySelector(tgt_name).value = ""; } bizareaModal.delete(); }; //document.querySelector("#awn-popup-wrapper .btnPopSearch").addEventListener("click",function() { //조회버튼 클릭 이벤트 // getPopBizareaList(); //}); //document.querySelector("#awn-popup-wrapper .btnPopInit").addEventListener("click",function() { //조회버튼 클릭 이벤트 // initPopBizareaData(); //}); document .querySelector("#awn-popup-wrapper [name=stxt]") .addEventListener("keyup", function () { //검색어 입력 이벤트 setTableFilter(); }); table_pop_bizarea_search.on("rowDblClick", setPopBizareaData); //Row 더블클릭 이벤트 table_pop_bizarea_search.on("tableBuilt", function () { //초기 데이터 불러오기 이벤트 getPopBizareaList(); }); } ); }; const popDeptListLive = function (tgt_id, tgt_name, tab) { //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_dept_search", function (loadHtml) { let bizareaModal = kuls_modal(loadHtml); document.querySelector(".awn-popup-confirm.awn-dept .s_fld").innerHTML = ""; //사업장 Select 태그 제거 let row = tab._row; let tree_data = tab.getTable().getData(); let row_data = row.getData(); let BIZ_AREA_CD = row_data["BIZ_AREA_CD"]; if (!BIZ_AREA_CD) { kuls_alert("사업장 코드를 선택하지 않았습니다."); return; } jQuery("#pop_dept_tree").fancytree({ clickFolderMode: 3, source: tree_by_parent(tree_data, "DEPT_CD", "PAR_DEPT_CD", ""), dblclick: function (event, data) { let node = data.node; if ( ("|" + node.data["DEPT_PATH_CD"] + "|").indexOf( "|" + row.data["DEPT_CD"] + "|" ) !== -1 ) { kuls_alert("해당부서 또는 하위부서를 상위부서로 선택하였습니다."); return false; } row.updateData({ [tgt_id]: node.data["DEPT_CD"], [tgt_name]: node.data["DEPT_NM"], _STATUS_: row.getData()["_STATUS_"] || "U", }); bizareaModal.delete(); }, }); } ); }; /* 위는 수정/추가가 반영되는 라이브 상태로 진행되며, 아래 코드는 DB 내용만 가져오는것. */ const popDeptList = function (tgt_id, tgt_name, tgt_intnl, BIZ_AREA_CD, tab) { //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_dept_search", function (loadHtml) { let bizareaModal = kuls_modal(loadHtml); let row = tab._row; const cfunc = function (data) { let node = data.node; row.updateData({ [tgt_id]: node.data["DEPT_CD"], [tgt_name]: node.data["DEPT_NM"], [tgt_intnl]: node.data["INTNL_DEPT_CD"], _STATUS_: row.getData()["_STATUS_"] || "U", }); bizareaModal.delete(); }; ajax_json({ url: "/inc/common.ajax.php", type: "POST", data: { mode: "getBizareaList", }, success: function (data) { if (data.code) { let selecttag = document.querySelector( ".s_fld select[name=BIZ_AREA_CD]" ); selecttag.options.length = 0; data.data.forEach((row) => { let opt = document.createElement("option"); opt.value = row["BIZ_AREA_CD"]; opt.text = row["BIZ_AREA_NM"]; selecttag.add(opt); }); selecttag.value = BIZ_AREA_CD; } }, error: function (request, status, error) {}, complete: function (request, status) { getDeptList(tgt_id, tgt_name, BIZ_AREA_CD, cfunc); }, }); document .querySelector(".s_fld select[name=BIZ_AREA_CD]") .addEventListener("change", function () { getDeptList(tgt_id, tgt_name, this.value, cfunc); }); } ); }; const getDeptList = function (tgt_id, tgt_name, BIZ_AREA_CD, cfunc) { document.querySelector( ".awn-popup-confirm.awn-dept .awn-popup-content" ).innerHTML = "
"; ajax_json({ url: "/inc/common.ajax.php", type: "POST", data: { mode: "getDeptTree", BIZ_AREA_CD, }, success: function (data) { if (data.code) { jQuery("#pop_dept_tree").fancytree({ clickFolderMode: 3, source: tree_by_parent(data.data, "DEPT_CD", "PAR_DEPT_CD", ""), dblclick: function (event, data) { cfunc && cfunc(data); }, }); } }, error: function (request, status, error) {}, complete: function (request, status) {}, }); }; const popEmployeeList = function (tgt_id, tgt_name, BIZ_AREA_CD, tabrow) { //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_employee_search", function (loadHtml) { let bizareaModal = kuls_modal(loadHtml); const cfunc = function (e, tgt) { let row = tgt._row; if (tabrow) { tabrow.updateData({ [tgt_id]: row.data["EMP_NO"], [tgt_name]: row.data["EMP_NM"], _STATUS_: tabrow.getData()["_STATUS_"] || "U", }); } else { if (document.querySelector(tgt_id)) document.querySelector(tgt_id).value = row.data["EMP_NO"]; if (document.querySelector(tgt_name)) document.querySelector(tgt_name).value = row.data["EMP_NM"]; } bizareaModal.delete(); }; ajax_json({ url: "/inc/common.ajax.php", type: "POST", data: { mode: "getBizareaList", }, success: function (data) { if (data.code) { let selecttag = document.querySelector( ".s_fld select[name=BIZ_AREA_CD]" ); selecttag.options.length = 0; data.data.forEach((row) => { let opt = document.createElement("option"); opt.value = row["BIZ_AREA_CD"]; opt.text = row["BIZ_AREA_NM"]; selecttag.add(opt); }); selecttag.value = BIZ_AREA_CD; } }, error: function (request, status, error) {}, complete: function (request, status) { getEmployeeList(tgt_id, tgt_name, BIZ_AREA_CD, cfunc); }, }); document .querySelector(".s_fld select[name=BIZ_AREA_CD]") .addEventListener("change", function () { getEmployeeList(tgt_id, tgt_name, this.value, cfunc); }); } ); }; const getEmployeeList = function (tgt_id, tgt_name, BIZ_AREA_CD, cfunc) { const fields = [ { formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: "center", }, { field: "EMP_NO", title: "사 번", width: 100 }, { field: "EMP_NM", title: "이 름", width: 160 }, { field: "DEPT_NM", title: "부서명", width: 120 }, { field: "BIZ_AREA_NM", title: "사업장", width: 150 }, ]; const table_pop_employee_search = new Tabulator("#pop_employee_list", { layout: "fitColumns", data: [], //기본 데이터 height: "100%", columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header", //Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //정렬 => 정/역/초기화 }, headerSortElement: "", //정렬 아이콘 }); const getPopEmployeeList = function () { //리스트 불러오기 ajax_json({ url: "/ksvc/inc/common.ajax.php", data: { mode: "getEmployeeList", BIZ_AREA_CD }, success: function (data) { if (data.code) { table_pop_employee_search.setData(data.data); } }, error: function (request, status, error) { //kuls_alert(error.message); }, }); }; table_pop_employee_search.on("rowDblClick", (e, tgt) => { cfunc && cfunc(e, tgt); }); //Row 더블클릭 이벤트 table_pop_employee_search.on("tableBuilt", function () { //초기 데이터 불러오기 이벤트 getPopEmployeeList(); }); ["change", "keyup"].forEach((evt) => document .querySelector(".s_fld input[name=stxt]") .addEventListener(evt, function () { table_pop_employee_search.setFilter( function (data) { //필터링 return ( true && data.EMP_NM.indexOf( document.querySelector(".s_fld input[name=stxt]").value ) !== -1 ); }, "=", true ); }) ); }; const popBasecodeList = function (tgt_id, tgt_name, Bran_Uid, tabrow, rtgt) { //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_basecode_search", function (loadHtml) { let basecodeModal = kuls_modal(loadHtml); if (rtgt) { //Routing 전용 let basecodes = [ //{Bran_Uid: 'SHAPE_TYPE', Code_Exp: '형상관리'}, { Bran_Uid: "ITEM_SPEC", Code_Exp: "스펙항목관리" }, { Bran_Uid: "OP_PART", Code_Exp: "가공부위관리" }, { Bran_Uid: "INSP_ITEM", Code_Exp: "검사항목관리" }, ]; let selecttag = document.querySelector(".s_fld select[name=BASECODE]"); selecttag.options.length = 0; basecodes.forEach((row) => { let opt = document.createElement("option"); opt.value = row["Bran_Uid"]; opt.text = row["Code_Exp"]; selecttag.add(opt); }); Bran_Uid = Bran_Uid || basecodes[0].Bran_Uid; selecttag.value = Bran_Uid; document .querySelector(".s_fld select[name=BASECODE]") .addEventListener("change", function () { getPopBasecodeList(this.value); switch (this.value) { case "SHAPE_TYPE": tabrow = Tb_funcs_Spec.arefunc; break; case "ITEM_SPEC": tabrow = Tb_funcs_Spec.brefunc; break; case "OP_PART": tabrow = Tb_funcs_Cond.refunc; break; case "INSP_ITEM": tabrow = Tb_funcs_Insp.refunc; break; } }); } const fields = [ { formatter: "rownum", title: "No", width: "10%", minWidth: 50, headerSort: false, hozAlign: "center", }, { field: "Code_Uid", title: "코드", width: "30%", minWidth: 100, editor: "input", editable: (cell) => { let val = cell.getData(); return val._STATUS_ === "I"; }, }, { field: "Code_Val", title: "명칭", width: "40%", minWidth: 160, editor: "input", }, { field: "Code_Active", title: "사용", width: "20%", minWidth: 60, cssClass: "user-editable", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval: "Y" }, }, ]; const table_pop_basecode_search = new Tabulator("#pop_basecode_list", { layout: "fitColumns", data: [], //기본 데이터 height: "100%", columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header", //Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //정렬 => 정/역/초기화 }, movableRows: true, headerSortElement: "", //정렬 아이콘 }); const getPopBasecodeList = function (Bran_Uid) { //리스트 불러오기 ajax_json({ url: "/ksvc/inc/common.ajax.php", data: { mode: "getBasecodeList", Bran_Uid }, success: function (data) { if (data.code) { table_pop_basecode_search.setData(data.data); } }, error: function (request, status, error) { //kuls_alert(error.message); }, complete: function () { setFilter(); }, }); }; const setFilter = () => { table_pop_basecode_search.setFilter( function (data) { //필터링 return ( true && (!document.getElementById("P_USE_FLG") || !document.getElementById("P_USE_FLG").checked || data.Code_Active === "Y") ); }, "=", true ); }; //Row 추가 const addRow = () => { table_pop_basecode_search.addRow({ _STATUS_: "I", Bran_Uid, Group_Uid: Bran_Uid, Code_Active: "Y", }); }; //Cell 클릭 콜백 const cellClick = (e, tgt) => { switch (tgt.getField()) { case "Code_Active": tgt.setValue(tgt.getValue() == "Y" ? "N" : "Y"); break; } }; //Cell 변경 콜백 const cellEdited = (cell) => { let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U"; }; const putItem = () => { let pdata = table_pop_basecode_search.getData(); let dupdata = pdata.map((data) => data["Code_Uid"]); if ( dupdata.filter((data, idx) => dupdata.indexOf(data) !== idx).length > 0 ) { kuls_alert("코드가 중복됩니다."); return false; } let postdata = { mode: "putBasecode", reqdata: JSON.stringify( table_pop_basecode_search.getData().filter((row) => row._STATUS_) ), }; ajax_json({ url: "/ksvc/inc/common.ajax.php", data: postdata, success: function (data) { if (data.code) { kuls_success("적용 되었습니다."); if (typeof tabrow == "function") { tabrow(pdata, null); basecodeModal.delete(); } } else { kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, }); return true; }; table_pop_basecode_search.on("rowDblClick", (e, tgt) => { return false; let row = tgt._row; document.ttt = tgt; if (typeof tabrow == "function") { tabrow(tgt.getTable().getData(), tgt.getData()); } else if (tabrow) { tabrow.updateData({ [tgt_id]: row.data["Code_Uid"], [tgt_name]: row.data["Code_Val"], _STATUS_: tabrow.getData()["_STATUS_"] || "U", }); } else { if (document.querySelector(tgt_id)) document.querySelector(tgt_id).value = row.data["Code_Uid"]; if (document.querySelector(tgt_name)) document.querySelector(tgt_name).value = row.data["Code_Val"]; } basecodeModal.delete(); }); //Row 더블클릭 이벤트 table_pop_basecode_search.on("cellClick", (e, tgt) => { //Tabulator cell Click cellEdited && cellClick(e, tgt); }); table_pop_basecode_search.on("cellEdited", (cell) => { //Tabulator cell Edited cellEdited && cellEdited(cell); }); table_pop_basecode_search.on("rowMoved", (row, a, b) => { //Tabulator Row Moved let Code_Uid = row.getData()["Code_Uid"]; let n_idx = row .getTable() .getData() .findIndex((v) => v.Code_Uid === Code_Uid); do { //현재 이하 순서 변경 row._row.updateData({ Code_Idx: ++n_idx, _STATUS_: row.getData()["_STATUS_"] || "U", }); } while ((row = row.getNextRow())); }); ["click", "keypress"].forEach((evt) => document.querySelector("#btnAddBcode").addEventListener(evt, () => { addRow(); }) ); ["click", "keypress"].forEach((evt) => document.querySelector("#btnPutBcode").addEventListener(evt, () => { putItem(); }) ); ["change", "keydown", "keyup"].forEach((evt) => document.querySelectorAll("#P_USE_FLG").forEach((tgt) => tgt.addEventListener(evt, () => { setFilter(); }) ) ); table_pop_basecode_search.on("tableBuilt", function () { //초기 데이터 불러오기 이벤트 getPopBasecodeList(Bran_Uid); }); } ); }; const popBasegroupList = function ( tgt_id, tgt_name, Bran_Uid, Group_Uid, refunc, rtgt ) { //팝업 템플릿 로드 후 모달 출력 vnLoad( "", "/ksvc/inc/popup.inc.php", "#pop_basecode_search", function (loadHtml) { let basegroupModal = kuls_modal(loadHtml); if (rtgt) { //Routing 전용 let basegroups = Object.keys(varsSHAPE_GRP).map((key) => { return { Group_Uid: key, Code_Exp: varsSHAPE_GRP[key].Code_Exp }; }); let selecttag = document.querySelector(".s_fld select[name=BASECODE]"); selecttag.options.length = 0; basegroups.forEach((row) => { let opt = document.createElement("option"); opt.value = row["Group_Uid"]; opt.text = row["Code_Exp"]; selecttag.add(opt); }); Group_Uid = Group_Uid || basegroups[0].Group_Uid; selecttag.value = Group_Uid; document .querySelector(".s_fld select[name=BASECODE]") .addEventListener("change", function () { getPopBasegroupList(this.value); }); } const fields = [ { formatter: "rownum", title: "No", width: "10%", minWidth: 50, headerSort: false, hozAlign: "center", }, { field: "Code_Uid", title: "코드", width: "30%", minWidth: 100, editor: "input", editable: (cell) => { let val = cell.getData(); return val._STATUS_ === "I"; }, }, { field: "Code_Val", title: "명칭", width: "40%", minWidth: 160, editor: "input", }, { field: "Code_Active", title: "사용", width: "20%", minWidth: 60, cssClass: "user-editable", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval: "Y" }, }, ]; const table_pop_basegroup_search = new Tabulator("#pop_basecode_list", { layout: "fitColumns", data: [], //기본 데이터 height: "100%", columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header", //Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //정렬 => 정/역/초기화 }, movableRows: true, headerSortElement: "", //정렬 아이콘 }); const getPopBasegroupList = function (G_Uid) { //리스트 불러오기 Group_Uid = G_Uid || Group_Uid; ajax_json({ url: "/ksvc/inc/common.ajax.php", data: { mode: "getBasecodeList", Bran_Uid, Group_Uid: Group_Uid }, success: function (data) { if (data.code) { table_pop_basegroup_search.setData(data.data); } }, error: function (request, status, error) { //kuls_alert(error.message); }, complete: function () { setFilter(); }, }); }; const setFilter = () => { table_pop_basegroup_search.setFilter( function (data) { //필터링 return ( true && (!document.getElementById("P_USE_FLG") || !document.getElementById("P_USE_FLG").checked || data.Code_Active === "Y") ); }, "=", true ); }; //Row 추가 const addRow = () => { table_pop_basegroup_search.addRow({ _STATUS_: "I", Bran_Uid, Group_Uid: Group_Uid, Code_Active: "Y", }); }; //Cell 클릭 콜백 const cellClick = (e, tgt) => { switch (tgt.getField()) { case "Code_Active": tgt.setValue(tgt.getValue() == "Y" ? "N" : "Y"); break; } }; //Cell 변경 콜백 const cellEdited = (cell) => { let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U"; }; const putItem = () => { let pdata = table_pop_basegroup_search.getData(); let dupdata = pdata.map((data) => data["Code_Uid"]); if ( dupdata.filter((data, idx) => dupdata.indexOf(data) !== idx).length > 0 ) { kuls_alert("코드가 중복됩니다."); return false; } let postdata = { mode: "putBasecode", reqdata: JSON.stringify( table_pop_basegroup_search.getData().filter((row) => row._STATUS_) ), }; ajax_json({ url: "/ksvc/inc/common.ajax.php", data: postdata, success: function (data) { if (data.code) { kuls_success("적용 되었습니다."); if (typeof tabrow == "function") { tabrow(pdata, null); basegroupModal.delete(); } } else { kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, }); return true; }; table_pop_basegroup_search.on("rowDblClick", (e, tgt) => { return false; let row = tgt._row; document.ttt = tgt; if (typeof tabrow == "function") { tabrow(tgt.getTable().getData(), tgt.getData()); } else if (tabrow) { tabrow.updateData({ [tgt_id]: row.data["Code_Uid"], [tgt_name]: row.data["Code_Val"], _STATUS_: tabrow.getData()["_STATUS_"] || "U", }); } else { if (document.querySelector(tgt_id)) document.querySelector(tgt_id).value = row.data["Code_Uid"]; if (document.querySelector(tgt_name)) document.querySelector(tgt_name).value = row.data["Code_Val"]; } basegroupModal.delete(); }); //Row 더블클릭 이벤트 table_pop_basegroup_search.on("cellClick", (e, tgt) => { //Tabulator cell Click cellEdited && cellClick(e, tgt); }); table_pop_basegroup_search.on("cellEdited", (cell) => { //Tabulator cell Edited cellEdited && cellEdited(cell); }); table_pop_basegroup_search.on("rowMoved", (row, a, b) => { //Tabulator Row Moved let Code_Uid = row.getData()["Code_Uid"]; let n_idx = row .getTable() .getData() .findIndex((v) => v.Code_Uid === Code_Uid); do { //현재 이하 순서 변경 row._row.updateData({ Code_Idx: ++n_idx, _STATUS_: row.getData()["_STATUS_"] || "U", }); } while ((row = row.getNextRow())); }); ["click", "keypress"].forEach((evt) => document.querySelector("#btnAddBcode").addEventListener(evt, () => { addRow(); }) ); ["click", "keypress"].forEach((evt) => document.querySelector("#btnPutBcode").addEventListener(evt, () => { putItem(); }) ); ["change", "keydown", "keyup"].forEach((evt) => document.querySelectorAll("#P_USE_FLG").forEach((tgt) => tgt.addEventListener(evt, () => { setFilter(); }) ) ); table_pop_basegroup_search.on("tableBuilt", function () { //초기 데이터 불러오기 이벤트 getPopBasegroupList(); }); } ); }; class drawManager { constructor() { let _this = this; _this.tblList = ""; _this.prow = ""; _this.ajax_url = "/order/registration/registration.ajax.php"; _this.upload_ajax_url = "/order/registration/attfile.ajax.php"; _this.download_url = "/include/getFile.php"; _this.drawModal = null; } init(row) { let _this = this; _this.prow = row; _this.parData = Object.assign({}, row.getData()); if (!_this.parData.SO_SEQ) { kuls_alert( "저장되지 않은 수주상세입니다.