/*
* @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("공정을 선택해주세요.")
}
}