forked from HANYANG/HANYANG_MES
889 lines
25 KiB
JavaScript
889 lines
25 KiB
JavaScript
/*
|
|
* @Overview 설비 관리 대장
|
|
* @History 2024-04-08 / 박민희
|
|
*/
|
|
|
|
class Tb_main_class {
|
|
constructor(container) {
|
|
let _this = this;
|
|
_this.ajaxUrl = "./facility.ajax.php";
|
|
_this.clickData = "";
|
|
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);
|
|
|
|
_this.FACLT_CD =document.getElementById("FACLT_CD").value;
|
|
ajax_json({
|
|
url: _this.ajaxUrl,
|
|
data: { mode: "getFacilityList" ,FACLT_CD:_this.FACLT_CD},
|
|
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;
|
|
|
|
// const 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
|
|
// };
|
|
|
|
// }
|
|
|
|
// postdata = {
|
|
// mode: "putFacility",
|
|
// reqdata:JSON.stringify(statFilterData),
|
|
// file:file
|
|
// }
|
|
|
|
// ajax_form({
|
|
// url: _this.ajaxUrl,
|
|
// type: "POST",
|
|
// data: JSON.stringify(postdata),
|
|
// success: (data)=>{
|
|
// if( data.code !== '0'){
|
|
// kuls_success("적용 되었습니다.");
|
|
// this.getMainList();
|
|
// }else{
|
|
// kuls_alert(data.msg);
|
|
// }
|
|
// },
|
|
// error: function (request, status, error) {
|
|
// kuls_alert(error.message);
|
|
// },
|
|
// complete: ()=>{
|
|
// this.getMainList();
|
|
// // _this.formInit();
|
|
// }
|
|
// });
|
|
// };
|
|
//
|
|
|
|
setFilter() {}
|
|
|
|
/*
|
|
* @Overview 테이블 데이터 추가 함수
|
|
* @Parameter 없음
|
|
* @function 팝업 띄우기
|
|
*/
|
|
addRow() {
|
|
// var form = document.getElementById("form");
|
|
// let temdata = new FormData(form);
|
|
// let newdata = Object.fromEntries(temdata); //form데이터
|
|
// newdata["_STATUS_"] = "I";
|
|
// this.tbList.addRow(newdata);
|
|
this.modalFacility();
|
|
|
|
}
|
|
/*
|
|
* @Overview 팝업 오픈
|
|
* @Parameter 설비 추가 및 수정
|
|
*/
|
|
modalFacility(row_data) {
|
|
let _this = this;
|
|
|
|
vnLoad( '', './facility_pop.inc.php', '', (loadHtml)=>{
|
|
this.putFacilityModal = kuls_modal(loadHtml);
|
|
|
|
// rowData form에 입력
|
|
if(row_data){
|
|
const rowData = row_data.getData();
|
|
Object.keys(rowData).forEach( key => {
|
|
if(document.querySelector(".custom-popup #"+key)){
|
|
document.querySelector(".custom-popup #"+key).value = rowData[key];
|
|
};
|
|
});
|
|
//document.querySelector(".custom-popup #FACLT_CD_PK").value = rowData['FACLT_CD'];
|
|
document.querySelector(".custom-popup #FACLT_CD").readOnly = true;
|
|
document.querySelector(".custom-popup #img_preview").src = _this.getFileUrl('faclt', row_data.getData().FACLT_CD, row_data.getData().SID, row_data.getData().FILE_ID);
|
|
}
|
|
|
|
//const getFile = _this.getFileUrl(row_data.FACLT_CD, row_data.SID.row_data.FILE_ID, row_data.FILE_NM);
|
|
|
|
const fileInput = document.querySelector("#file_input");
|
|
fileInput.addEventListener("change", (event) => {
|
|
if (event.target.files.length > 0) {
|
|
this.putTempFile(event.target.files[0], row_data); // 파일과 함께 rowData 전달
|
|
}
|
|
|
|
});
|
|
|
|
// form 데이터 row에 입력
|
|
document.querySelector(".awn-popup-confirm .add-btn").addEventListener("click",(e)=>{
|
|
let _this = this;
|
|
e.preventDefault();
|
|
|
|
const formData = new FormData(document.querySelector("#form"));
|
|
if( row_data ){
|
|
formData.set("FACLT_CD_PK", row_data.getData()['FACLT_CD']);
|
|
}
|
|
|
|
if (formData.get("FACLT_CD_PK")) {
|
|
formData.append("mode", "setForm");
|
|
}else{
|
|
formData.append("mode", "putForm" );
|
|
}
|
|
|
|
ajax_form({
|
|
url: _this.ajaxUrl,
|
|
data: formData,
|
|
success: (data)=>{
|
|
if (data.code) {
|
|
// document.querySelector("#FACLT_CD_PK").value = faclt_cd;
|
|
_this.getMainList();
|
|
kuls_success("적용 되었습니다.");
|
|
}else{
|
|
kuls_alert(data.mesg);
|
|
}
|
|
},
|
|
error: function(req, stat, err){
|
|
kuls_alert(err.message);
|
|
}
|
|
});
|
|
|
|
//this.putFacilityModal.delete();
|
|
});
|
|
});
|
|
};
|
|
|
|
editRow(){
|
|
var form = document.getElementById("form");
|
|
let temdata = new FormData(form);
|
|
let newdata = Object.fromEntries(temdata); //form데이터
|
|
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;
|
|
|
|
let formData = new FormData();
|
|
formData.append('upfile', file);
|
|
formData.append('mode', "putTempFile");
|
|
|
|
ajax_form({
|
|
url: _this.ajaxUrl,
|
|
data: formData,
|
|
success: (data)=>{
|
|
if ( data.code ) {
|
|
let file_name = data.data.tmp_name;
|
|
document.querySelector("#tmp_file").value = file_name;
|
|
}else{
|
|
kuls_alert(data.mesg);
|
|
}
|
|
},
|
|
error: (req, stat, err) => {
|
|
kuls_alert(err.message);
|
|
},
|
|
});
|
|
return true;
|
|
}
|
|
|
|
getFileUrl = function(kind,FACLT_CD, SID, FILE_ID){
|
|
let urlStr = "";
|
|
if(kind == "faclt"){
|
|
urlStr = '/include/getFile.php'+"?gubun=faclt&nid="
|
|
+ FACLT_CD +
|
|
"&sid="+ SID +
|
|
"&file_id="+ FILE_ID
|
|
}else{
|
|
urlStr = '/include/getFile.php'+"?gubun=faclt&ITEM_CD="
|
|
+ FACLT_CD +
|
|
"&ROUT_SQNO="+ SID +
|
|
"&name="+FILE_ID
|
|
}
|
|
return urlStr;
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 순서 변경 함수
|
|
* @Parameter 방향
|
|
* @function 선택된 모든 행 순서 변경
|
|
*/
|
|
upDownRow(dir) {
|
|
|
|
}
|
|
|
|
// 클릭 이벤트
|
|
rowClick(e, tgt) {
|
|
if (tgt.isSelected()) {
|
|
tgt.deselect();
|
|
Tb_process.code = null;
|
|
} else {
|
|
this.tbList.deselectRow();
|
|
Tb_process.getMainList(tgt.getData().FACLT_CD);
|
|
Tb_repair.getMainList(tgt.getData().FACLT_CD);
|
|
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.getMainList();
|
|
|
|
// _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;
|
|
|
|
_this.modalFacility(row);
|
|
}
|
|
|
|
/*
|
|
* @Overview 선택한 CELL의 정보 또는 상태 변화에 활용하는 함수
|
|
* @Parameter 클릭한 CELL 데이터
|
|
*/
|
|
cellClick(e, tgt) {
|
|
// const editor = tgt.getColumn().getDefinition().editor; //에디터 속성을 가진 컬럼 변수(컬럼에 editor : input 을 부여하면 수정 가능해진다)
|
|
|
|
// switch (tgt.getField()) {
|
|
// default:
|
|
// if (!editor) {
|
|
// this.rowClick && this.rowClick(e, tgt.getRow());
|
|
// }
|
|
// break;
|
|
// }
|
|
}
|
|
|
|
// 셀 수정
|
|
cellEdited(cell) {
|
|
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
|
|
}
|
|
//기본건 삭제만 가능
|
|
putData() {
|
|
const _this = this;
|
|
// 기본키 중복 확인 및 방지
|
|
// _STATUS_ 있는 데이터만 들고와서 PUT하기
|
|
let postdata = {
|
|
'mode': 'deleteForm',
|
|
'reqdata': JSON.stringify(this.tbList.getData().filter(row=> row._STATUS_)),
|
|
};
|
|
ajax_json({
|
|
url: _this.ajaxUrl,
|
|
data: postdata,
|
|
success: function (data) {
|
|
if (data.code) {
|
|
kuls_success("저장되었습니다.");
|
|
_this.getMainList();
|
|
Tb_process.getMainList();
|
|
Tb_repair.getMainList();
|
|
}
|
|
},
|
|
error: function (request, status, error) {
|
|
kuls_alert(error.message);
|
|
},
|
|
complete: function () {
|
|
}
|
|
});
|
|
return true;
|
|
}
|
|
//이미지 미리보기
|
|
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 = [
|
|
{ field:"check", title: "선택", width: 50, headerSort: false,formatter: tb_common_funtions.formatterCheckboxIcon,formatterParams: { checkval: "Y" },},
|
|
{ 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 },
|
|
{ field: "USE_FLG", title: "사용", width: 50, formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: {checkval:'Y'} },
|
|
{ field: "FILE_ID", title: "FILE_ID", width: 50 ,visible:false},
|
|
{ field: "FILE_NAME", title: "FILE_NAME", width: 50 ,visible:false},
|
|
{ field: "SID", title: "SID", width: 50 ,visible:false}
|
|
];
|
|
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, () => {
|
|
|
|
this.getMainList && this.getMainList();
|
|
// 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`
|
|
|
|
// let base64String = document.getElementsByClassName("img-box")[0].outerHTML;
|
|
// let firstSlice = base64String.indexOf("base64,")+7;
|
|
// let lastSlice = base64String.indexOf("\" alt=");
|
|
|
|
// file = base64String.substring(firstSlice,lastSlice);
|
|
|
|
this.putData && this.putData();
|
|
Tb_process.putData && Tb_process.putData();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
class Tb_process_class {
|
|
constructor(container) {
|
|
let _this = this;
|
|
this.ajaxUrl = "./facility.ajax.php";
|
|
this.container = document.querySelector(container);
|
|
this.table = this.container.querySelector(".hy-table");
|
|
this.SEQNO = 0;
|
|
// 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(FACLT_CD) {
|
|
// const selectData = Tb_facility.tbList.getSelectedData()[0]?.FACLT_CD;
|
|
//FACLT_CD : Tb_facility.selectRowgetSelectedData()[0].FACLT_CD
|
|
|
|
this.code = FACLT_CD;
|
|
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
|
ajax_json({
|
|
url: this.ajaxUrl,
|
|
data: { mode: "getprocess", FACLT_CD: this.code},
|
|
success: (data) => {
|
|
this.tbList.setData(data.data);
|
|
this.SEQNO = data.data[data.data.length - 1]?data.data[data.data.length - 1].SEQNO : 0;
|
|
},
|
|
error: (req, status, err) => {
|
|
kuls_alert(err.message);
|
|
},
|
|
complete: () => {
|
|
window.clearTimeout(talert);
|
|
this.tbList.clearAlert();
|
|
// this.setFilter();
|
|
},
|
|
});
|
|
}
|
|
putData() {
|
|
|
|
|
|
if(this.tbList.getData().filter(row=> row._STATUS_).length == 0){
|
|
this.getMainList();
|
|
return false;
|
|
}
|
|
|
|
const 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: (data)=>{
|
|
if( data.code ){
|
|
kuls_success("적용 되었습니다.");
|
|
//_this.getRepairInfo(formdata.get("FACLT_CD"));
|
|
// Tb_funcs.putFacilityModal.delete();
|
|
this.getMainList(this.code);
|
|
}else{
|
|
kuls_alert(data.mesg);
|
|
}
|
|
},
|
|
error: function (request, status, error) {
|
|
kuls_alert(error.message);
|
|
},
|
|
complete: function(){
|
|
}
|
|
});
|
|
};
|
|
setFilter() {}
|
|
|
|
/*
|
|
* @Overview 테이블 행 추가 함수
|
|
* @Parameter 없음
|
|
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
|
*/
|
|
addRow() {
|
|
this.SEQNO += 1;
|
|
if(this.code){
|
|
this.tbList.addRow({ SEQNO: this.SEQNO, FACLT_CD: this.code, _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) {
|
|
|
|
}
|
|
|
|
/*
|
|
* @Overview 테이블 행 클릭 함수
|
|
* @Parameter 셀
|
|
* @function 클릭한 테이블 행 선택
|
|
*/
|
|
rowClick(e,tgt) {
|
|
// 삭제가 가능하도록 ROW SELECT
|
|
// staus D로 바꾸기?
|
|
if (tgt.isSelected()) {
|
|
tgt.deselect();
|
|
} else {
|
|
this.tbList.deselectRow();
|
|
tgt.select();
|
|
}
|
|
}
|
|
cellClick(e, tgt) {
|
|
const editor = tgt.getColumn().getDefinition().editor;
|
|
// 체크박스 클릭
|
|
switch (tgt.getField()) {
|
|
case "OP_CD":
|
|
popOper({
|
|
OP_CD : "OP_CD",
|
|
OP_NM: "OP_NM"
|
|
},tgt.getRow());
|
|
break;
|
|
case "USE_FLG":
|
|
tgt.setValue(tgt.getValue() == "Y" ? "N" : "Y");
|
|
break;
|
|
default:
|
|
if (!editor) {
|
|
this.rowClick && this.rowClick(e, tgt.getRow());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
// 셀 수정
|
|
cellEdited(cell) {
|
|
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
|
|
}
|
|
|
|
/*
|
|
* @Overview 최초 실행 함수
|
|
* @Parameter 없음
|
|
*/
|
|
init() {
|
|
// field 정의
|
|
const fields = [
|
|
{ field:"check", title: "선택", width: 50, headerSort: false,formatter: tb_common_funtions.formatterCheckboxIcon,formatterParams: { checkval: "Y" },},
|
|
{ field: "SEQNO", title: "NO", width: 50 },
|
|
// { field: "SEQNO", formatter: "rownum", title: "NO", width: 50 },
|
|
{ field: "OP_CD", title: "공정코드", width: 200 , cssClass:"editable-cell", },
|
|
{ field: "OP_NM", title: "공정명", width: 200 },
|
|
{ field: "REMK", title: "비고", width: 300},
|
|
// { field: "USE_FLG", title: "사용", width: 50, cssClass:"editable-cell", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: {checkval:'Y'} },
|
|
];
|
|
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 Tb_repair_class{
|
|
constructor(container) {
|
|
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");
|
|
}
|
|
|
|
getMainList(FACLT_CD) {
|
|
this.code = FACLT_CD;
|
|
// Tb_faclility에서 가져와야할것 변수로 저장
|
|
|
|
// ajaxJson 으로 테이블 가져오기?
|
|
|
|
}
|
|
|
|
putData() {
|
|
};
|
|
|
|
addRow(){
|
|
}
|
|
|
|
removeRow(){}
|
|
|
|
/*
|
|
* @Overview 선택한 ROW의 정보 또는 상태 변화에 활용하는 함수
|
|
* @Parameter 클릭한 row 데이터
|
|
*/
|
|
rowClick(e, tgt) {
|
|
if (tgt.isSelected()) {
|
|
tgt.deselect();
|
|
} else {
|
|
tgt.select();
|
|
}
|
|
}
|
|
/*
|
|
* @Overview 선택한 CELL의 정보 또는 상태 변화에 활용하는 함수
|
|
* @Parameter 클릭한 CELL 데이터
|
|
*/
|
|
cellClick(e, tgt) {
|
|
const editor = tgt.getColumn().getDefinition().editor; //에디터 속성을 가진 컬럼 변수(컬럼에 editor : input 을 부여하면 수정 가능해진다)
|
|
|
|
switch (tgt.getField()) {
|
|
default:
|
|
if (!editor) {
|
|
this.rowClick && this.rowClick(e, tgt.getRow());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
// 셀 수정
|
|
cellEdited(cell) {
|
|
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
|
|
}
|
|
|
|
init(){
|
|
const fields = [
|
|
{ formatter:"rownum", title:"NO", width:50, headerSort:false },
|
|
{ field:"", title:"수리일", width:150, },
|
|
{ field:"", title:"수리내역", width:150, },
|
|
{ field:"", title:"수리비용", width:100, },
|
|
{ field:"", title:"수리업체", width:100, },
|
|
{ field:"", title:"전화번호", width:200, },
|
|
]
|
|
|
|
const commonFieldData = {
|
|
headerSort: false,
|
|
vertAlign: "middle",
|
|
hozAlign: "center",
|
|
resizable: "header", //Resize 는 헤더에서만 가능
|
|
headerHozAlign: "center", //헤더 정렬
|
|
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
|
|
};
|
|
|
|
this.tbList = new Tabulator(this.table, {
|
|
layout: "fitColumns",
|
|
data: [], //기본 데이터
|
|
columns: fields, //컬럼 설정
|
|
columnDefaults: commonFieldData,
|
|
headerSortElement: "<i class='bi'></i>",
|
|
});
|
|
|
|
// 데이터 불러오기
|
|
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);
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
|
|
const Tb_facility = new Tb_main_class("#main_table");
|
|
Tb_facility.init();
|
|
const Tb_process = new Tb_process_class("#process_table");
|
|
Tb_process.init();
|
|
const Tb_repair = new Tb_repair_class("#repair_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>
|
|
`; // 이미지 미리보기 설정
|
|
};
|
|
|
|
const file = event.target.files[0];
|
|
reader.readAsDataURL(file);
|
|
|
|
// file = 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); // 이미지 미리보기
|
|
// }
|