984 lines
31 KiB
JavaScript
984 lines
31 KiB
JavaScript
|
|
const createOpt = function (optValue, optText) {
|
|
const opt = document.createElement('option');
|
|
opt.value = optValue;
|
|
opt.text = optText;
|
|
|
|
return opt;
|
|
}
|
|
|
|
/*
|
|
* @Overview : 테이블이 있는 팝업
|
|
* @Params : 팝업의 id또는 class, 테이블 field, ({팝업의 컬럼명 : 입력될 컬럼명 || id}), 데이터 조회에 사용할 vars000(기초코드), getMode(ajax), 데이터가 입력될 row, 더블클릭 허용여부, 조회조건
|
|
* @Params2 : 추가적인 params(선택), 테이블 아이디(선택)
|
|
*/
|
|
class CreatePopup {
|
|
constructor(options) {
|
|
const {
|
|
container,
|
|
fields,
|
|
columns,
|
|
selectKey,
|
|
mode,
|
|
tabrow,
|
|
dbClickable,
|
|
setFilter,
|
|
params,
|
|
tableId,
|
|
} = options;
|
|
|
|
this.container = container;
|
|
this.fields = fields;
|
|
this.columns = columns;
|
|
this.selectKey = selectKey;
|
|
this.mode = mode;
|
|
this.tabrow = tabrow;
|
|
this.dbClickable = dbClickable;
|
|
this.params = params?params:'';
|
|
this.tableId = tableId?tableId:'.awn-popup-confirm .hy-table';
|
|
|
|
|
|
// 콜백 함수
|
|
this.setFilter = setFilter;
|
|
}
|
|
|
|
/*
|
|
* 초기화
|
|
* bool : 외부 클릭시 닫힘 방지 및 중복 팝업 여부
|
|
*/
|
|
init(bool) {
|
|
vnLoad('', '/ksvc/inc/popup.php', this.container, (loadHtml) => {
|
|
|
|
if(bool){
|
|
this.modal = kuls_modal(loadHtml, { dontclose: true});
|
|
this.modal.el.classList.add("no-background");
|
|
}else{
|
|
this.modal = kuls_modal(loadHtml);
|
|
}
|
|
this.setSelectOption();
|
|
|
|
//컬럼 공통 규칙
|
|
const commonFieldData = {
|
|
vertAlign: "middle",
|
|
hozAlign: "center",
|
|
resizable: "header",
|
|
headerHozAlign: "center",
|
|
headerSortTristate: true,
|
|
};
|
|
|
|
// 테이블 생성
|
|
this.tbModal = new Tabulator(this.modal.el.querySelector(this.tableId), {
|
|
layout: "fitColumns",
|
|
columns: this.fields, //컬럼 설정
|
|
columnDefaults: commonFieldData,
|
|
headerSortElement: "<i class='bi'></i>", //정렬 아이콘
|
|
});
|
|
|
|
|
|
const addBtn = document.querySelector("#awn-popup-wrapper .add-btn") || "";
|
|
const removeBtn = document.querySelector("#awn-popup-wrapper .remove-btn") || "";
|
|
|
|
const ptResetBtn = document.querySelector("#awn-popup-wrapper #ptReset") || false;
|
|
const textSearch = document.querySelector("#awn-popup-wrapper [name=stxt]") || false;
|
|
const selectSearch = document.querySelector("#awn-popup-wrapper [name=sgrp]") || false;
|
|
|
|
if (ptResetBtn) {
|
|
ptResetBtn.addEventListener("click", () => {
|
|
this.initData();
|
|
this.modal.delete();
|
|
});
|
|
}
|
|
|
|
if (textSearch) {
|
|
textSearch.addEventListener("keyup", () => { //검색어 입력 이벤트
|
|
this.setFilter(this.tbModal);
|
|
});
|
|
}
|
|
|
|
if (this.selectKey) {
|
|
selectSearch.addEventListener("change", () => { //영업분류 변경 이벤트
|
|
this.setFilter(this.tbModal);
|
|
});
|
|
}
|
|
|
|
this.tbModal.on("rowDblClick", (e, tgt) => {
|
|
this.dbClickable && this.dbClick(e, tgt);
|
|
|
|
});
|
|
// 테이블 리스트 렌더링
|
|
this.tbModal.on("tableBuilt", () => { //초기 데이터 불러오기 이벤트
|
|
this.getPopList();
|
|
});
|
|
|
|
/*
|
|
* @Overview cell 클릭시 체크 또는 팝업
|
|
* @Parameter 이벤트, 셀
|
|
*/
|
|
this.tbModal.on("cellClick", (e, tgt) => {
|
|
this.cellClick && this.cellClick(e, tgt);
|
|
});
|
|
|
|
// 추가
|
|
["click", "keypress"].forEach((evt) => {
|
|
addBtn.addEventListener && addBtn.addEventListener(evt, () => {
|
|
this.addRow && this.addRow();
|
|
});
|
|
});
|
|
// 삭제
|
|
["click", "keypress"].forEach((evt) => {
|
|
removeBtn.addEventListener && removeBtn.addEventListener(evt, () => {
|
|
// 삭제 함수
|
|
this.removeRow && this.removeRow();
|
|
});
|
|
});
|
|
|
|
})
|
|
// vnload 끝
|
|
|
|
}
|
|
|
|
setData(e, tgt) {
|
|
let row = tgt._row;
|
|
if (this.tabrow) {
|
|
let uptjson = {_STATUS_: this.tabrow.getData()['_STATUS_'] || 'U'};
|
|
Object.keys(this.columns).forEach(key => {
|
|
uptjson[key] = row.data[this.columns[key]]; // 직접 할당
|
|
});
|
|
this.tabrow.update(uptjson);
|
|
} else {
|
|
Object.keys(this.columns).forEach(key => {
|
|
document.querySelector("#" + this.columns[key]).value = row.data[key];
|
|
})
|
|
}
|
|
};
|
|
|
|
initData() {
|
|
if (this.tabrow) {
|
|
let uptjson = {_STATUS_: this.tabrow.getData()['_STATUS_'] || 'U'};
|
|
Object.keys(this.columns).forEach(key => {
|
|
uptjson[key] = ""; // 직접 할당
|
|
});
|
|
this.tabrow.update(uptjson);
|
|
} else {
|
|
Object.keys(this.columns).forEach(key => {
|
|
document.querySelector("#" + this.columns[key]).value = "";
|
|
})
|
|
}
|
|
};
|
|
|
|
// 선택태그 옵션 생성
|
|
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() {
|
|
console.log(this.params);
|
|
ajax_json({
|
|
url: "/ksvc/inc/common.ajax.php",
|
|
data: {...this.params, mode: this.mode},
|
|
success: (data) => {
|
|
if (data.code) {
|
|
// console.log(data.data)
|
|
this.tbModal.setData(data.data);
|
|
if (this.columns.tgt_filter && this.columns.txt_filter) {
|
|
document.querySelector(this.columns.tgt_filter).value = this.columns.txt_filter;
|
|
this.setFilter();
|
|
}
|
|
}
|
|
},
|
|
error: (request, status, error) => {
|
|
kuls_alert(error.message);
|
|
},
|
|
});
|
|
};
|
|
|
|
/*
|
|
* @Overview 테이블 행 추가 함수
|
|
* @Parameter 없음
|
|
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
|
*/
|
|
addRow() {
|
|
this.tbModal.addRow({_STATUS_: "I"});
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 삭제 함수
|
|
* @Parameter 없음
|
|
* @function 선택된 모든 행 STATUS D
|
|
*/
|
|
removeRow() {
|
|
const selectedRows = this.tbModal.getSelectedRows(); // 선택된 모든 행 가져오기
|
|
|
|
// 선택된 각 행 삭제
|
|
selectedRows.forEach((row) => {
|
|
// STAUS D로 바꾸기
|
|
row.getData()._STATUS_ = row.getData()._STATUS_ == "I" ? null : "D";
|
|
|
|
const rowElement = row.getElement();
|
|
rowElement.classList.add("remove-row");
|
|
});
|
|
}
|
|
|
|
/*
|
|
* @Overview cell 클릭 함수
|
|
* @Parameter 클릭한 cell
|
|
* @Function 클릭한 cell의 filed 값에 따라 토글 상태 변경 또는 팝업
|
|
*/
|
|
cellClick(e, tgt) {
|
|
var editor = tgt.getColumn().getDefinition().editor;
|
|
|
|
switch (tgt.getField()) {
|
|
default:
|
|
if (!editor) {
|
|
this.rowClick && this.rowClick(e, tgt.getRow());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 선택 함수
|
|
* @Parameter 이벤트, 타겟 행
|
|
*/
|
|
rowClick(e, tgt) {
|
|
if (tgt.isSelected()) {
|
|
tgt.deselect();
|
|
} else {
|
|
tgt.select();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 선택 함수
|
|
* @Parameter 이벤트, 타겟 행
|
|
*/
|
|
dbClick(e, tgt) {
|
|
let rowData = tgt._row.data
|
|
|
|
this.setData(e, tgt);
|
|
|
|
this.modal.delete();
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
* @Overview 거래처 코드 찾기 팝업 생성
|
|
*/
|
|
const popClient = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
// {field: "SALES_GRP", title: "영업구분", width: 100, 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: 100,},
|
|
{field: "PUR_FLG", title: "매입처", width: 70, formatter: tb_common_funtions.formatterSelCircleIcon,},
|
|
{field: "SAL_FLG", title: "매출처", width: 70, formatter: tb_common_funtions.formatterSelCircleIcon,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) {
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
// let sgrp = trim(document.querySelector("#awn-popup-wrapper select[name=sgrp]").value);
|
|
modal.setFilter(function (data) {
|
|
// return (!sgrp || data['SALES_GRP'] === sgrp) &&
|
|
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 Tb_modal = new CreatePopup({
|
|
container: '#popup_client_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getPartnerList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 사업장 코드 찾기 팝업 생성
|
|
*/
|
|
const popBizArea = function (columns, tabrow) {
|
|
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: 150,},
|
|
{field: "HQ_FLG", title: "본사구분", width: 100,},
|
|
{field: "WORK_STD_TIME", title: "기준시간", width: 100,},
|
|
{field: "STD_CURRENCY_CD", title: "기준화폐", width: 100,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!stxt || data['BIZ_AREA_CD'].search(RegExp(stxt, "is")) !== -1 || data['BIZ_AREA_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_bizarea_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getBizareaList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
|
|
}
|
|
|
|
/*
|
|
* @Overview 부서 코드 찾기 팝업 생성
|
|
*/
|
|
const popDept = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "DEPT_CD", title: "부서코드", width: 100,},
|
|
{field: "DEPT_NM", title: "부서명", width: 150,},
|
|
{field: "PAR_DEPT_CD", title: "상위부서코드", width: 100,},
|
|
{field: "PAR_DEPT_NM", title: "상위부서명", width: 100,},
|
|
{field: "BIZ_AREA_NM", title: "사업장명", width: 100,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!stxt || data['DEPT_NM'].search(RegExp(stxt, "is")) !== -1 || data['DEPT_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_dept_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getDeptList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 공정 코드 찾기 팝업 생성
|
|
*/
|
|
const popOper = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "OP_CD", title: "공정코드", width: 100,},
|
|
{field: "OP_NM", title: "공정명", width: 100,},
|
|
{field: "REMK", title: "비고", width: 300,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!stxt || data['OP_CD'].search(RegExp(stxt, "is")) !== -1 || data['OP_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_oper_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getOperList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 특정 품목에 대한 공정 코드 찾기 팝업 생성
|
|
*/
|
|
// const popItemOper = function( columns, tabrow ){
|
|
//
|
|
// const fields = [
|
|
// { formatter:"rownum", title: "No", width: 50, headerSort: false, hozAlign:'center', },
|
|
// { field: "OP_CD", title: "공정코드", width: 100, },
|
|
// { field: "OP_NM", title: "공정명", width: 100, },
|
|
// { field: "OP_GRP", title: "공정그룹", width: 100, },
|
|
// { field: "REMK", title: "비고", width: 200, },
|
|
// ];
|
|
//
|
|
// const setTableFilter = function(modal){ //검색어 필터 적용
|
|
// let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
// modal.setFilter(function(data){
|
|
// return (!stxt || data['OP_CD'].search(RegExp(stxt,"is")) !== -1 || data['OP_NM'].search(RegExp(stxt,"is")) !== -1)
|
|
// }, '=', true);
|
|
// };
|
|
// const Tb_modal = new CreatePopup({
|
|
// container: '#popup_oper_container',
|
|
// fields: fields,
|
|
// columns: columns,
|
|
// selectKey: false,
|
|
// mode: "getItemOperList",
|
|
// tabrow: tabrow,
|
|
// dbClickable: true,
|
|
// setFilter: setTableFilter,
|
|
// });
|
|
//
|
|
// Tb_modal.init();
|
|
// }
|
|
|
|
|
|
/*
|
|
* @Overview 설비 코드 찾기 팝업 생성
|
|
*/
|
|
const popFacility = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "FACLT_CD", title: "설비코드", width: 150,},
|
|
{field: "FACLT_NM", title: "설비명", width: 150,},
|
|
{field: "FACLT_MNG_NO", title: "관리번호", width: 100,},
|
|
{field: "MAJR_EMP_NO", title: "담당자정", width: 100,},
|
|
{field: "PURPOS_USAGE", title: "용도", width: 200,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
// let sgrp = trim(document.querySelector("#awn-popup-wrapper select[name=sgrp]").value);
|
|
// (!sgrp || data["ITEM_GRP"] === sgrp) &&
|
|
modal.setFilter(function (data) {
|
|
return (!stxt || data['FACLT_NM'].search(RegExp(stxt, "is")) !== -1 || data['FACLT_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_facility_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getFacilityList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 사원 코드 찾기 팝업 생성
|
|
*/
|
|
const popWorker = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "EMP_NO", title: "사번", width: 100,},
|
|
{field: "EMP_NM", title: "성명", width: 100,},
|
|
{field: "EMP_SHORT_NM", title: "영문명", width: 150,},
|
|
{field: "WRK_TEAM", title: "부서", width: 100,},
|
|
{
|
|
field: "JOB_POS", title: "직위", width: 100,
|
|
formatter: tb_common_funtions.formatterSelect,
|
|
formatterParams: {values: varsPosition},
|
|
},
|
|
{
|
|
field: "JOB_FUNC", title: "현장직", width: 50,
|
|
formatter : tb_common_funtions.formatterSelCircleIcon,
|
|
},
|
|
// {field: "EMPLM_TYPE", title: "고용형태", width: 100,},
|
|
// {field: "MAIL_ID", title: "이메일", width: 200,},
|
|
// {field: "ENT_DT", title: "입사일", width: 150,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
return ((!stxt || data['EMP_NM'].search(RegExp(stxt, "is")) !== -1))
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_worker_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getWorkerList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 거래처 수정 팝업
|
|
*/
|
|
const popClientEditor = function (columns, tabrow) {
|
|
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "", title: "담당자명", width: 100,},
|
|
{field: "", title: "이메일", width: 200,},
|
|
{field: "", title: "연락처", width: 150,},
|
|
{field: "", title: "휴대폰", width: 150,},
|
|
{field: "", title: "FAX NO", width: 150,},
|
|
{field: "", title: "비고", width: 300,},
|
|
{
|
|
field: "",
|
|
title: "메인",
|
|
width: 50,
|
|
formatter: tb_common_funtions.formatterCheckIcon2,
|
|
formatterParams: {checkval: 'Y'}
|
|
},
|
|
];
|
|
|
|
// 검색기능 필터
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
};
|
|
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_client_editor',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "",
|
|
tabrow: tabrow,
|
|
dbClickable: false,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
|
|
/*
|
|
* @Overview 품목 찾기 팝업 생성
|
|
*/
|
|
const popItem = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "ITEM_CD", title: "품목 코드", width: 100,},
|
|
{field: "ITEM_NM", title: "품목 이름", width: 250, hozAlign: 'left'},
|
|
// {field: "DRAW_NO", title: "도면번호", width: 150,},
|
|
{field: "ITEM_GRP", title: "품목그룹", width: 100, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsITEM_GRP} },
|
|
// {field: "DRAW_VER", title: "도면버전", width: 100,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
let sgrp = trim(document.querySelector("#awn-popup-wrapper select[name=sgrp]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!sgrp || data["ITEM_GRP"] === sgrp) &&
|
|
(!stxt || data['ITEM_CD'].search(RegExp(stxt, "is")) !== -1 || data['ITEM_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
// let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
// modal.setFilter(function (data) {
|
|
// return (!stxt || data['ITEM_CD'].search(RegExp(stxt, "is")) !== -1 || data['ITEM_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
// }, '=', true);
|
|
// };
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_item_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: varsITEM_GRP,
|
|
mode: "getItemList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 품목 라우팅
|
|
*/
|
|
const popRouting = function (columns, ITEM_CD) {
|
|
const fields = [
|
|
{ field: "OP_SEQ", title: "공순", width: 65},
|
|
{ title: "공정", cssClass:"width-200", columns:[
|
|
{field:"OP_CD", width:100},
|
|
{field:"OP_NM", width:100}
|
|
]
|
|
},
|
|
{ field: "STD_SETUP_TM", title: "준비시간</br>(분)", width: 80,
|
|
formatterParams:{
|
|
decimal:".",
|
|
precision:0
|
|
},
|
|
},
|
|
{ field: "CYCLE_TM", title: "공정시간</br>(분)", width: 80,
|
|
formatterParams:{
|
|
decimal:".",
|
|
precision:0
|
|
}
|
|
},
|
|
{ field: "STD_OP_AMT", title: "공정 단가</br>(원)", width: 80 ,
|
|
formatter:"money",
|
|
formatterParams:{
|
|
decimal:".",
|
|
precision:0
|
|
}
|
|
},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!stxt || data['ITEM_CD'].search(RegExp(stxt, "is")) !== -1 || data['ITEM_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
|
|
const Tb_modal = new CreatePopup({
|
|
container: "#popup_routing_container",
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getRoutingList",
|
|
tabrow: false,
|
|
dbClickable: false,
|
|
setFilter: setTableFilter,
|
|
params : { ITEM_CD : ITEM_CD},
|
|
});
|
|
|
|
Tb_modal.init(true);
|
|
|
|
}
|
|
|
|
/*
|
|
* @Overview 검사항목검색
|
|
*/
|
|
const popInsp = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "INSP_ITEM", title: "검사항목", width: 100,},
|
|
{field: "INSP_NAME", title: "검사항목명", width: 150,},
|
|
{field: "INSP_METH", title: "검사방법", width: 150, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsINSP_METH}},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
let sgrp = trim(document.querySelector("#awn-popup-wrapper select[name=sgrp]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!sgrp || data["INSP_METH"] === sgrp) &&
|
|
(!stxt || data['INSP_NAME'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_insp_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: varsINSP_METH,
|
|
mode: "getInspList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
/*
|
|
* @Overview 검사항목검색
|
|
*/
|
|
const popInspItem = function (columns, tabrow, params) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "INSP_ITEM", title: "검사항목", width: 100,},
|
|
{field: "INSP_NAME", title: "검사항목명", width: 150,},
|
|
{field: "INSP_METH", title: "검사방법", width: 150, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsINSP_METH}},
|
|
{field: "SPEC_VAL", title: "기준값", width: 150,},
|
|
{field: "TOL_UPPER", title: "상한값", width: 150,},
|
|
{field: "TOL_LOWER", title: "하한값", width: 150,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
let sgrp = trim(document.querySelector("#awn-popup-wrapper select[name=sgrp]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!sgrp || data["INSP_METH"] === sgrp) &&
|
|
(!stxt || data['INSP_NAME'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_insp_item',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: varsINSP_METH,
|
|
mode: "getInspItem",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
params: params,
|
|
tableId: '#insp_item'
|
|
});
|
|
|
|
Tb_modal.init();
|
|
console.log(Tb_modal)
|
|
}
|
|
|
|
|
|
/*
|
|
* @Overview 생산 오더별 공정 검색
|
|
*/
|
|
const popOrder = function (columns, tabrow) {
|
|
const fields = [
|
|
{field: "WO_SEQ", formatter: "rownum", title: "No", width: 40, headerSort: false, hozAlign: 'center',},
|
|
{field: "WO_NO", title: "생산오더", width: 60,},
|
|
{field: "OP_CD", title: "공정", width: 40,},
|
|
// {field: "FACLT_CD", title: "설비", width: 100,},
|
|
{field: "ITEM_CD", title: "품목", width: 100,},
|
|
{field: "ITEM_NM", title: "품명", width: 400, hozAlign:"left"},
|
|
{field: "ORD_QTY", title: "지시수량", width: 60, formatter: "money", formatterParams: {decimal: ",", precision: 0}},
|
|
{field: "WRK_QTY", title: "생산수량", width: 60, formatter: "money", formatterParams: {decimal: ",", precision: 0}},
|
|
{field: "PLANT_CD", title: "공장", width: 60,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
// return (!stxt || data['INSP_ITEM'].search(RegExp(stxt,"is")) !== -1 || data['INSP_NAME'].search(RegExp(stxt,"is")) !== -1)
|
|
return (!stxt || data['ITEM_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_order_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getOrderList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
|
|
/*
|
|
* @Overview 불량선택
|
|
*/
|
|
const popDef = function (columns, tabrow) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
// { field: "DEF_FACLT_CD", title: "불량설비", width: 100, },
|
|
{field: "DEF_OP_CD", title: "공정", width: 150,},
|
|
{field: "DEF_CD", title: "불량코드", width: 150,},
|
|
// { field: "DEF_QTY", title: "불량수량", width: 150, },
|
|
|
|
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
// return (!stxt || data['INSP_ITEM'].search(RegExp(stxt,"is")) !== -1 || data['INSP_NAME'].search(RegExp(stxt,"is")) !== -1)
|
|
return (!stxt || data['DEF_FACLT_CD'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_def_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getDefList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 생산실적 오더별 공정 검색
|
|
*/
|
|
const popRegOrder = function (columns, tabrow) {
|
|
const fields = [
|
|
{field: "WO_SEQ", formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "WO_NO", title: "생산오더", width: 100,},
|
|
{field: "ITEM_CD", title: "품목", width: 100,},
|
|
{field: "ITEM_NM", title: "품명", width: 400,},
|
|
{field: "DRAW_NO", title: "도면번호", width: 150,},
|
|
{field: "OP_SEQ", title: "공순", width: 100,},
|
|
{field: "OP_CD", title: "공정", width: 100,},
|
|
{field: "ORD_QTY", title: "지시수량", width: 100, formatter: "money", formatterParams: {decimal: ",", precision: 0}},
|
|
{field: "PRV_OP_CD", title: "이전공정", width: 100,},
|
|
{
|
|
field: "OP_WRK_QTY",
|
|
title: "이전공정실적",
|
|
width: 100,
|
|
formatter: "money",
|
|
formatterParams: {decimal: ",", precision: 0}
|
|
}
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
// return (!stxt || data['INSP_ITEM'].search(RegExp(stxt,"is")) !== -1 || data['INSP_NAME'].search(RegExp(stxt,"is")) !== -1)
|
|
return (!stxt || data['ITEM_CD'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_reg_order_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getRegOrderList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 생산실적 오더별 공정 검색
|
|
*/
|
|
const pop_excel_item = function (columns, tabrow) {
|
|
const fields = [
|
|
{field: "WO_SEQ", formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "WO_NO", title: "생산오더", width: 100,},
|
|
{field: "ITEM_CD", title: "품목", width: 100,},
|
|
{field: "ITEM_NM", title: "품명", width: 400,},
|
|
{field: "DRAW_NO", title: "도면번호", width: 150,},
|
|
{field: "OP_SEQ", title: "공순", width: 100,},
|
|
{field: "OP_CD", title: "공정", width: 100,},
|
|
{field: "ORD_QTY", title: "지시수량", width: 100, formatter: "money", formatterParams: {decimal: ",", precision: 0}},
|
|
{field: "PRV_OP_CD", title: "이전공정", width: 100,},
|
|
{
|
|
field: "OP_WRK_QTY",
|
|
title: "이전공정실적",
|
|
width: 100,
|
|
formatter: "money",
|
|
formatterParams: {decimal: ",", precision: 0}
|
|
}
|
|
];
|
|
|
|
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#pop_item',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 생산오더등록 공정별 검사항목 팝업
|
|
*/
|
|
const popOperCheck = function( columns, tabrow ){
|
|
const fields = [
|
|
{ formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center', },
|
|
{ field: "INSP_NAME", title: "검사항목", width: '45%' },
|
|
{ field: "INSP_METH", title: "검사방법", width: '45%', formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsINSP_METH,}},
|
|
|
|
];
|
|
|
|
const setTableFilter = function(modal){ //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function(data){
|
|
return (!stxt || data['INSP_NAME'].search(RegExp(stxt,"is")) !== -1 || data['INSP_NAME'].search(RegExp(stxt,"is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_oper_check_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getItemOperCheckList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
|
|
/*
|
|
* @Overview 공정 코드 찾기 팝업 생성 (각 생산오더에 대한 값만 출력)
|
|
*/
|
|
const popOper2 = function (columns, tabrow, WO_NO) {
|
|
const fields = [
|
|
{formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center',},
|
|
{field: "OP_CD", title: "공정코드", width: 100,},
|
|
{field: "OP_NM", title: "공정명", width: 100,},
|
|
{field: "REMK", title: "비고", width: 300,},
|
|
];
|
|
|
|
const setTableFilter = function (modal) { //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function (data) {
|
|
return (!stxt || data['OP_CD'].search(RegExp(stxt, "is")) !== -1 || data['OP_NM'].search(RegExp(stxt, "is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_oper_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getRegOperList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
params: {WO_NO : WO_NO}
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|
|
|
|
/*
|
|
* @Overview 생산오더등록 공정별 검사항목 팝업 (각 공정에 대한 값만 출력)
|
|
*/
|
|
const popOperCheck2 = function( columns, tabrow, OP_CD ){
|
|
const fields = [
|
|
{ formatter: "rownum", title: "No", width: 50, headerSort: false, hozAlign: 'center', },
|
|
{ field: "INSP_NAME", title: "검사항목", width: '45%' },
|
|
{ field: "INSP_METH", title: "검사방법", width: '45%', formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsINSP_METH,}},
|
|
|
|
];
|
|
|
|
const setTableFilter = function(modal){ //검색어 필터 적용
|
|
let stxt = trim(document.querySelector("#awn-popup-wrapper input[name=stxt]").value);
|
|
modal.setFilter(function(data){
|
|
return (!stxt || data['INSP_NAME'].search(RegExp(stxt,"is")) !== -1 || data['INSP_NAME'].search(RegExp(stxt,"is")) !== -1)
|
|
}, '=', true);
|
|
};
|
|
const Tb_modal = new CreatePopup({
|
|
container: '#popup_oper_check_container',
|
|
fields: fields,
|
|
columns: columns,
|
|
selectKey: false,
|
|
mode: "getItemOperCheckList",
|
|
tabrow: tabrow,
|
|
dbClickable: true,
|
|
setFilter: setTableFilter,
|
|
// params: OP_CD
|
|
});
|
|
|
|
Tb_modal.init();
|
|
}
|