forked from HANYANG/HANYANG_MES
744 lines
27 KiB
JavaScript
744 lines
27 KiB
JavaScript
FilePond.registerPlugin(FilePondPluginFileValidateType);
|
|
|
|
//Grid용 클래스. 블록 처리용
|
|
class Tb_class_ncr {
|
|
constructor(){
|
|
let _this = this;
|
|
_this.tblList = "";
|
|
_this.ajax_url = "./ncr.ajax.php";
|
|
}
|
|
|
|
//리스트 로드
|
|
getMainList (sdata) {
|
|
|
|
let _this = this;
|
|
|
|
let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력
|
|
ajax_json({
|
|
url: _this.ajax_url,
|
|
data: {
|
|
mode: 'getNcrList',
|
|
WORKER_NM: sdata?.WORKER_NM||'',
|
|
WRK_DT_ST: sdata?.WRK_DT_ST||'',
|
|
WRK_DT_ED: sdata?.WRK_DT_ED||'',
|
|
OFLD: sdata?.OFLD||'',
|
|
OASC: sdata?.OASC||'',
|
|
LINE_NUM: sdata?.LINE_NUM||'',
|
|
NOW_PAGE: sdata?.NOW_PAGE||'',
|
|
},
|
|
success: function (data) {
|
|
if (data.code) {
|
|
_this.tblList.setData(data.data);
|
|
_this.tblList.getRows().forEach(row=>row.getData()['JUDG_CD'] && row.getCell('CHECK').getElement().querySelector('input').setAttribute('disabled',true)); //진행된 수주현항 선택 못하도록 처리
|
|
|
|
//page
|
|
putPagiNation({
|
|
...sdata,
|
|
TARGET: ".tabulator-footer-contents",
|
|
PREB_PAGE: data?.data[0]?.PREB_PAGE,
|
|
NEXB_PAGE: data?.data[0]?.NEXB_PAGE,
|
|
LAST_PAGE: data?.data[0]?.LAST_PAGE,
|
|
PAGE_LISTS: data?.data[0]?.PAGE_LISTS?.split('|'),
|
|
callback: (conf)=>{
|
|
_this.getMainList({
|
|
WORKER_NM: conf?.WORKER_NM||'',
|
|
WRK_DT_ST: conf?.WRK_DT_ST||'',
|
|
WRK_DT_ED: conf?.WRK_DT_ED||'',
|
|
OFLD: conf?.OFLD||'',
|
|
OASC: conf?.OASC||'',
|
|
LINE_NUM: conf?.LINE_NUM||'',
|
|
NOW_PAGE: conf?.NOW_PAGE||'',
|
|
});
|
|
}
|
|
});
|
|
}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;
|
|
};
|
|
|
|
//검색 조건 Clear
|
|
clearInput (){
|
|
let _this = this;
|
|
_this.setFilter();
|
|
};
|
|
|
|
setFilter () {
|
|
return false;
|
|
|
|
let _this = this;
|
|
|
|
_this.tblList.setFilter(function(data){ //필터링
|
|
return (
|
|
true
|
|
// && ( !document.getElementById("S_BIZ_AREA_NM") || ( (data.BIZ_AREA_CD+"|"+data.BIZ_AREA_NM).search(document.getElementById("S_BIZ_AREA_NM").value) !== -1 ) )
|
|
// && ( !document.getElementById("S_BP_NM") || ( (data.BP_CD+"|"+data.BP_NM).search(document.getElementById("S_BP_NM").value) !== -1 ) )
|
|
// && ( !document.getElementById("S_USE_FLG") || ( !document.getElementById("S_USE_FLG").checked || data.USE_FLG === 'Y' ) )
|
|
)
|
|
}, '=', true);
|
|
};
|
|
|
|
//Row 추가
|
|
addRow(){
|
|
let _this = this;
|
|
_this.tblList.addRow({_STATUS_:'I'},true);
|
|
}
|
|
|
|
//Row 클릭 콜백
|
|
rowClick (e, tgt){
|
|
let _this = this;
|
|
if( e.target.classList.contains("btnfile") ){ //첨부파일시 Row클릭금지
|
|
return;
|
|
}
|
|
|
|
let rowData = tgt.getData();
|
|
|
|
Tb_ncr_pop.modalNcr(rowData.NCR_NO);
|
|
};
|
|
|
|
//Cell 클릭 콜백
|
|
cellClick (e, tgt){
|
|
let _this = this;
|
|
_this.tgt = tgt;
|
|
// switch( tgt.getField() ){
|
|
// case "BP_NM":
|
|
// popPartnerList({tgt_id:'',tgt_name:'BP_NM',tgt_addr:'',tgt_currency:''}, tgt.getRow()._row);
|
|
// break;
|
|
// }
|
|
};
|
|
|
|
//Cell 변경 콜백
|
|
cellEdited (cell){
|
|
let _this = this;
|
|
cell.getData()._STATUS_ = cell.getData()._STATUS_||'U';
|
|
};
|
|
|
|
popBP () {
|
|
let _this = this;
|
|
|
|
popPartnerList({tgt_id:'#S_BP_CD',tgt_name:'#S_BP_NM'});
|
|
};
|
|
|
|
//sort
|
|
columnSort(e,tgt) {
|
|
let _this = this;
|
|
let sorters = tgt.getTable().getSorters()[0];
|
|
_this.getMainList({..._this.searchData,OFLD:sorters?.field,OASC:sorters?.dir});
|
|
};
|
|
|
|
//등록
|
|
putNcr (){
|
|
let _this = this;
|
|
let postdata = {
|
|
'mode': 'delNcr',
|
|
'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;
|
|
};
|
|
|
|
popDrawList ( cell ){
|
|
let _this = this;
|
|
//팝업 템플릿 로드 후 모달 출력
|
|
Tb_draw.init(cell.getComponent().getRow());
|
|
};
|
|
|
|
shGFormatter ( cell ) {
|
|
let _this = this;
|
|
return varsSHAPE_GRP[cell.getValue()]?.Code_Exp;
|
|
};
|
|
|
|
popDrawList ( cell ){
|
|
let _this = this;
|
|
//팝업 템플릿 로드 후 모달 출력
|
|
Tb_draw.init(cell.getComponent().getRow());
|
|
};
|
|
|
|
delNcr (){
|
|
let _this = this;
|
|
_this.tblList.getSelectedRows().forEach(row => {
|
|
row.update({_STATUS_:'D'});
|
|
row.getElement().classList.add("del-row");
|
|
});
|
|
};
|
|
|
|
//시작 실행
|
|
init () {
|
|
let _this = this;
|
|
|
|
const fields = [
|
|
{ field: "CHECK",formatter:"rowSelection", titleFormatter: "rowSelection", title: "No", width: "4%", noxls:true },
|
|
//{ formatter:"rowSelection", titleFormatter: "rowSelection", width: "4%", },
|
|
{ field: "NCR_NO", title: "NCR NO", width: "10%", },
|
|
{ field: "FOUND_DT", title: "발생일", width: "7%", },
|
|
{ field: "FOUND_TM", title: "발생시간", width: "8%", },
|
|
{ field: "MNG_SN_ID", title: "일련번호", width: "11%", },
|
|
{ field: "MNG_NO", title: "수주번호", width: "9%", },
|
|
{ field: "DLVY_BP_NM", title: "고객", width: "9%", },
|
|
{ field: "ITEM_CD", title: "품명", width: "8%", formatter:_this.shGFormatter, },
|
|
{ field: "", title: "규격",
|
|
columns:[
|
|
{ field:"OUT_DIA", title:"OD", hozAlign:"center", width:"5%", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, },
|
|
{ field:"IN_DIA", title:"ID", hozAlign:"center", width:"5%", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, },
|
|
{ field:"THICK", title:"T", hozAlign:"center", width:"5%", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, },
|
|
{ field:"WIDTH", title:"W", hozAlign:"center", width:"5%", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, },
|
|
{ field:"LENGTH", title:"L", hozAlign:"center", width:"5%", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, },
|
|
],
|
|
},
|
|
{ field: "MATR_TYPE", title: "재질", width: "8%", },
|
|
{ field: "NCR_QTY", title: "수량", width: "5%", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':0}; }, },
|
|
{ field: "FOUND_TYPE", title: "발견유형", width: "8%", editor:'list', cssClass:"user-list", editorParams:{ values: varsFOUND_TYPE },
|
|
formatter: tb_common_funtions.formatterSelect, formatterParams:{ values: varsFOUND_TYPE }, },
|
|
{ field: "", title: "도면",
|
|
columns:[
|
|
{ field:"ASS_DRAW", title:"도면번호", width:"10%", },
|
|
{ field:"", title:"<i class='fa-solid fa-compass-drafting'></i>", width:"2%",
|
|
formatter: tb_common_funtions.formatterButton,
|
|
formatterParams:{
|
|
btnTitle:'',
|
|
btnClass:'btn btn-sm btn-nobd fa-regular fa-image btnfile',
|
|
cfunc: (cell)=> { _this.popDrawList(cell) },
|
|
event: ['click', 'keyup'],
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{ field: "JUDG_EMP_NM", title: "판정자", width: "8%", },
|
|
{ field: "NCR_CD", title: "부적합사유", width: "8%", editor:'input', },
|
|
{ field: "JUDG_CD", title: "판정", width: "8%", editor:'list', cssClass:"user-list", editorParams:{ values: varsJUDG_CD },
|
|
formatter: tb_common_funtions.formatterSelect, formatterParams:{ values: varsJUDG_CD }, },
|
|
];
|
|
|
|
_this.tblList = new Tabulator("#tblNcrList",{
|
|
layout: "fitColumns",
|
|
height: "100%",
|
|
data: [], //기본 데이터
|
|
columns: fields, //컬럼 설정
|
|
columnDefaults: { //컬럼 공통 규칙
|
|
sorter:()=>{},
|
|
headerSort: false,
|
|
vertAlign: "middle",
|
|
hozAlign: "center",
|
|
resizable: "header",//Resize 는 헤더에서만 가능
|
|
headerHozAlign: "center", //헤더 정렬
|
|
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
|
|
},
|
|
footerElement:'<ul class="pagination justify-content-center align-items-center mb-1"><li><a class="pn_link npage btn btn-light"><span class="f_page">1</span></a></li></ul>',
|
|
headerSortElement: "<i class='bi'></i>", //정렬 아이콘
|
|
});
|
|
|
|
_this.tblList.on("tableBuilt", () => { //Tabulator 초기 데이터 불러오기 이벤트
|
|
_this.getMainList();
|
|
});
|
|
|
|
_this.tblList.on("rowClick", (e,tgt) => { //Tabulator Row Click
|
|
_this.rowClick && Tb_ncr.rowClick(e,tgt);
|
|
});
|
|
_this.tblList.on("cellClick", (e,tgt) => { //Tabulator cell Click
|
|
_this.cellClick && Tb_ncr.cellClick(e,tgt);
|
|
});
|
|
_this.tblList.on("cellEdited", (cell) => { //Tabulator cell Edited
|
|
_this.cellEdited && Tb_ncr.cellEdited(cell);
|
|
});
|
|
_this.tblList.on("headerClick", (e,tgt) => { //Tabulator cell Edited
|
|
_this.columnSort && _this.columnSort(e,tgt);
|
|
});
|
|
|
|
['click','keypress'].forEach(evt => document.querySelector("#bntListSearch").addEventListener(evt,()=>{
|
|
_this.searchData = {
|
|
WORKER_NM: document.querySelector('#S_WORKER_NM').value||'',
|
|
WRK_DT_ST: document.querySelector('#S_WRK_DT_ST').value||'',
|
|
WRK_DT_ED: document.querySelector('#S_WRK_DT_ED').value||'',
|
|
LINE_NUM: document.querySelector('#S_LINE_NUM').value||'',
|
|
NOW_PAGE: 1,
|
|
}; // _this.searchData 는 전체적으로 이용되므로 간략화 금지
|
|
_this.getMainList(_this.searchData);
|
|
}));
|
|
['click','keypress'].forEach(evt => document.querySelector("#btnAddNcr").addEventListener(evt,()=>{Tb_ncr_pop.modalNcr()}));
|
|
['click','keypress'].forEach(evt => document.querySelector("#btnPutNcr").addEventListener(evt,()=>{_this.putNcr()}));
|
|
['click','keypress'].forEach(evt => document.querySelector("#btnDelNcr").addEventListener(evt,()=>{_this.delNcr()}));
|
|
['change','keydown','keyup'].forEach(evt => document.querySelectorAll("#S_WORKER_NM, #S_WRK_DT_ST, #S_WRK_DT_ED").forEach(tgt=>tgt.addEventListener(evt,()=>{Tb_ncr.setFilter()})));
|
|
};
|
|
}
|
|
|
|
class Tb_class_ncr_pop {
|
|
constructor(){
|
|
let _this = this;
|
|
_this.ajax_url = "./ncr.ajax.php";
|
|
_this.download_url = "/include/getFile.php";
|
|
_this.tblList = "";
|
|
_this.putNcrModal = "";
|
|
_this.NCR_NO = "";
|
|
}
|
|
|
|
// 부적합 등록 팝업
|
|
modalNcr ( NCR_NO ){
|
|
let _this = this;
|
|
_this.NCR_NO = NCR_NO;
|
|
|
|
vnLoad( '', './ncr.pop.inc.php', '', function(loadHtml){
|
|
_this.putNcrModal = kuls_modal(loadHtml);
|
|
document.querySelector(".btn_close").addEventListener("click", ()=>_this.putNcrModal.delete());
|
|
_this.init(NCR_NO);
|
|
});
|
|
};
|
|
|
|
getNcr () {
|
|
let _this = this;
|
|
|
|
if( !_this.NCR_NO ) return;
|
|
|
|
ajax_json({
|
|
url: _this.ajax_url,
|
|
type: "POST",
|
|
data: {
|
|
mode: 'getNcr',
|
|
NCR_NO: _this.NCR_NO,
|
|
},
|
|
success: function (data) {
|
|
if( data.code ){
|
|
Object.keys(data.data).forEach(key => {
|
|
switch( key ){
|
|
case "SO_QTY":
|
|
for( let a=1 ; a<=data.data[key] ; a++ ){
|
|
let opt = document.createElement('option');
|
|
opt.value = '#'+a;
|
|
opt.text = '#'+a;
|
|
document.querySelector("#MNG_SN_ID").append(opt);
|
|
}
|
|
case "OUT_DIA":
|
|
document.querySelector("#ITEM_SPEC").value = [data.data['OUT_DIA'],data.data['IN_DIA'],data.data['THICK'],data.data['WIDTH'],data.data['LENGTH'],].filter(v=>v).map(v=>parseInt(v)).join(' x ');
|
|
break;
|
|
case "ITEM_CD":
|
|
data.data[key] = Tb_so_pop.shGFormatter(data.data[key]);
|
|
break;
|
|
case "ACTION" :
|
|
_this.tblList.setData(data.data[key]);
|
|
break;
|
|
}
|
|
|
|
if( document.getElementById(key) ){
|
|
document.getElementById(key).setAttribute("data-defval", data.data[key]);
|
|
}
|
|
});
|
|
formSetVal(document.forms['frmNcr']);
|
|
data.data.ATTS?.forEach( att => {
|
|
_this.addFileDiv( att );
|
|
} );
|
|
}else{
|
|
kuls_alert(data.mesg);
|
|
}
|
|
},
|
|
error: function (request, status, error) {
|
|
kuls_alert(error.message);
|
|
},
|
|
complete: function(){
|
|
}
|
|
});
|
|
return false;
|
|
};
|
|
|
|
putNcr = (e) => {
|
|
e.preventDefault();
|
|
let _this = this;
|
|
|
|
if (!document.querySelector("#JUDG_EMP_NO").value || !document.querySelector("#JUDG_CD").value ||
|
|
!document.querySelector("#JUDG_EMP_NM").value) {
|
|
kuls_alert("판정사항과 판정자는 필수 입니다.");
|
|
return false;
|
|
}
|
|
|
|
let formdata = new FormData(document.frmNcr);
|
|
if( formdata.get("NCR_NO_OLD") ){
|
|
formdata.append("mode", "setNcr");
|
|
}else{
|
|
formdata.append("mode", "putNcr" );
|
|
}
|
|
|
|
let postdata = _this.tblList.getData().reduce( (nrow, mem, i) => {
|
|
mem._STATUS_ && nrow.push({...mem});
|
|
return nrow;
|
|
},[] );
|
|
|
|
formdata.append("ACTION", JSON.stringify(postdata));
|
|
|
|
ajax_form({
|
|
url: _this.ajax_url,
|
|
type: "POST",
|
|
data: formdata,
|
|
success: function (data) {
|
|
if( data.code ){
|
|
kuls_success("적용 되었습니다.");
|
|
//_this.getRepairInfo(formdata.get("FACLT_CD"));
|
|
_this.putNcrModal.delete();
|
|
Tb_ncr.getMainList();
|
|
}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");
|
|
};
|
|
|
|
uploadFile (){
|
|
let _this = this;
|
|
|
|
_this.uploader.browse();
|
|
};
|
|
|
|
delFile (){
|
|
let _this = this;
|
|
|
|
document.querySelectorAll("#pic_block .img_block:has(input:checked)").forEach( tgt => tgt.classList.add("d-hide") );
|
|
};
|
|
|
|
addFileDiv ( finfo ){
|
|
let _this = this;
|
|
|
|
let fid = finfo.file_id||(finfo.tmp_name||'');
|
|
let nid = finfo.nid||'';
|
|
let sid = finfo.sid||'';
|
|
|
|
let vdiv = document.createElement("div");
|
|
let vgbn = document.createElement("input");
|
|
let vfid = document.createElement("input");
|
|
let vsid = document.createElement("input");
|
|
let vchk = document.createElement("input");
|
|
let file_url = _this.download_url+"?gubun="+(finfo.gubun||'')
|
|
+"&nid="+nid
|
|
+"&sid="+sid
|
|
+"&file_id="+fid
|
|
+"&tmp_name="+(finfo.tmp_name||'')
|
|
+"&name="+(finfo.file_name||'')
|
|
+"&size="+(finfo.file_size||'');
|
|
vdiv.classList.add('img_block');
|
|
vdiv.style.backgroundImage = `url('${file_url}')`;
|
|
vdiv.setAttribute("data-url", file_url);
|
|
vdiv.setAttribute("data-filename", finfo.file_name);
|
|
vdiv.addEventListener("click", function(e){
|
|
pop_filedown(e.target.getAttribute('data-url'), e.target.getAttribute('data-filename').split(".").pop());
|
|
});
|
|
vgbn.type="hidden"; vgbn.name="file_gubun[]"; vgbn.value=finfo.gubun; vdiv.append(vgbn);
|
|
vfid.type="hidden"; vfid.name="file_id[]"; vfid.value=fid; vdiv.append(vfid);
|
|
vsid.type="hidden"; vsid.name="sid[]"; vsid.value=sid; vdiv.append(vsid);
|
|
vchk.addEventListener("click",(e)=>{ e.stopPropagation(); })
|
|
vchk.type="checkbox"; vchk.name="file_del[]"; vchk.value=fid; vdiv.append(vchk);
|
|
|
|
document.querySelector("#pic_block").append(vdiv);
|
|
}
|
|
|
|
init(NCR_NO) {
|
|
|
|
let _this = this;
|
|
|
|
const fields_member = [
|
|
{ formatter:"rowSelection", titleFormatter: "rowSelection", width: "2%", minWidth:36, headerSort: false, },
|
|
{ field: "NCR_NO", title: "NCR번호", width: "0%", minWidth:0, visible: false, },
|
|
{ field: "ACTION_DT", title: "조치일", width: "15%", minWidth:75, editor:'date', editorParams: {max:'9999-12-31'}, },
|
|
{ field: "ACTION_DESC", title: "조치내역", width: "30%", minWidth:100, editor:'input', },
|
|
{ field: "ACTION_AMT", title: "조치비용", width: "15%", minWidth:75, editor:'input', formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, },
|
|
{ field: "ACTION_CORP", title: "조치업체", width: "20%", minWidth:75, editor:'input', },
|
|
{ field: "ACTION_TEL_NO", title: "전화번호", width: "20%", minWidth:75, editor:'input', },
|
|
{ field: "USE_FLG", title: "사용여부", width: "0%", minWidth:0, visible: false, },
|
|
];
|
|
|
|
_this.tblList = new Tabulator("#tblNcrActionHistory",{
|
|
layout: "fitColumns",
|
|
data: [], //기본 데이터
|
|
height: "100%",
|
|
columns: fields_member, //컬럼 설정
|
|
columnDefaults: { //컬럼 공통 규칙
|
|
vertAlign: "middle",
|
|
hozAlign: "center",
|
|
resizable: "header",//Resize 는 헤더에서만 가능
|
|
headerHozAlign: "center", //헤더 정렬
|
|
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
|
|
},
|
|
headerSortElement: "<i class='bi'></i>", //정렬 아이콘
|
|
});
|
|
|
|
_this.tblList.on("cellEdited", function(cell) { //Tabulator 초기 데이터 불러오기 이벤트
|
|
cell.getData()._STATUS_ = cell.getData()._STATUS_||'U';
|
|
});
|
|
_this.tblList.on("rowDeselected", (row) => { //Tabulator cell Deslected
|
|
_this.revokeData && _this.revokeData(row);
|
|
});
|
|
_this.tblList.on("tableBuilt", function(){ //Tabulator 초기 데이터 불러오기 이벤트
|
|
if( NCR_NO ){
|
|
// _this.getNcr(NCR_NO);
|
|
}
|
|
});
|
|
|
|
document.querySelector("form[name=frmNcr]").addEventListener("submit", _this.putNcr);
|
|
|
|
['click','keypress'].forEach(evt => document.querySelector("#MNG_NO").addEventListener(evt, ()=>{
|
|
Tb_so_pop.modalSo();
|
|
}));
|
|
['click','keypress'].forEach(evt => document.querySelector("#JUDG_EMP_NM").addEventListener(evt, ()=>{
|
|
popEmployeeList('#JUDG_EMP_NO', '#JUDG_EMP_NM', 'BA01');
|
|
}));
|
|
|
|
jQuery("#FOUND_DT").datetimepicker({
|
|
allowTimes: [...Array(24*60).keys()].map(idx=>Math.floor(idx/60).toString().padStart(2,'0')+':'+(idx%60).toString().padStart(2,'0')),
|
|
format: "Y-m-d H:i",
|
|
defaultTime: luxon.DateTime.now().toFormat("HH:")+Math.floor(luxon.DateTime.now().toFormat("mm")/10).toString().padEnd(2,'0'),
|
|
}).addClass("dtime_picker");
|
|
|
|
//멀티파일 업로더
|
|
if (!_this.uploader) {
|
|
_this.uploader = FilePond.create(document.getElementById("attfilepond"), {
|
|
...filepond_ko_KR,
|
|
name: 'upfile',
|
|
allowMultiple: true,
|
|
maxParallelUploads: 3,
|
|
allowProcess: false,
|
|
instantUpload: true,
|
|
allowFileTypeValidation: true,
|
|
acceptedFileTypes: ['image/*'],
|
|
server: {
|
|
url: _this.ajax_url + "?mode=putTempFile",
|
|
process: {
|
|
onload: function (data) {
|
|
data = JSON.parse(data);
|
|
let fdata = data.data;
|
|
let file_name = fdata['file_name'];
|
|
let tmp_name = fdata['tmp_name'];
|
|
let file_size = fdata['file_size'];
|
|
let file_type = fdata['file_type'];
|
|
|
|
_this.addFileDiv( {gubun:'temp', tmp_name, file_name, file_size, file_type} );
|
|
|
|
//let file_url = _this.download_url+"?gubun="+rowData['gubun']+"&nid="+rowData['nid']+"&sid="+rowData['sid']+"&file_id="+rowData['file_id']+"&tmp_name="+rowData['tmp_name']+"&name="+rowData['file_name']+"&size="+rowData['file_size'];
|
|
},
|
|
},
|
|
},
|
|
allowFileSizeValidation: true,
|
|
maxFileSize: 100000000,
|
|
credits: {},
|
|
});
|
|
|
|
document.querySelector("#attfilepond").addEventListener('FilePond:addfilestart', (e) => {
|
|
document.querySelector("#pic_block .ploading").classList.remove("d-hide");
|
|
document.querySelector("form[name=frmNcr] .btn_prim").disabled = true;
|
|
});
|
|
document.querySelector("#attfilepond").addEventListener('FilePond:processfiles', (e) => {
|
|
document.querySelector("#pic_block .ploading").classList.add("d-hide");
|
|
document.querySelector("form[name=frmNcr] .btn_prim").disabled = false;
|
|
});
|
|
}
|
|
|
|
['click','keypress'].forEach(evt => document.querySelector("#btnAddPic").addEventListener(evt,()=>{_this.uploadFile()}));
|
|
['click','keypress'].forEach(evt => document.querySelector("#btnDelPic").addEventListener(evt,()=>{_this.delFile()}));
|
|
|
|
['click','keypress'].forEach( evt => document.querySelector("#btnAddNcrAction").addEventListener(evt, ()=>{
|
|
_this.tblList.addRow({'_STATUS_':'I', 'USE_FLG':'Y'});
|
|
} ) );
|
|
['click','keypress'].forEach( evt => document.querySelector("#btnDelNcrAction").addEventListener(evt, ()=>{
|
|
_this.tblList.getSelectedRows().forEach( row => {
|
|
row.update({_STATUS_:row.getData()._STATUS_||'U',USE_FLG:'N'});
|
|
row.getElement().classList.add('del-row');
|
|
} );
|
|
} ) );
|
|
|
|
|
|
_this.getNcr();
|
|
};
|
|
}
|
|
|
|
class Tb_class_so_pop {
|
|
constructor(){
|
|
let _this = this;
|
|
_this.ajax_url = "./ncr.ajax.php";
|
|
_this.tblList = "";
|
|
_this.putSoModal = "";
|
|
}
|
|
|
|
// 설비 등록 팝업
|
|
modalSo (){
|
|
let _this = this;
|
|
|
|
vnLoad( '', './so.pop.inc.php', '', function(loadHtml){
|
|
_this.putSoModal = kuls_modal(loadHtml);
|
|
document.querySelector(".btn_close").addEventListener("click", ()=>_this.putSoModal.delete());
|
|
|
|
_this.init();
|
|
});
|
|
};
|
|
|
|
getSoList (sdata) {
|
|
let _this = this;
|
|
|
|
ajax_json({
|
|
url: _this.ajax_url,
|
|
type: "POST",
|
|
data: {
|
|
mode: 'getSoList',
|
|
MNG_NO: sdata?.MNG_NO||'',
|
|
BP_NM: sdata?.BP_NM||'',
|
|
OFLD: sdata?.OFLD||'',
|
|
OASC: sdata?.OASC||'',
|
|
LINE_NUM: sdata?.LINE_NUM||'',
|
|
NOW_PAGE: sdata?.NOW_PAGE||'',
|
|
},
|
|
success: function (data) {
|
|
if( data.code ){
|
|
_this.tblList.setData(data.data);
|
|
|
|
//page
|
|
putPagiNation({
|
|
...sdata,
|
|
TARGET: ".tabulator-footer-contents",
|
|
PREB_PAGE: data?.data[0]?.PREB_PAGE,
|
|
NEXB_PAGE: data?.data[0]?.NEXB_PAGE,
|
|
LAST_PAGE: data?.data[0]?.LAST_PAGE,
|
|
PAGE_LISTS: data?.data[0]?.PAGE_LISTS?.split('|'),
|
|
callback: (conf)=>{
|
|
_this.getMainList({
|
|
MNG_NO: conf?.MNG_NO||'',
|
|
BP_NM: conf?.BP_NM||'',
|
|
OFLD: conf?.OFLD||'',
|
|
OASC: conf?.OASC||'',
|
|
LINE_NUM: conf?.LINE_NUM||'',
|
|
NOW_PAGE: conf?.NOW_PAGE||'',
|
|
});
|
|
}
|
|
});
|
|
}else{
|
|
kuls_alert(data.mesg);
|
|
}
|
|
},
|
|
error: function (request, status, error) {
|
|
kuls_alert(error.message);
|
|
},
|
|
complete: function(){
|
|
}
|
|
});
|
|
return false;
|
|
};
|
|
|
|
shGFormatter ( code ) {
|
|
let _this = this;
|
|
return varsSHAPE_GRP[code]?.Code_Exp;
|
|
};
|
|
|
|
shFormatter ( cell ) {
|
|
let _this = this;
|
|
return varsSHAPE_TYPE[cell.getValue()];
|
|
};
|
|
|
|
init() {
|
|
let _this = this;
|
|
|
|
const fields = [
|
|
{ field: "LIST_NUM", title: "No", width: "6%", minWidth: 50, headerSort: false, hozAlign:'center', },
|
|
{ field: "MNG_NO", title: "수주번호", width: "25%", minWidth: 200, },
|
|
{ field: "SHAPE_TYPE", title: "형상", width: "20%", minWidth: 50, formatter: _this.shFormatter },
|
|
{ field: "ORDR_BP_NM", title: "거래처", width: "15%", minWidth: 100, },
|
|
{ field: "SO_QTY", title: "수량", width: "10%", minWidth: 40, formatter: "money", formatterParams:{precision:0}},
|
|
{ field: "REQ_DLVY_DT", title: "납기요청일", width: "14%", minWidth: 100, },
|
|
];
|
|
|
|
_this.tblList = new Tabulator("#pop_so_list", {
|
|
layout:"fitColumns",
|
|
data: [], //기본 데이터
|
|
height: "100%",
|
|
columns: fields, //컬럼 설정
|
|
columnDefaults: { //컬럼 공통 규칙
|
|
vertAlign:"middle",
|
|
hozAlign: "center",
|
|
resizable: "header",//Resize 는 헤더에서만 가능
|
|
headerHozAlign: "center", //헤더 정렬
|
|
headerSortTristate:true, //정렬 => 정/역/초기화
|
|
},
|
|
footerElement:'<ul class="pagination justify-content-center align-items-center mb-1"><li><a class="pn_link npage btn btn-light"><span class="f_page">1</span></a></li></ul>',
|
|
headerSortElement: "<i class='bi'></i>", //정렬 아이콘
|
|
});
|
|
|
|
const setPopPartnerData = function(e,tgt){ //Row 더블클릭 실행
|
|
let row = tgt._row;
|
|
|
|
let spec = [ parseInt(row.data['OUT_DIA'])||'', parseInt(row.data['IN_DIA'])||'', parseInt(row.data['THICK'])||'', parseInt(row.data['WIDTH'])||'', parseInt(row.data['LENGTH'])||'' ].filter(v=>v);
|
|
|
|
if( document.querySelector("form[name=frmNcr] #MNG_NO") ) document.querySelector("form[name=frmNcr] #MNG_NO").value = row.data['MNG_NO'];
|
|
if( document.querySelector("form[name=frmNcr] #DLVY_BP_NM") ) document.querySelector("form[name=frmNcr] #DLVY_BP_NM").value = row.data['ORDR_BP_NM'];
|
|
if( document.querySelector("form[name=frmNcr] #ITEM_CD") ) document.querySelector("form[name=frmNcr] #ITEM_CD").value = _this.shGFormatter(row.data['ITEM_CD']);
|
|
if( document.querySelector("form[name=frmNcr] #ITEM_SPEC") ) document.querySelector("form[name=frmNcr] #ITEM_SPEC").value = spec.join(' x ');
|
|
if( document.querySelector("form[name=frmNcr] #MATR_TYPE") ) document.querySelector("form[name=frmNcr] #MATR_TYPE").value = row.data['MATR_TYPE'];
|
|
if( document.querySelector("form[name=frmNcr] #ASS_DRAW") ) document.querySelector("form[name=frmNcr] #ASS_DRAW").value = row.data['ASS_DRAW'];
|
|
if( document.querySelector("form[name=frmNcr] #MNG_SN_ID") ){
|
|
let tgt = document.querySelector("form[name=frmNcr] #MNG_SN_ID");
|
|
tgt.options.length = 0;
|
|
for( let a=1 ; a<=row.data['SO_QTY'] ; a++ ){
|
|
let opt = document.createElement("option");
|
|
opt.text = '#'+a;
|
|
opt.value = '#'+a;
|
|
tgt.append(opt);
|
|
}
|
|
}
|
|
|
|
_this.putSoModal.delete();
|
|
};
|
|
|
|
['click','keypress'].forEach(evt => document.querySelector("#awn-popup-wrapper #btnSearch").addEventListener(evt,function() { //검색어 입력 이벤트
|
|
_this.getSoList({
|
|
MNG_NO: document.querySelector("#S_MNG_NO").value,
|
|
BP_NM: document.querySelector("#S_BP_NM").value,
|
|
});
|
|
}));
|
|
|
|
document.querySelectorAll(".awn-popup-search input").forEach(tgt => {
|
|
tgt.addEventListener("keypress", (e)=>{
|
|
if( e.key == "Enter" ){
|
|
document.querySelector(".awn-popup-search button.btn_prim").dispatchEvent(new Event("click"));
|
|
}
|
|
});
|
|
});
|
|
|
|
_this.tblList.on("rowDblClick", setPopPartnerData); //Row 더블클릭 이벤트
|
|
_this.tblList.on("tableBuilt", function(){ //초기 데이터 불러오기 이벤트
|
|
_this.getSoList();
|
|
});
|
|
};
|
|
}
|
|
|
|
const Tb_ncr = new Tb_class_ncr();
|
|
const Tb_ncr_pop = new Tb_class_ncr_pop();
|
|
const Tb_so_pop = new Tb_class_so_pop();
|
|
const Tb_draw = new drawManager();
|
|
Tb_ncr.init(); |