//Grid용 클래스. 블록 처리용 class Tb_class_Hdr { constructor(){ let _this = this; _this.tblList = ""; _this.selectPo = ""; _this.putOutsourcingModal = ""; _this.ajax_url = "./outsourcing.ajax.php"; } //리스트 로드 getMainList () { let _this = this; let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력 ajax_json({ url: _this.ajax_url, data: { mode: 'getHdrList' }, success: function (data) { if (data.code) { _this.tblList.setData(data.data); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { window.clearTimeout(talert); _this.tblList.clearAlert(); _this.setFilter(); } }); return true; }; //Row 클릭 콜백 rowClick (e, tgt){ let _this = this; _this.selectPo = tgt.getData(); _this.selectPo.PO_UID_OLD = _this.selectPo.PO_UID; Tb_funcs_Dtl.initModal(tgt.getData().PO_NO); jQuery(tgt.getElement()).siblings().removeClass("user-checked"); tgt.getElement().classList.add("user-checked"); $("#btnDelDtl").attr("disabled", false); $("#btnPutDtl").attr("disabled", false); }; setFilter () { let _this = this; let stdate = document.getElementById("S_PO_DT_ST").value; let endate = document.getElementById("S_PO_DT_ED").value; _this.tblList.setFilter(function(data){ //필터링 return ( true && ( (!stdate || stdate <= data['PO_DT']) && (!endate || endate >= data['PO_DT']) ) ) }, '=', true); }; //Cell 클릭 콜백 cellClick (e, tgt){ let _this = this; _this.tgt = tgt; }; //Cell 변경 콜백 cellEdited (cell){ let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_||'U'; }; matrGFormatter ( cell ) { let _this = this; return varsTASK_TYPE[cell.getValue()] || ''; }; // 창고 등록 putHdr (){ let _this = this; let pdata = _this.tblList.getData(); let dupdata = pdata.map( data => data.PO_NO ).filter( data => data ); if( dupdata.filter( (data,idx) => dupdata.indexOf(data) !== idx ).length > 0 ){ kuls_alert("발주번호가 중복됩니다."); return false; } let postdata = { 'mode': 'putHdr', 'reqdata': JSON.stringify(_this.tblList.getData().filter(row=> row._STATUS_)), }; ajax_json({ url: _this.ajax_url, data: postdata, success: function (data) { if (data.code) { kuls_success("저장되었습니다."); _this.getMainList(); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { } }); return true; }; delHdr (){ let _this = this; _this.tblList.getSelectedRows().forEach(row => { row.update({_STATUS_:'D'}); row.getElement().classList.add("del-row"); }); }; addRow(){ let _this = this; // _this.tblDtlList.addRow({_STATUS_:'I', APPROV_NO: _this.approv_no},true); Tb_funcs_Order.initModal() } //시작 실행 init () { let _this = this; const fields = [ { formatter:"rowSelection", titleFormatter: "rowSelection", title: "No", width: "4%", noxls:true }, { field: "PO_UID", title: "발주번호", width: "10%", }, { field: "MNG_NOS_US", title: "수주번호", width: "10%", }, { field: "PO_DT", title: "발주일", width: "7%", }, { field: "PO_MATR_CLASS", title: "발주구분", width: "8%", formatter:_this.matrGFormatter,}, { field: "TTL_AMT", title: "발주금액", width: "8%", formatter: "money", formatterParams:{precision:0},}, { field: "PO_BP_NM", title: "외주처", width: "14%", }, { field: "PO_BP_ADDR", title: "공급자주소", width: "16%", }, { field: "PO_BP_TEL", title: "공급자연락처", width: "8%", }, { field: "CURRENCY_CD", title: "거래화폐", width: "5%", }, { field: "PAYMENT_COND", title: "지불조건", width: "7%", }, { field: "PO_DEL_COND", title: "인도조건", width: "7%", }, { field: "PO_INSPT_COND", title: "검사조건", width: "7%", }, { field: "PO_MNG_CLASS", title: "관리구분", width: "8%", }, { field: "TASK_NAME", title: "발주구분명", visible:false, }, ]; _this.tblList = new Tabulator("#tblHdrList",{ layout: "fitColumns", height: "calc(100% - 20px)", data: [], //기본 데이터 columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header",//Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //데이터 정렬 => 정/역/초기화 }, headerSortElement: "", //정렬 아이콘 }); _this.tblList.on("tableBuilt", () => { //Tabulator 초기 데이터 불러오기 이벤트 _this.getMainList(); }); _this.tblList.on("rowClick", (e,tgt) => { //Tabulator Row Click _this.rowClick && Tb_funcs_Hdr.rowClick(e,tgt); }); _this.tblList.on("cellClick", (e,tgt) => { //Tabulator cell Click _this.cellClick && Tb_funcs_Hdr.cellClick(e,tgt); }); _this.tblList.on("cellEdited", (cell) => { //Tabulator cell Edited _this.cellEdited && Tb_funcs_Hdr.cellEdited(cell); }); ['click','keypress'].forEach(evt => document.querySelector("#btnAddHdr").addEventListener(evt,()=>{_this.addRow()})); ['click','keypress'].forEach(evt => document.querySelector("#btnPutHdr").addEventListener(evt,()=>{_this.putHdr()})); ['click','keypress'].forEach(evt => document.querySelector("#btnDelHdr").addEventListener(evt,()=>{_this.delHdr()})); ['click','keypress'].forEach(evt => document.querySelector("#btnExcelDown").addEventListener(evt,()=>{_this.excelDataLoad(_this.tblList,'발주리스트')})); ['click','keypress'].forEach(evt => document.querySelector("#btnPoDocDown").addEventListener(evt,()=>{_this.excelPoDocLoad(_this.tblList.getSelectedRows(),'발주서')})); ['change','keydown','keyup'].forEach(evt => document.querySelectorAll("#S_PO_DT_ST, #S_PO_DT_ED").forEach(tgt=>tgt.addEventListener(evt,()=>{Tb_funcs_Hdr.setFilter()}))); }; excelDataLoad(table_block, title) { //페이징 처리된 리스트에서 엑셀 전체 다운 let _this = this; let filename = title + "_"+luxon.DateTime.now().toFormat('yyyyMMdd')+".xlsx"; ajax_json({ url: _this.ajax_url, data: {..._this.searchData, mode: 'getHdrList', LINE_NUM: 999999999 }, success: function (data) { if (data.code) { tb_common_funtions.tabu2xls(table_block, filename, title, data.data.map( row => { return row; } )); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () {} }); }; async excelPoDocLoad (row, title) { if (row.length > 1 ) {kuls_alert('한 번에 한 건만 선택할 수 있습니다.'); return false;} if (row.length === 0) {kuls_alert('선택된 발주가 없습니다.'); return false;} if (!title) {kuls_alert('제목을 입력하지 않았습니다.'); return false;} let po = row[0].getData(); let items = await Tb_funcs_Dtl.getPoInfo(po.PO_NO, true); let poData = {po, items} let filename = title + "_"+luxon.DateTime.now().toFormat('yyyyMMdd')+".xlsx"; getPoExcel(title, filename, poData); } } class Tb_class_Dtl { constructor(){ let _this = this; _this.ajax_url = "./outsourcing.ajax.php"; _this.tblList = ""; _this.base_info_frg = { PAYMENT_COND : '정기결제', PO_DEL_COND : '하차도', PO_MNG_CLASS : '정상작업', PO_REMARK1: '1. 발주서에 언급된 치수, 도면, 사양서, 규격 기준에 합격하여야 한다.\n' + '2. 단조 및 UT 보증 조건\n' + '3. 3.2 검사인 경우, 실비 정산으로 한다. 단 방문횟수 및 필요사항은 사전 협의 한다. \n' + '4. 납품은 당사 지정장소로 편도 운송조건으로 한다. \n', PO_REMARK2: '1. 본 발주서 접수 후 3일 이내 서면으로 수락, 거부 통지가 없으면 효력이 발생한 것으로 간주함.\n' + '2. 발주자가 요구할 경우 공급자는 계약이행 보증증권 또는 하자이행 보증증권을 제출하여야 함.\n' + '3. 불량 발생시 공급자(을)는 신속하게 양품으로 대체하고, 만약 불량품이 발생할 때에는 별도의 약정이 없는 한 그 손해배상금을 발주자(갑)가 정하는 바에 따라 발주자(갑)에게 지급하여야 함.\n' + '4. 납기 지연시 지체 배상금은 발주서 기준 1일당 3/1000씩 차감하는 것으로 하고, 별도 비용등 발생시 공급자(을)의 부담으로 한다.\n' + '5. 기타 일반 사항은 (주)스틸코리아 하도급 기본계약서에 준하며, 명기되지 않은 것은 계약 일반 조건을 따른다.\n', }; _this.base_info_mnf = { PAYMENT_COND : '정기결제', PO_DEL_COND : '하차도', PO_MNG_CLASS : '정상작업', PO_REMARK1: '1. 발주서에 언급된 정삭 도면 기준으로 가공 할 것 - 도면 번호등 확인 철저히 할 것\n' + ' - 공급자(을)는 배포된 도면 및 리비전 번호를 확인하고, 발주서에 명기된 도면번호와 상이할 시에 발주자(갑)에게 즉시 통보한다.\n' + ' - 필요시 (요청시) 사전 승인도 제출 할 것\n' + '2. 가공완료 전 UT 검사 할 것 (UT 신청은 당사 QA 로 또는 영업부로 신청 할 것)\n' + '3. 3.2 검사인 경우, 시편 채취 할 것 (시편 채취후 당사 당사 QA로 연락할 것)\n' + '4 마킹은 마킹 사양서에 의하여 실시 (마킹사양 당사 QA로 연락할 것)\n' + '5. 공급자(을)는 공급 소재에 임의 용접을 불허하며 불가피하게 치구와 가접시 발자주(갑)의 승인 후 10미리 이상인 황삭에서만 허용한다.\n' + '6. (풍력플랜지) 검사기준에 준하며 VI/DI 검사 신청 시 치수성적서 송부할 것.\n' + '7. 납품은 당사 지정장소로 편도 운송조건으로 한다.\n' + '8. 분철회수는 사전에 협의한 조건으로 실시한다.\n', PO_REMARK2: '1. 본 발주서 접수 후 3일 이내 서면으로 수락, 거부 통지가 없으면 효력이 발생한 것으로 간주함.\n' + '2. 발주자가 요구할 경우 공급자는 계약이행 보증증권 또는 하자이행 보증증권을 제출하여야 함.\n' + '3. 불량 발생시 공급자(을)는 신속하게 양품으로 대체하고, 만약 불량품이 발생할 때에는 별도의 약정이 없는 한 그 손해배상금을 발주자(갑)가 정하는 바에 따라 발주자(갑)에게 지급하여야 함.\n' + ' - 당사의 소재 (단조등) 발주 금액에 대한 전자 계산서 발행 금액이 기본이나 그 후속 대처가 늦어 추가 클레임이 발생하면 그 금액도 포함된다.\n' + '4. 납기 지연시 지체 배상금은 발주서 기준 1일당 3/1000씩 차감하는 것으로 하고, 별도 비용등 발생시 공급자(을)의 부담으로 한다.\n' + '5. 기타 일반 사항은 (주)스틸코리아 하도급 기본계약서에 준하며, 명기되지 않은 것은 계약 일반 조건을 따른다.', }; _this.base_info_pkg = { PAYMENT_COND : '정기결제', PO_DEL_COND : '하차도', PO_MNG_CLASS : '정상작업', PO_REMARK1: '1. 발주서에 언급된 치수, 사양서, 규격 기준에 합격하여야 한다.\n' + '2. 제품에 대한 Damage 가 없도록 안전하게 포장한다.\n' + '3. 운송간에 제품에 대한 손상 및 파손등이 없도록 포장재를 튼튼하게 제작한다.\n' + '4. 또한 제품의 중량, 사이즈 고려하여 적재 칸 배치 및 운송간 흔들리거나, 이동, 떨어지는 일이 없도록 안전하게 운송\n' + '5. 수출용 박스는 수출용 포장재 사용, 녹 방지를 위한 밀폐 포장을 하며, 필요시는 진공 포장을 한다.', PO_REMARK2: '1. 본 발주서 접수 후 3일 이내 서면으로 수락, 거부 통지가 없으면 효력이 발생한 것으로 간주함.\n' + '2. 발주자가 요구할 경우 공급자는 계약이행 보증증권 또는 하자이행 보증증권을 제출하여야 함.\n' + '3. 불량 발생시 공급자(을)는 신속하게 양품으로 대체하고, 만약 불량품이 발생할 때에는 별도의 약정이 없는 한 그 손해배상금을 발주자(갑)가 정하는 바에 따라 발주자(갑)에게 지급하여야 함.\n' + '4. 납기 지연시 지체 배상금은 발주서 기준 1일당 3/1000씩 차감하는 것으로 하고, 별도 비용등 발생시 공급자(을)의 부담으로 한다.\n' + '5. 기타 일반 사항은 (주)스틸코리아 하도급 기본계약서에 준하며, 명기되지 않은 것은 계약 일반 조건을 따른다.', }; _this.base_info_trn = { PAYMENT_COND : '정기결제', PO_DEL_COND : '하차도', PO_MNG_CLASS : '정상작업', PO_REMARK1: '1. 발주서에 언급된 장소까지 안전하게 운송, 하차하여야 하여야 한다.\n' + '2. 제품에 대한 Damage 가 없도록 안전하게 운송한다.\n' + '3. 운송간에 제품에 대한 손상 및 파손등이 없도록 제품 에 대한 결박을 철저히 하며, 결박시 제품자체에 손상이 안가도록 한다.\n' + '4. 또한 제품의 중량, 사이즈 고려하여 안전에 유의하여 운송할 것\n' + '5. 운송을 위하여 당사 출입시 당사 안전 규정에 준수하여 출입하고, 장비 사용은 불허하며, 필요시는 사전 승인을 받아야 한다.', PO_REMARK2: '1. 본 발주서 접수 후 3일 이내 서면으로 수락, 거부 통지가 없으면 효력이 발생한 것으로 간주함.\n' + '2. 발주자가 요구할 경우 공급자는 계약이행 보증증권 또는 하자이행 보증증권을 제출하여야 함.\n' + '3. 적재, 운송, 하차등 운송간에 제품 손상 및 damage 발생시 공급자(을)는 신속하게 당사로 통보하며, 그 파손된 제품에 대하여 별도의 약정이 없는 한 그 손해배상금을 발주자(갑)가 정하는 바에 따라 발주자(갑)에게 지급하여야 함.\n' + '4. 납품 지체시, 지체 배상금은 발주서 기준 1일당 3/1000씩 차감하는 것으로 하고, 별도 비용등 발생시 공급자(을)의 부담으로 한다.\n' + '5. 공급자(을)는 공급 소재에 임의 용접을 불허하며 불가피하게 치구와 가접시 발자주(갑)의 승인 후 10미리 이상인 황삭에서만 허용한다.\n' + '5. 기타 일반 사항은 (주)스틸코리아 하도급 기본계약서에 준하며, 명기되지 않은 것은 계약 일반 조건을 따른다.', }; _this.base_info_etc = { PAYMENT_COND : '정기결제', PO_DEL_COND : '하차도', PO_MNG_CLASS : '정상작업', PO_REMARK1: '1. 발주서에 언급된 치수, 도면, 사양서, 규격 기준에 합격하여야 한다.\n' + '2. 발주 사양서 보증에 대한 원소재 성적서등 필요 서류 제출 할 것.\n' + '3. 발주서와 상이하거나 기타 사항 발생시 즉시 발주서에 명기된 발주자에게 통보하고, 협의하여 진행한다. \n' + '4. 납품은 당사 지정장소로 편도 운송조건으로 한다.', PO_REMARK2: '1. 본 발주서 접수 후 3일 이내 서면으로 수락, 거부 통지가 없으면 효력이 발생한 것으로 간주함.\n' + '2. 발주자가 요구할 경우 공급자는 계약이행 보증증권 또는 하자이행 보증증권을 제출하여야 함.\n' + '3. 불량 발생시 공급자(을)는 신속하게 양품으로 대체하고, 만약 불량품이 발생할 때에는 별도의 약정이 없는 한 그 손해배상금을 발주자(갑)가 정하는 바에 따라 발주자(갑)에게 지급하여야 함.\n' + '4. 납기 지연시 지체 배상금은 발주서 기준 1일당 3/1000씩 차감하는 것으로 하고, 별도 비용등 발생시 공급자(을)의 부담으로 한다.\n' + '5. 기타 일반 사항은 (주)스틸코리아 하도급 기본계약서에 준하며, 명기되지 않은 것은 계약 일반 조건을 따른다.', }; } setPopForm (data) { let _this = this; let po = Tb_funcs_Hdr.selectPo; Object.keys(po).forEach(key => { if (po[key] != null && document.forms['frmOutsourcing'].querySelector('[name='+key+']') ) { document.forms['frmOutsourcing'].querySelector('[name='+key+']').setAttribute(['data-defval'], po[key]); } // document.forms['frmOutsourcing'].querySelector('[name=PO_UID]').setAttribute('readonly',true); }) formSetVal(document.forms['frmOutsourcing']); _this.tblList.setData(data); _this.setTtlPoAmt(_this.tblList); }; async getPoInfo( PO_NO, excel = false ) { let _this = this; let rval = {}; await ajax_json({ url: _this.ajax_url, type: "POST", data: { mode: 'getDtlList', PO_NO, }, success: function (data) { if( data.code ){ if (!excel) { _this.setPopForm(data.data); } rval = data.data; }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function(){ } }); return rval; } setOutsourcing = (e) => { e.preventDefault(); let _this = this; if (document.querySelector("#PO_UID").value !== document.querySelector("#PO_UID_OLD").value) { kuls_alert('발주번호가 일치하지 않습니다.
새로운 등록을 위해서는 복사등록을 이용해 주십시오'); return false; } let formdata = form2Json(document.frmOutsourcing); let postdata = _this.tblList.getData(); formdata.mode = 'setOutsourcing'; // formdata['PO'] = JSON.stringify(Tb_funcs_Hdr.selectPo); formdata['ITEM'] = JSON.stringify(postdata); ajax_json({ url: _this.ajax_url, type: "POST", data: formdata, success: function (data) { if( data.code ){ kuls_success("적용 되었습니다."); Tb_funcs_Hdr.getMainList(Tb_funcs_Hdr.getMainList); _this.putOutsourcingModal.remove(); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function(){ } }); }; revokeData(row){ let _this = this; row.update({USE_FLG:"Y"}); row.getElement().classList.remove("del-row"); }; shGEdParams ( cell ) { let _this = this; return Object.keys(varsSHAPE_GRP).reduce( (ret, key) => { ret[varsSHAPE_GRP[key].Code_Uid] = varsSHAPE_GRP[key].Code_Exp; return ret; }, {}) }; shGFormatter ( cell ) { let _this = this; return varsSHAPE_GRP[cell.getValue()]?.Code_Exp; }; initModal( PO_NO ) { let _this = this; vnLoad( '', './outsourcing.prop.inc.php', '', function(loadHtml){ _this.putOutsourcingModal = kuls_modal(loadHtml, {dontclose:true}); document.querySelector(".btn_close").addEventListener("click", ()=>_this.putOutsourcingModal.remove()); _this.init( PO_NO ); }); }; //Cell 클릭 콜백 cellClick (e, tgt){ let _this = this; switch(tgt.getField()){ } }; cellEdited (cell){ let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_||'U'; switch (cell.getField() ) { case "AMT": break; default : _this.setPoAmt(cell.getRow()); break; } }; setPoAmt (row) { let _this = this; let data = row.getData(); let qty = Number(data.QTY); let pwr_price = Number(data.PWR_PRICE); let price = Number(data.PRICE); data.PWR_AMT = qty * pwr_price; data.AMT = qty * price; if (isNaN(data.PWR_AMT) || !data.PWR_AMT) { data.PWR_AMT = null; } if (isNaN(data.AMT) || !data.AMT){ data.AMT = null; } row.update(data); _this.setTtlPoAmt(_this.tblList); } setTtlPoAmt (tblList) { let _this = this; let ttl_po_amt = 0; tblList.getRows().forEach(row => { let po = row.getData(); ttl_po_amt += Number(po.AMT || 0); }) document.querySelector("#PO_AMT_TTL_VIEW").innerHTML = currency(ttl_po_amt, {symbol: '', decimal: ',', precision:0}).format(); } regPoCopy () { let _this = this; let formdata = form2Json(document.frmOutsourcing); let postdata = _this.tblList.getData(); formdata.mode = 'copyOutsourcing'; formdata['ITEM'] = JSON.stringify(postdata); ajax_json({ url: _this.ajax_url, type: "POST", data: formdata, success: function (data) { if( data.code ){ kuls_success("적용 되었습니다."); Tb_funcs_Hdr.getMainList(Tb_funcs_Hdr.getMainList); _this.putOutsourcingModal.remove(); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function(){ } }); } setBaseInfo () { let _this = this; let type = document.querySelector("#PO_MATR_CLASS").value; console.log(type); switch( type ){ case "FRG": document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK1]').value = _this.base_info_frg.PO_REMARK1; document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK2]').value = _this.base_info_frg.PO_REMARK2; break; case "MNF": document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK1]').value = _this.base_info_mnf.PO_REMARK1; document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK2]').value = _this.base_info_mnf.PO_REMARK2; break; case "PKG": document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK1]').value = _this.base_info_pkg.PO_REMARK1; document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK2]').value = _this.base_info_pkg.PO_REMARK2; break; case "TRN": document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK1]').value = _this.base_info_trn.PO_REMARK1; document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK2]').value = _this.base_info_trn.PO_REMARK2; break; case "ETC": document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK1]').value = _this.base_info_etc.PO_REMARK1; document.forms['frmOutsourcing'].querySelector('[name=PO_REMARK2]').value = _this.base_info_etc.PO_REMARK2; break; } } init( PO_NO ) { let _this = this; const fields_member = [ // { formatter:"rowSelection", titleFormatter: "rowSelection", width: "2%", minWidth:36, headerSort: false, }, { field: "SO_NO", title: "관리번호", width: "12%", minWidth:200, }, { field: "MNG_NO", title: "수주번호", width: "12%", minWidth:200, }, { field: "PO_DTL_ORD_NO", visible:false, }, { field: "ITEM_CD", title: "품명", width: "8%", minWidth:100, editorParams:{ valuesLookup: _this.shGEdParams }, formatter:_this.shGFormatter, }, { field: "", title: "규격", width: "20%", columns:[ { field:"SPC_OD", title:"OD", width:"5%", editor:'input', formatter: "money", formatterParams:{precision:1}, }, { field:"SPC_ID", title:"ID", width:"5%", editor:'input', formatter: "money", formatterParams:{precision:1}, }, { field:"SPC_TH", title:"TH", width:"5%", editor:'input', formatter: "money", formatterParams:{precision:1}, }, { field:"SPC_W", title:"W", width:"5%", editor:'input', formatter: "money", formatterParams:{precision:1}, }, { field:"SPC_L", title:"L", width:"5%", editor:'input', formatter: "money", formatterParams:{precision:1}, }, ], }, { field: "MATR", title: "재질", width: "8%", minWidth:100, editor:'input', }, { field: "DRAW_NO", title: "도면번호", width: "8%", minWidth:100, }, { field: "PO_UNIT", title: "단위", width: "6%", minWidth:60, editor:'input', }, { field: "QTY", title: "수량", width: "6%", minWidth:100, editor:'input', }, { field: "PO_DTL_COND", title: "조건", width: "10%", minWidth:100, editor:'input', }, { field: "SPEM", title: "시편", width: "8%", minWidth:80, editor:'input', }, { field: "REQ_DLVY_DT", title: "납기일", width: "8%", minWidth:100, editor:'date', editorParams: {max:'9999-12-31'}, }, { field: "CUST_PO_NO", title: "고객 PO NO", width: "8%", minWidth:100, }, { field: "PWR_PRICE", title: "분철단가", width: "8%", minWidth:100, editor:'input', formatter:"money", formatterParams:{precision:0},}, { field: "PWR_AMT", title: "분철금액", width: "8%", minWidth:100, formatter:"money", formatterParams:{precision:0},}, { field: "PRICE", title: "발주단가", width: "8%", minWidth:100, editor:'input', formatter:"money", formatterParams:{precision:0}, }, { field: "AMT", title: "발주금액", width: "8%", minWidth:100, formatter:"money", formatterParams:{precision:0}, }, { field: "INST_COND", title: "가공검사", width: "16%", minWidth:300, editor:'input', }, { field: "REMARK", title: "비고", width: "16%", minWidth:300, editor:'input', }, ]; _this.tblList = new Tabulator("#tblOutsourcingMember",{ layout: "fitColumns", data: [], //기본 데이터 height: "100%", columns: fields_member, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header",//Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //데이터 정렬 => 정/역/초기화 }, rowFormatter:function(row){ }, headerSortElement: "", //정렬 아이콘 }); _this.tblList.on("cellEdited", function(cell) { //cell modify _this.cellEdited && _this.cellEdited(cell); }); _this.tblList.on("cellClick", function(e, tgt) { //cell click _this.cellClick && _this.cellClick(e, tgt); }); _this.tblList.on("rowDeselected", (row) => { //cell 선택해제시 _this.revokeData && _this.revokeData(row); }); _this.tblList.on("tableBuilt", function(){ //테이블 init 후 if( PO_NO ){ _this.getPoInfo(PO_NO); }else{ _this.addRow(); } }); document.querySelector("form[name=frmOutsourcing]").addEventListener("submit", _this.setOutsourcing ); ['click','keypress'].forEach( evt => document.querySelector("#btnGetBp").addEventListener(evt, ()=>{ popPartnerList({tgt_id:'#PO_BP_CD',tgt_full_name:'#PO_BP_NM',tgt_chname:'#PO_BP_PRSN_NM'}); } ) ); ['click','keypress'].forEach(evt => document.querySelector("#btnRegPoCopy").addEventListener(evt,()=>{_this.regPoCopy()})); ['click','keypress'].forEach( evt => document.querySelector("#PO_MATR_CLASS").addEventListener(evt, ()=>{ _this.setBaseInfo(); } ) ); document.querySelector("#awn-popup-wrapper .awn-popup-body").className += ' pop_mng'; }; } const Tb_funcs_Hdr = new Tb_class_Hdr(); const Tb_funcs_Dtl = new Tb_class_Dtl() Tb_funcs_Hdr.init();