forked from HANYANG/HANYANG_MES
1002 lines
29 KiB
JavaScript
1002 lines
29 KiB
JavaScript
/*
|
|
* @Overview 설비 관리 대장
|
|
*/
|
|
let file = "";
|
|
class Tb_main_class {
|
|
constructor(container) {
|
|
let _this = this;
|
|
_this.ajaxUrl = "./facility.ajax.php";
|
|
_this.clickData = "";
|
|
_this.file = "";
|
|
this.container = document.querySelector(container);
|
|
this.table = this.container.querySelector(".hy-table");
|
|
// this.upBtn = this.container.querySelector(".up-btn") || "";
|
|
// this.downBtn = this.container.querySelector(".down-btn") || "";
|
|
this.addBtn = this.container.querySelector(".add-btn");
|
|
this.removeBtn = this.container.querySelector(".remove-btn");
|
|
// _this.FACLT_CD_Vaule =document.querySelector("form #FACLT_CD").value;
|
|
_this.tbList = "";
|
|
}
|
|
|
|
// tableBuild 되었을때 getManList
|
|
getMainList() {
|
|
let _this = this;
|
|
let talert = window.setTimeout(() => {
|
|
this.tbList.alert("Loading ...");
|
|
}, 1000);
|
|
ajax_json({
|
|
url: _this.ajaxUrl,
|
|
data: { mode: "getFacilityList" },
|
|
success: (data) => {
|
|
this.tbList.setData(data.data);
|
|
},
|
|
error: (req, status, err) => {
|
|
kuls_alert(err.message);
|
|
},
|
|
complete: () => {
|
|
window.clearTimeout(talert);
|
|
this.tbList.clearAlert();
|
|
// this.setFilter();
|
|
},
|
|
});
|
|
}
|
|
putFacility() {
|
|
let formData = new FormData(form);
|
|
let _this = this;
|
|
|
|
let postdata = "";
|
|
let selectData = _this.tbList.getSelectedData(); // 선택 데이터
|
|
let statFilterData = _this.tbList.getData().filter((row) => row._STATUS_); //Status가 존재하는 데이터
|
|
|
|
// 선택 데이터가 존재하고 row.status가 존재하지 않는 데이터 =>
|
|
if (selectData.length === 1 && statFilterData.length === 0) {
|
|
postdata = {
|
|
mode: "setFacility",
|
|
reqdata: JSON.stringify([this.editRow()]), //오른쪽 form 데이터 통해 생성된 가상의 ROW
|
|
file: file,
|
|
};
|
|
} else {
|
|
postdata = {
|
|
mode: "putFacility",
|
|
reqdata: JSON.stringify(statFilterData),
|
|
file: file,
|
|
};
|
|
}
|
|
|
|
ajax_form({
|
|
url: _this.ajaxUrl,
|
|
type: "POST",
|
|
data: JSON.stringify(postdata),
|
|
success: function (data) {
|
|
if (data.code !== "0") {
|
|
kuls_success("적용 되었습니다.");
|
|
_this.getMainList();
|
|
} else {
|
|
kuls_alert(data.msg);
|
|
}
|
|
},
|
|
error: function (request, status, error) {
|
|
kuls_alert(error.message);
|
|
},
|
|
complete: function () {
|
|
_this.getMainList();
|
|
// _this.formInit();
|
|
},
|
|
});
|
|
}
|
|
|
|
// formInit = () => {
|
|
// var form = document.getElementById("form");
|
|
// var inputs = form.getElementsByTagName("input");
|
|
// for (var i = 0; i < inputs.length; i++) {
|
|
// inputs[i].value = "";
|
|
// }
|
|
// document.getElementById("FACLT_CD").readOnly = false;
|
|
// };
|
|
|
|
setFilter() {}
|
|
|
|
/*
|
|
* @Overview 테이블 행 추가 함수
|
|
* @Parameter 없음
|
|
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
|
*/
|
|
addRow() {
|
|
var form = document.getElementById("form");
|
|
let temdata = new FormData(form);
|
|
let newdata = Object.fromEntries(temdata); //form데이터
|
|
newdata["_STATUS_"] = "I";
|
|
this.tbList.addRow(newdata);
|
|
}
|
|
/*
|
|
* @Overview 팝업 오픈
|
|
* @Parameter 설비 추가 및 수정
|
|
*/
|
|
modalPartner(rowData){
|
|
let _this = this;
|
|
|
|
vnLoad("", "./facility_pop.inc.php", "", function (loadHtml) {
|
|
_this.putPartnerModal = kuls_modal(loadHtml);
|
|
// document.querySelector(".btn_close").addEventListener("click", ()=>_this.putpartnerModal.delete());
|
|
|
|
Tb_repair.init(rowData);
|
|
});
|
|
};
|
|
|
|
editRow() {
|
|
var form = document.getElementById("form");
|
|
let temdata = new FormData(form);
|
|
let newdata = Object.fromEntries(temdata); //form데이터
|
|
console.log(newdata);
|
|
newdata["_STATUS_"] = "U";
|
|
return newdata;
|
|
}
|
|
/*
|
|
* @Overview 테이블 행 삭제 함수
|
|
* @Parameter 없음
|
|
* @function 선택된 모든 행 삭제
|
|
*/
|
|
removeRow() {
|
|
const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
|
|
// 선택된 각 행 삭제
|
|
selectedRows.forEach((row) => {
|
|
// STAUS D로 바꾸기
|
|
row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
|
|
|
|
const rowElement = row.getElement();
|
|
rowElement.classList.add("remove-row");
|
|
});
|
|
}
|
|
//거래처등록 사진 업로드
|
|
putTempFile(file){
|
|
let _this = this;
|
|
console.log(file);
|
|
|
|
let formData = new FormData();
|
|
formData.append('upfile', file);
|
|
formData.append('mode', "putTempFile");
|
|
|
|
jQuery.ajax({
|
|
url: _this.ajaxUrl,
|
|
type: 'POST',
|
|
data: formData,
|
|
contentType: false,
|
|
processData: false,
|
|
success: (data)=>{
|
|
if(data.code !== "0") {
|
|
kuls_success("적용 되었습니다.");
|
|
|
|
let fdata = JSON.parse(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.tbList.addRow({
|
|
_STATUS_:'I',
|
|
// nid:_this.parData['SO_NO'],
|
|
// sid:_this.parData['SO_SEQ'],
|
|
FILE_NAME,
|
|
TMP_NAME,
|
|
FILE_SIZE,
|
|
FILE_TYPE,
|
|
gubun:'temp',
|
|
});
|
|
console.log(_this.tbList.getData());
|
|
}else{
|
|
// this.tbList.getRows().forEach(row =>{
|
|
// if(data.data.includes(row.getData()['BIZ_AREA_CD'])){
|
|
// row.updata({_STATUS_:"U"});
|
|
// }
|
|
// });
|
|
kuls_alert(data.msg);
|
|
}
|
|
},
|
|
error: (req, stat, err) => {
|
|
kuls_alert(err.message);
|
|
},
|
|
});
|
|
return true;
|
|
|
|
|
|
}
|
|
putFile(){
|
|
let _this = this;
|
|
console.log("testFile");
|
|
if(this.tbList.getData().filter(row=> row._STATUS_).length == 0){
|
|
this.getMainList();
|
|
return false;
|
|
}
|
|
// const curdata = this.tbList.getData();
|
|
// // BIZ_AREA_CD 사번
|
|
// const dubbleDataCheck = curdata.map( data => data.DRAW_NO && data.DRAW_VER).filter(Boolean);
|
|
// const noDubbleData = new Set(dubbleDataCheck);
|
|
// if(noDubbleData.size !== dubbleDataCheck.length){
|
|
// kuls_alert("ㄴ");
|
|
// return false;
|
|
// };
|
|
|
|
|
|
|
|
let rowData = this.tbList.getData().filter(row => row._STATUS_)
|
|
// _STATUS_ 있는 데이터만 들고와서 PUT하기
|
|
const postData = {
|
|
'mode':'putImage',
|
|
'reqdata': JSON.stringify(rowData),
|
|
|
|
};
|
|
|
|
ajax_json({
|
|
url: _this.ajaxUrl,
|
|
data:postData,
|
|
success: (data)=>{
|
|
if(data.code !== "0") {
|
|
kuls_success("적용 되었습니다.");
|
|
_this.getMainList();
|
|
}else{
|
|
// this.tbList.getRows().forEach(row =>{
|
|
// if(data.data.includes(row.getData()['BIZ_AREA_CD'])){
|
|
// row.updata({_STATUS_:"U"});
|
|
// }
|
|
// });
|
|
kuls_alert(data.msg);
|
|
}
|
|
},
|
|
error: (req, stat, err) => {
|
|
kuls_alert(err.message);
|
|
},
|
|
});
|
|
return true;
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 순서 변경 함수
|
|
* @Parameter 방향
|
|
* @function 선택된 모든 행 순서 변경
|
|
*/
|
|
upDownRow(dir) {}
|
|
|
|
// 클릭 이벤트
|
|
rowClick(e, tgt) {
|
|
let _this = this;
|
|
if (tgt.isSelected()) {
|
|
tgt.select();
|
|
|
|
// 삭제가 가능하도록 ROW SELECT
|
|
let rowData = tgt._row.data;
|
|
//row 클릭 시 rowData 설비에 입력 현재 MAPPING 하지 않은 상태
|
|
let {
|
|
EDIT_USER_ID,
|
|
EDIT_TM,
|
|
FACLT_SPEC,
|
|
INTNL_USE_DEPT_CD,
|
|
INTNL_USE_DEPT_NM,
|
|
MAJR_EMP_NM,
|
|
MAKER_NM,
|
|
MAKE_TM,
|
|
MAKE_USER_ID,
|
|
MINR_EMP_NM,
|
|
PURPOS_USAGE,
|
|
PUR_BP_NM,
|
|
PUR_DT,
|
|
PUR_PRSN_NM,
|
|
PUR_REPRE_NM,
|
|
PUR_TEL_NO,
|
|
MANUL_FLG,
|
|
USE_FLG,
|
|
WRK_TEAM,
|
|
...otherData
|
|
} = rowData;
|
|
// for (let temp in otherData) {
|
|
// if (document.getElementById(`${temp}`).value !== null) {
|
|
// document.getElementById(`${temp}`).value = rowData[temp] ?? "";
|
|
// }
|
|
// }
|
|
// document.getElementById("FACLT_CD").readOnly = true;
|
|
|
|
// Tb_process_info.getMainList();
|
|
} else {
|
|
tgt.deselect();
|
|
// _this.formInit();
|
|
}
|
|
|
|
//추후 수정
|
|
// const output = document.querySelector('.img-box');
|
|
// output.innerHTML = `
|
|
// <img src=" http://hypt.kuls.co.kr/home_dir/upload_files/faclt/${rowData.FACLT_CD}.png" alt="이미지 파일이 존재하지 않습니다" style="max-width: 100%; height: auto;">
|
|
// <div class="img-cover">
|
|
// <input type="submit" value="삭제" class="btn-danger" onClick="removeImage()" />
|
|
// </div>
|
|
// `
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 더블 클릭시에 팝업----------------------------마무리안함!!!!!!!!!!!
|
|
* @Parameter 이벤트, 타겟 행
|
|
*/
|
|
rowDblClick = (e, tgt) => {
|
|
// popClientEditor({
|
|
//
|
|
// },tgt)
|
|
let _this = this;
|
|
let row = tgt._row;
|
|
|
|
_this.modalPartner(row.data);
|
|
};
|
|
|
|
cellClick(e, tgt) {
|
|
// // 체크박스 클릭
|
|
// switch (tgt.getField()) {
|
|
// case "현장직 필드명":
|
|
// tgt.setValue(tgt.getValue() == "Y" ? null : "Y");
|
|
// break;
|
|
// case "외주 필드명":
|
|
// tgt.setValue(tgt.getValue() == "Y" ? null : "Y");
|
|
// break;
|
|
// case "외주처 필드명":
|
|
// // 팝업 열기(common이나 다른 파일에 팝업 함수 정의하고, html(popup.inc.php)만들기?)
|
|
// break;
|
|
// }
|
|
}
|
|
|
|
// 셀 수정
|
|
cellEdited(cell) {
|
|
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
|
|
}
|
|
putData() {
|
|
// 기본키 중복 확인 및 방지
|
|
// _STATUS_ 있는 데이터만 들고와서 PUT하기
|
|
}
|
|
previewImage = (event) => {
|
|
for (var image of event.target.files) {
|
|
var reader = new FileReader();
|
|
|
|
reader.onload = function (event) {
|
|
var img = document.createElement("img");
|
|
img.setAttribute("src", event.target.result);
|
|
document.querySelector("div#image_container").appendChild(img);
|
|
};
|
|
|
|
reader.readAsDataURL(image);
|
|
}
|
|
};
|
|
/*
|
|
* @Overview 최초 실행 함수
|
|
* @Parameter 없음
|
|
*/
|
|
init() {
|
|
let _this = this;
|
|
// field 정의
|
|
const fields = [
|
|
{ formatter: "rownum", title: "NO", width: 50 },
|
|
{ field: "FACLT_CD", title: "설비코드", width: 100 },
|
|
{ field: "FACLT_NM", title: "설비명", width: 150 }, //formatter : 숫자 EA
|
|
{ field: "WRK_TEAM", title: "소속", width: 100 },
|
|
];
|
|
const commonFieldData = {
|
|
headerSort: false,
|
|
vertAlign: "middle",
|
|
hozAlign: "center",
|
|
resizable: "header", //Resize 는 헤더에서만 가능
|
|
headerHozAlign: "center", //헤더 정렬
|
|
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
|
|
};
|
|
|
|
_this.tbList = new Tabulator(this.table, {
|
|
layout: "fitColumns",
|
|
selectableRows: 1,
|
|
|
|
data: [], //기본 데이터
|
|
columns: fields, //컬럼 설정
|
|
columnDefaults: commonFieldData,
|
|
});
|
|
|
|
// 데이터 불러오기
|
|
this.tbList.on("tableBuilt", () => {
|
|
this.getMainList();
|
|
});
|
|
// row 클릭 시에
|
|
this.tbList.on("rowClick", (e, tgt) => {
|
|
this.rowClick && this.rowClick(e, tgt);
|
|
});
|
|
// row 클릭 시에
|
|
this.tbList.on("rowDblClick", (e, tgt) => {
|
|
this.rowDblClick && this.rowDblClick(e, tgt);
|
|
});
|
|
// cell 클릭 시에
|
|
this.tbList.on("cellClick", (e, tgt) => {
|
|
this.cellClick && this.cellClick(e, tgt);
|
|
});
|
|
// cell 수정 시에
|
|
this.tbList.on("cellEdited", (cell) => {
|
|
this.cellEdited && this.cellEdited(cell);
|
|
});
|
|
function tabWork(elementId, className) {
|
|
var element = document.getElementById(elementId);
|
|
|
|
if (!element || !element.classList) {
|
|
return false;
|
|
}
|
|
return element.classList.contains(className);
|
|
}
|
|
|
|
// 추가
|
|
["click", "keypress"].forEach((evt) => {
|
|
this.addBtn.addEventListener(evt, () => {
|
|
this.addRow && this.addRow();
|
|
});
|
|
});
|
|
// 삭제
|
|
["click", "keypress"].forEach((evt) => {
|
|
this.removeBtn.addEventListener(evt, () => {
|
|
// 삭제 함수
|
|
this.removeRow && this.removeRow();
|
|
});
|
|
});
|
|
// 조회
|
|
["click", "keypress"].forEach((evt) => {
|
|
const filterBtn = document.querySelector("#filter_btn");
|
|
filterBtn.addEventListener(evt, () => {
|
|
// setFilter 또는 setData
|
|
});
|
|
});
|
|
// 저장
|
|
["click", "keypress"].forEach((evt) => {
|
|
let _this = this;
|
|
const putBtn = document.querySelector("#put_item");
|
|
putBtn.addEventListener(evt, () => {
|
|
// let base64String = document.getElementsByClassName("img-box")[0].outerHTML;
|
|
// let firstSlice = base64String.indexOf("base64,")+1;
|
|
// `=" alt`
|
|
// console.log(base64String.substring(sliceLocation,));
|
|
let base64String =
|
|
document.getElementsByClassName("img-box")[0].outerHTML;
|
|
let firstSlice = base64String.indexOf("base64,") + 7;
|
|
let lastSlice = base64String.indexOf('" alt=');
|
|
|
|
file = base64String.substring(firstSlice, lastSlice);
|
|
|
|
//탭 선택 따라 구분 동작
|
|
if (tabWork("first-tab", "on")) {
|
|
_this.putFacility && _this.putFacility();
|
|
} else {
|
|
Tb_process_info.putProcess && Tb_process_info.putProcess();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
class Tb_sub_class_2 {
|
|
constructor(container) {
|
|
let _this = this;
|
|
this.ajaxUrl = "./facility.ajax.php";
|
|
this.container = document.querySelector(container);
|
|
this.table = this.container.querySelector(".hy-table");
|
|
// this.upBtn = this.container.querySelector(".up-btn") || "";
|
|
// this.downBtn = this.container.querySelector(".down-btn") || "";
|
|
this.addBtn = this.container.querySelector(".add-btn");
|
|
this.removeBtn = this.container.querySelector(".remove-btn");
|
|
_this.tbList = "";
|
|
}
|
|
|
|
// tableBuild 되었을때 getManList
|
|
getMainList() {
|
|
const selectData = Tb_facility.tbList.getSelectedData()[0]?.FACLT_CD;
|
|
// console.log(Tb_facility.tbList.getSelectedData()[0]);
|
|
//FACLT_CD : Tb_facility.selectRowgetSelectedData()[0].FACLT_CD
|
|
let _this = this;
|
|
let talert = window.setTimeout(() => {
|
|
this.tbList.alert("Loading ...");
|
|
}, 1000);
|
|
ajax_json({
|
|
url: this.ajaxUrl,
|
|
data: { mode: "getprocess", FACLT_CD: selectData },
|
|
success: (data) => {
|
|
_this.tbList.setData(data.data);
|
|
},
|
|
error: (req, status, err) => {
|
|
kuls_alert(err.message);
|
|
},
|
|
complete: () => {
|
|
window.clearTimeout(talert);
|
|
this.tbList.clearAlert();
|
|
// this.setFilter();
|
|
},
|
|
});
|
|
}
|
|
putProcess() {
|
|
let formData = new FormData(form);
|
|
let _this = this;
|
|
|
|
let postdata = {
|
|
mode: "putProcess",
|
|
reqdata: JSON.stringify(
|
|
_this.tbList.getData().filter((row) => row._STATUS_)
|
|
),
|
|
};
|
|
|
|
ajax_form({
|
|
url: _this.ajaxUrl,
|
|
type: "POST",
|
|
data: JSON.stringify(postdata),
|
|
success: function (data) {
|
|
if (data.code) {
|
|
kuls_success("적용 되었습니다.");
|
|
//_this.getRepairInfo(formdata.get("FACLT_CD"));
|
|
// Tb_funcs.putFacilityModal.delete();
|
|
_this.getMainList();
|
|
} else {
|
|
kuls_alert(data.mesg);
|
|
}
|
|
},
|
|
error: function (request, status, error) {
|
|
console.log(request);
|
|
console.log(err);
|
|
kuls_alert(error.message);
|
|
},
|
|
complete: function () {},
|
|
});
|
|
}
|
|
setFilter() {}
|
|
|
|
/*
|
|
* @Overview 테이블 행 추가 함수
|
|
* @Parameter 없음
|
|
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
|
*/
|
|
addRow() {
|
|
this.tbList.addRow({
|
|
FACLT_CD: Tb_facility.tbList.getSelectedData()[0].FACLT_CD,
|
|
_STATUS_: "I",
|
|
});
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 삭제 함수
|
|
* @Parameter 없음
|
|
* @function 선택된 모든 행 삭제
|
|
*/
|
|
removeRow() {
|
|
const selectedRows = this.tbList.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 테이블 행 순서 변경 함수
|
|
* @Parameter 방향
|
|
* @function 선택된 모든 행 순서 변경
|
|
*/
|
|
upDownRow(dir) {}
|
|
|
|
// 클릭 이벤트
|
|
rowClick(e, tgt) {
|
|
// 삭제가 가능하도록 ROW SELECT
|
|
// staus D로 바꾸기?
|
|
}
|
|
cellClick(e, tgt) {
|
|
// // 체크박스 클릭
|
|
// switch (tgt.getField()) {
|
|
// case "현장직 필드명":
|
|
// tgt.setValue(tgt.getValue() == "Y" ? null : "Y");
|
|
// break;
|
|
// case "외주 필드명":
|
|
// tgt.setValue(tgt.getValue() == "Y" ? null : "Y");
|
|
// break;
|
|
// case "외주처 필드명":
|
|
// // 팝업 열기(common이나 다른 파일에 팝업 함수 정의하고, html(popup.inc.php)만들기?)
|
|
// break;
|
|
// }
|
|
}
|
|
|
|
// 셀 수정
|
|
cellEdited(cell) {
|
|
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
|
|
}
|
|
putData() {
|
|
// 기본키 중복 확인 및 방지
|
|
// _STATUS_ 있는 데이터만 들고와서 PUT하기
|
|
}
|
|
|
|
/*
|
|
* @Overview 최초 실행 함수
|
|
* @Parameter 없음
|
|
*/
|
|
init() {
|
|
// field 정의
|
|
const fields = [
|
|
{ formatter: "rownum", title: "NO", width: 50 },
|
|
{
|
|
field: "OP_CD",
|
|
title: "공정코드",
|
|
width: 200,
|
|
editor: "input",
|
|
editable: (cell) => {
|
|
let val = cell.getData();
|
|
return val._STATUS_ === "I";
|
|
},
|
|
},
|
|
{ field: "OP_NM", title: "공정명", width: 200, editor: "input" },
|
|
{ field: "USE_FLG", title: "사용", width: 50, editor: "input" },
|
|
{ field: "REMK", title: "비고", width: 300, editor: "input" },
|
|
];
|
|
const commonFieldData = {
|
|
headerSort: false,
|
|
vertAlign: "middle",
|
|
hozAlign: "center",
|
|
resizable: "header", //Resize 는 헤더에서만 가능
|
|
headerHozAlign: "center", //헤더 정렬
|
|
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
|
|
};
|
|
|
|
this.tbList = new Tabulator(this.table, {
|
|
layout: "fitColumns",
|
|
selectableRows: true,
|
|
data: [], //기본 데이터
|
|
columns: fields, //컬럼 설정
|
|
columnDefaults: commonFieldData,
|
|
});
|
|
|
|
// 데이터 불러오기
|
|
this.tbList.on("tableBuilt", () => {
|
|
// this.getMainList();
|
|
});
|
|
// row 클릭 시에
|
|
this.tbList.on("rowClick", (e, tgt) => {
|
|
this.rowClick && this.rowClick(e, tgt);
|
|
});
|
|
// cell 클릭 시에
|
|
this.tbList.on("cellClick", (e, tgt) => {
|
|
this.cellClick && this.cellClick(e, tgt);
|
|
});
|
|
// cell 수정 시에
|
|
this.tbList.on("cellEdited", (cell) => {
|
|
this.cellEdited && this.cellEdited(cell);
|
|
});
|
|
|
|
// 추가
|
|
["click", "keypress"].forEach((evt) => {
|
|
this.addBtn.addEventListener(evt, () => {
|
|
// Tb_facility.addRow();
|
|
this.addRow && this.addRow();
|
|
});
|
|
});
|
|
// 삭제
|
|
["click", "keypress"].forEach((evt) => {
|
|
this.removeBtn.addEventListener(evt, () => {
|
|
// 삭제 함수
|
|
this.removeRow && this.removeRow();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
/*
|
|
* @Overview 팝업 클래스
|
|
* @Parameter 없음
|
|
*/
|
|
class facility_Pop_class{
|
|
constructor() {
|
|
let _this = this;
|
|
_this.ajaxUrl = "./partner.ajax.php";
|
|
_this.putOrSet = "";
|
|
_this.tblList = "";
|
|
}
|
|
|
|
/*
|
|
* @Overview 팝업 input 데이터 바인딩
|
|
* @Parameter 테이블에서 선택한 데이터 정보
|
|
*/
|
|
getPartnerInfo = (rowData)=>{
|
|
let _this = this;
|
|
let BP_CD = rowData?.BP_CD;
|
|
let PUR_FLG = rowData?.PUR_FLG;
|
|
let SAL_FLG = rowData?.SAL_FLG;
|
|
let USE_FLG = rowData?.USE_FLG;
|
|
// if(!rowData.BP_CD){
|
|
// BP_CD = rowData.BP_CD;
|
|
// }else {
|
|
// BP_CD ="";
|
|
// }
|
|
|
|
if(BP_CD) { //거래처 코드 있는 경우 => 수정 시
|
|
// _this.putOrSet = Tb_Partner.setPartner;
|
|
document.getElementById("BP_CD").readOnly = true;
|
|
_this.putOrSet = "set";
|
|
}else if(!BP_CD){
|
|
document.getElementById("BP_CD").readOnly = false;
|
|
_this.putOrSet = "put";
|
|
return false;
|
|
}
|
|
|
|
let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력
|
|
ajax_json({
|
|
url: _this.ajaxUrl,
|
|
data: { mode: 'getBPInfo', BP_CD : BP_CD, PUR_FLAG:PUR_FLG ,SAL_FLAG: SAL_FLG, USE_FLG: USE_FLG },
|
|
success: function (data) {
|
|
console.log(data.data);
|
|
if (data.code) {
|
|
_this.tblList.setData(data.data.prsn); //팝업창 오픈 시 거래처 담당자
|
|
const {prsn, ...getData} = data.data; //거래처 담당자 제외
|
|
for(const dataName in getData){
|
|
if(dataName === "PUR_FLAG"||dataName ==="SAL_FLAG" ){
|
|
document.getElementById(`${dataName}`).checked = getData[dataName] == "Y" ? true :false ;
|
|
}else{
|
|
document.getElementById(`${dataName}`).value = getData[dataName]; //input 태그에 가져온 데이터 위치
|
|
|
|
}
|
|
// console.log(document.getElementById(`${dataName}`));
|
|
}
|
|
// console.log(document.getElementById(`BP_NM`).value);
|
|
|
|
|
|
}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;
|
|
}
|
|
/*
|
|
* @Overview 팝업 데이터 INSERT 함수
|
|
* @Parameter 없음/테이블 상 수정 또는 삭제되어 상태 변화된 ROW는 요청 후 PHP 상에서 가공 처리
|
|
*/
|
|
putPartnerInfo = (e)=>{
|
|
e.preventDefault();
|
|
|
|
let _this = this;
|
|
_this.formdata = form2Json(document.frmPartner);
|
|
// _this.formdata['putOrSet'] = _this.putOrSet;
|
|
let postdata = _this.tblList.getData().reduce( (nrow, mem, i) => {
|
|
mem._STATUS_ && nrow.push({...mem});
|
|
return nrow;
|
|
}, [] );
|
|
_this.formdata['PUR_FLAG'] = document.getElementById("PUR_FLG").checked?"Y":"N";
|
|
_this.formdata['SAL_FLAG'] = document.getElementById("SAL_FLG").checked?"Y":"N";
|
|
_this.formdata['PRSN'] = JSON.stringify(postdata);
|
|
_this.formdata['mode'] = "putBPInfo";
|
|
_this.formdata['putOrSet'] = _this.putOrSet;// 수정 : set, 등록 : put 백에서 처리
|
|
console.log(_this.formdata);
|
|
// console.log(postdata);
|
|
ajax_json({
|
|
|
|
url: _this.ajaxUrl,
|
|
// type: "POST",
|
|
data: _this.formdata,
|
|
success: function (data) {
|
|
if( data.code ){
|
|
kuls_success("적용 되었습니다.");
|
|
Tb_Partner.putPartnerModal.delete();
|
|
Tb_Partner.getMainList();
|
|
}else {
|
|
kuls_alert(data.msg);
|
|
}
|
|
},
|
|
error: function (request, status, error) {
|
|
kuls_alert(error.message);
|
|
},
|
|
complete: function(){
|
|
}
|
|
});
|
|
}
|
|
/*
|
|
* @Overview 삭제 버튼 클릭 후 상태 변화
|
|
* @Parameter 없음
|
|
*/
|
|
removeRow = ()=> {
|
|
let _this = this;
|
|
const selectedRows = _this.tblList.getSelectedRows(); // 선택된 모든 행 가져오기
|
|
|
|
// 선택된 각 행 삭제
|
|
selectedRows.forEach((row) => {
|
|
// STAUS D로 바꾸기
|
|
row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
|
|
const rowElement = row.getElement();
|
|
rowElement.classList.add("remove-row");
|
|
});
|
|
|
|
let postdata = _this.tblList.getData().reduce( (nrow, mem, i) => { // 상태 변화 있는 ROW에 대하여 변수 대입
|
|
mem._STATUS_ && nrow.push({...mem});
|
|
return nrow;
|
|
}, [] );
|
|
|
|
_this.removeData = postdata;
|
|
}
|
|
/*
|
|
* @Overview 선택한 ROW의 정보 또는 상태 변화에 활용하는 함수
|
|
* @Parameter 클릭한 row 데이터
|
|
*/
|
|
rowClick = (e, tgt)=> {
|
|
if (tgt.isSelected()) {
|
|
tgt.deselect();
|
|
} else {
|
|
let _this = this;
|
|
tgt.select();
|
|
}
|
|
}
|
|
/*
|
|
* @Overview 선택한 CELL의 정보 또는 상태 변화에 활용하는 함수
|
|
* @Parameter 클릭한 CELL 데이터
|
|
*/
|
|
cellClick = (e, tgt)=> {
|
|
var editor = tgt.getColumn().getDefinition().editor; //에디터 속성을 가진 컬럼 변수(컬럼에 editor : input 을 부여하면 수정 가능해진다)
|
|
|
|
switch (tgt.getField()) {
|
|
case "check":
|
|
tgt.setValue(tgt.getValue() == "Y" ? "" : "Y");
|
|
this.clearRemove(tgt.getRow())
|
|
break;
|
|
default:
|
|
if (!editor) {
|
|
this.rowClick && this.rowClick(e, tgt.getRow());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
init = (rowData) => {
|
|
let _this = this;
|
|
|
|
const fields = [
|
|
{ formatter:"rownum", title: "No", width: 50, headerSort: false, hozAlign:'center', },
|
|
{ field: "BP_PRSN_NM", title: "담당자명", width: 100, editor:"input", editable: (cell) => {
|
|
const val = cell.getData();
|
|
return val._STATUS_ === "I";
|
|
},},
|
|
{ field: "BP_PRSN_EMAIL", title: "이메일", width: 200, editor:"input", },
|
|
{ field: "BP_PRSN_TEL_NO", title: "연락처", width: 150,editor:"input", },
|
|
{ field: "BP_PRSN_CELL_NO", title: "휴대폰", width: 150, editor:"input",},
|
|
{ field: "BP_PRSN_FAX_NO", title: "FAX NO", width: 150, editor:"input",},
|
|
{ field: "REMK", title: "비고", width: 300,editor:"input", },
|
|
// { field: "", title: "메인", width: 50, formatter: tb_common_funtions.formatterCheckIcon2, formatterParams: {checkval:'Y'}},
|
|
];
|
|
|
|
_this.tblList = new Tabulator("#tbl_partner_member",{
|
|
layout: "fitColumns",
|
|
data: [], //기본 데이터
|
|
height: "100%",
|
|
columns: fields, //컬럼 설정
|
|
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 초기 데이터 불러오기 이벤트
|
|
|
|
_this.getPartnerInfo(rowData);
|
|
|
|
});
|
|
_this.tblList.on("cellClick", (e,tgt) => {
|
|
this.cellClick && this.cellClick(e,tgt);
|
|
|
|
});
|
|
/*
|
|
* @Overview 행 추가 이벤트
|
|
* @Parameter 없음
|
|
*/
|
|
["click", "keypress"].forEach((evt) => {
|
|
let _this = this;
|
|
const addBtn = document.querySelector("#awn-popup-wrapper .add-btn") || "";
|
|
addBtn.addEventListener(evt, () => {
|
|
|
|
|
|
_this.tblList.addRow({ _STATUS_:'I', USE_FLG:'Y'});
|
|
});
|
|
});
|
|
|
|
// 삭제
|
|
["click", "keypress"].forEach((evt) => {
|
|
let _this = this;
|
|
const removeBtn = document.querySelector("#awn-popup-wrapper .remove-btn") || "";
|
|
removeBtn.addEventListener(evt, () => {
|
|
// 삭제 함수
|
|
this.removeRow && this.removeRow();
|
|
});
|
|
});
|
|
/*
|
|
* @Overview 거래처 정보 저장
|
|
* @Parameter 없음
|
|
* @function FORM 태그로 SERVER 요청
|
|
*/
|
|
document.querySelector("form[name=frmPartner]").addEventListener("submit", Partner_Pop.putPartnerInfo);
|
|
|
|
};
|
|
}
|
|
|
|
const Tb_facility = new Tb_main_class("#main_table");
|
|
Tb_facility.init();
|
|
const Tb_process_info = new Tb_sub_class_2("#sub_table_2");
|
|
Tb_process_info.init();
|
|
const Tb_repair = new facility_Pop_class("#modal_table");
|
|
Tb_repair.init();
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
* @Overview form 이미지 등록/수정 및 미리 보기
|
|
* @Parameter event
|
|
*/
|
|
function previewImage(event) {
|
|
let _this = this;
|
|
|
|
const reader = new FileReader();
|
|
reader.onload = function () {
|
|
const output = document.querySelector(".img-box");
|
|
output.innerHTML = `
|
|
<img src="${reader.result}" alt="이미지 파일이 존재하지 않습니다" style="max-width: 100%; height: auto;">
|
|
<div class="img-cover">
|
|
<input type="submit" value="삭제" class="btn-danger" onClick="removeImage()" />
|
|
</div>
|
|
`; // 이미지 미리보기 설정
|
|
};
|
|
reader.readAsDataURL(event.target.files[0]);
|
|
|
|
// file = event.target.files[0];
|
|
Tb_facility.putTempFile();
|
|
// console.log(event.target.files[0]);
|
|
}
|
|
|
|
/*
|
|
* @Overview form 이미지 및 미리 보기 삭제
|
|
* @Parameter 없음
|
|
*/
|
|
function removeImage() {
|
|
// 입력된 파일 정보 지우기
|
|
// const inputBtn = document.querySelector("#file_input");
|
|
// inputBtn.value = "";
|
|
|
|
// 이미지 미리보기 제거
|
|
const output = document.querySelector(".img-box");
|
|
output.innerHTML = "";
|
|
}
|
|
|
|
|
|
uploadFile=()=> {
|
|
document.getElementById('file_input').click();
|
|
}
|
|
document.getElementById('file_input').addEventListener('change', function() {
|
|
// 파일 정보 가져오기
|
|
var file = this.files[0];
|
|
// Tb_pic.file = file;
|
|
Tb_facility.putTempFile(file);
|
|
|
|
|
|
});
|
|
|
|
function image(event) {
|
|
previewImage(event); // 이미지 미리보기
|
|
uploadFile(); // 파일 업로드
|
|
}
|
|
|