/* * @Overview 팝업 생성 * @Function 다가오는 공정 * 재사용 불가 Tb_oper 사용 */ class CreateMonitor { constructor(options) { const { container, fields, columns, selectKey, mode, setFilter, } = options; this.container = container; this.fields = fields; this.columns = columns; this.selectKey = selectKey; this.mode = mode; // 콜백 함수 this.setFilter = setFilter; } init() { vnLoad('', this.container, '', (loadHtml) => { this.modal = kuls_modal(loadHtml); this.setSelectOption(); //컬럼 공통 규칙 const commonFieldData = { vertAlign: "middle", hozAlign: "center", resizable: "header", headerHozAlign: "center", headerSortTristate: true, }; // 테이블 생성 this.tbModal = new Tabulator(".awn-popup-confirm .hy-table", { layout: "fitColumns", columns: this.fields, //컬럼 설정 columnDefaults: commonFieldData, headerSortElement: "", //정렬 아이콘 }); this.textSearch = document.querySelector("#awn-popup-wrapper [name=stxt]") || false; const selectSearch = document.querySelector("#awn-popup-wrapper [name=sgrp]") || false; // popup.js의 createPopup 클래스와의 다른부분 (Tb_oper인 테이블이 있어야한다. 즉, 재사용xx) if (this.textSearch) { this.textSearch.value = Tb_oper.tbList.getSelectedData()[0]?.OP_CD // 공정코드 랜딩 this.textSearch.addEventListener("keyup", () => { //검색어 입력 이벤트 this.setFilter(this.tbModal); }); } if (this.selectKey) { selectSearch.addEventListener("change", () => { //영업분류 변경 이벤트 this.setFilter(this.tbModal); }); } // 테이블 리스트 렌더링 this.tbModal.on("tableBuilt", () => { //초기 데이터 불러오기 이벤트 this.getPopList(); }); }) // vnload 끝 } // 선택태그 옵션 생성 setSelectOption() { // 선택태그 있으면 if (this.selectKey) { const selectTag = document.querySelector('#sgrp'); selectTag.options.length = 0; const opt = createOpt('', '- 전 체 -') selectTag.add(opt); Object.keys(this.selectKey).forEach(key => { selectTag.add(createOpt(key, this.selectKey[key])); }); } } // 데이터 렌더링 getPopList() { ajax_json({ url: "./sts_order_prod.ajax.php", data: {mode: this.mode, OP_CD: Tb_oper.tbList.getSelectedData()[0]?.OP_CD}, success: (data) => { if (data.code) { this.tbModal.setData(data.data); } }, error: (request, status, error) => { kuls_alert(error.message); }, }); }; } /* * @Overview 다가오는 공정 리스트 */ const popComeOper = function () { const fields = [ {field: "WO_SEQ", formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',}, {field: "WO_NO", title: "생산오더", width: '100', hozAlign: 'center',}, {field: "ITEM_CD", title: "품목코드", width: '80', hozAlign: 'center',}, {field: "ITEM_NM", title: "품목명", width: '180', hozAlign: 'left',}, {field: "BP_NM", title: "업체명", width: '120', hozAlign: 'left',}, {field: "PROC_SEQ", title: "작업순서", width: '60',}, {field: "ORD_DT", title: "등록일", width: '100',}, {field: "DLVY_REQ_DT", title: "납기일", width: '100',}, {field: "ORD_STATUS", title: "상태", width: '80', formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsWO_STATUS,}}, ]; // 공정 필드 넣기 for(let i = 1; i<15; i++){ if(i > 9){ fields.push({field: `G${i}`, title: `공정
${i}`, width: '40', hozAlign: 'center', formatter: tb_custom_formatter.status, formatterParams: { selectValue: Tb_oper.tbList.getSelectedData()[0]?.OP_CD } }) }else{ fields.push({field: `G0${i}`, title: `공정
${i}`, width: '40', hozAlign: 'center', formatter: tb_custom_formatter.status, formatterParams: { selectValue: Tb_oper.tbList.getSelectedData()[0]?.OP_CD } }) } }; // 비고 필드 넣기 const Tb_modal = new CreateMonitor({ container: '/ksvc/site/sts_order_prod/popComponent/comingOper.php', fields: fields, selectKey: '', mode: "getComingOper", setFilter: false, }); if(Tb_oper.tbList.getSelectedData()[0]){ Tb_modal.init(); }else{ kuls_alert("공정을 선택해주세요.") } }