1
0
Fork 0
HANYANG_MES/home_dir/www/ksvc/base/item/item.js

1830 lines
54 KiB
JavaScript

/*
* @Overview 품목등록 페이지
* @History 2024-03-20 / 이원기 / 최초작성
2024-03-26 / 박민희
2024-04-03 / 이원기
*/
class Tb_item_class {
constructor(container) {
let _this = this;
_this.tbList ="";
_this.itemData = "";
this.ajaxUrl = "./item.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.ITEM_CD = "";
this.removeBtn = this.container.querySelector(".remove-btn");
}
// // tableBuild 되었을때 getManList
getMainList() {
let _this = this;
let talert = window.setTimeout(() => { _this.tbList.alert("Loading ...") }, 1000);
let ITEM_GRP = document.getElementById("ITEM_GRP").value; //품목그룹
let ITEM_CODE = document.getElementById("ITEM_CD").value; //품목코드
// let DRAW_NO = document.getElementById("DRAW_NO").value; //도면
ajax_json({
url: this.ajaxUrl,
data: { mode: "getItemList", ITEM_GRP:ITEM_GRP, ITEM_CD: ITEM_CODE},
success: (data) => {
console.log(data);
if(data.code) {
_this.tbList.setData(data.data);
}else{
kuls_alert(data.mesg);
}
},
error: (req, status, err) => {
kuls_alert(err.message);
},
complete: () => {
window.clearTimeout(talert);
_this.tbList.clearAlert();
this.setFilter();
_this.tbList.getRows().forEach(row=>{
row.getCell("ITEM_CD").getElement().addEventListener("click",(e)=>{
_this.rowClick(e,row);
})
});
},
});
return true;
}
setFilter() {}
/*
* @Overview 테이블 행 추가 함수
* @Parameter 없음
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
*/
addRow() {
this.tbList.addRow({ _STATUS_: "I" }, true);
}
/*
* @Overview 테이블 행 삭제 함수
* @Parameter 없음
* @function 선택된 모든 행 STATUS D
*/
removeRow() {
const selectedRows = this.tbList.getRows().filter(row=>{
return row.getData().check ==="Y"
});
if(selectedRows.length > 0 ){
kuls_confirm("삭제","하시겠습니까?", ()=>{
// 선택된 각 행 삭제
selectedRows.forEach((row) => {
// STAUS D로 바꾸기
row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
const rowElement = row.getElement();
rowElement.classList.add("remove-row");
});
})
}else{
kuls_alert("삭제할 행을 선택해주세요.")
}
}
/*
* @Overview 삭제 취소 함수
* @Parameter 삭제 행
* @function 클릭시 삭제 취소 & STATUS를 공란으로 변경
*/
clearRemove(tgt){
if(tgt._row.data._STATUS_ == "D"){
// console.log();
tgt._row.data._STATUS_ = "";
tgt._row.getElement().classList.remove("remove-row")
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
}
}
/*
* @Overview 테이블 행 순서 변경 함수
* @Parameter 방향
* @function 선택된 모든 행 순서 변경
*/
upDownRow(dir) {
}
// rowDblClick(e, tgt) {
// popClientEditor({},tgt)
// }
//클릭 이벤트
rowClick(e, tgt) {
let _this = this;
let clickRow = tgt._row;
let clickData = clickRow.data;
Tb_routing.itemData = clickData;
Tb_pic.itemData = clickData;
Tb_routing.getMainList(Tb_routing.itemData);
Tb_pic.getMainList(clickData);
if (tgt.isSelected()) {
_this.tbList.deselectRow(tgt._row);
// Tb_process_check.getMainList(clickData);
} else {
_this.tbList.deselectRow();
_this.tbList.selectRow(clickRow);
}
}
cellClick(e, tgt) {
var editor = tgt.getColumn().getDefinition().editor;
// // 체크박스 클릭
switch (tgt.getField()) {
case "USE_FLG":
tgt.setValue(tgt.getValue() == "Y" ? "N" : "Y");
break;
case "check":
tgt.setValue(tgt.getValue() == "Y" ? "" : "Y");
this.clearRemove(tgt.getRow())
break;
// 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";
};
/*
* @Overview 추가, 수정 및 삭제 데이터 저장
* @Parameter 없음
* @Function _STATUS_ : U, I, D Row 인 것 php 처리.
*/
putData() {
let _this = this;
// 저장 시 상태 변화 없는 row 요청 X
if(this.tbList.getData().filter(row=> row._STATUS_).length == 0){
this.getMainList();
return false;
}
const blankObj = this.tbList.getRows().filter(row => {
return Object.keys(row._row.data).filter(key => key !== '_STATUS_' && key !== 'USE_FLG').every(key => {
const value = row._row.data[key];
return (value === undefined || value === '');
});
});
let postdata = {
'mode': 'putItem',
'reqdata': JSON.stringify(this.tbList.getData().filter(row=> row._STATUS_)),
};
console.log(blankObj)
if(blankObj.length !== 0){
kuls_confirm("비어있는 행을 무시하고 진행하시겠습니까?","",()=>{
ajax_json({
url: _this.ajaxUrl,
data: postdata,
success: function (data) {
if (data.code) {
kuls_success("저장되었습니다.");
_this.getMainList();
}else{
kuls_alert(data.mesg);
}
},
error: function (request, status, error) {
console.log(request)
kuls_alert(error.message);
},
complete: function () {
}
});
},()=>{
blankObj.forEach(row=>{
row.getElement().classList.add("blank-row")
})
console.log(blankObj)
})
}else{
ajax_json({
url: _this.ajaxUrl,
data: postdata,
success: function (data) {
if (data.code) {
kuls_success("저장되었습니다.");
_this.getMainList();
}else{
kuls_alert(data.mesg);
}
},
error: function (request, status, error) {
console.log(request)
kuls_alert(error.message);
},
complete: function () {
// this.setFilter();
// _this.tbList.getRows().forEach(row=>{
// row.getCell("BIZ_AREA_CD").getElement().addEventListener("click",(e)=>{
// _this.rowClick(e,row);
// })
// });
}
});
}
}
/*
* @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: "ITEM_CD", title: "품목", width: 150,editor:'input',editable:(cell)=>{ let val = cell.getData(); return val._STATUS_ === 'I' }, }, //품목 코드
{ field: "ITEM_NM", title: "품명", width: 250,editor:'input', }, //품목 코드
{ field: "DRAW_NO", title: "도면", width: 200,editor:'input' }, //도면 번호 - popup
{ field: "ITEM_GRP", title: "품목 그룹", width: 80,
editor:"list",
editorParams:{ values : varsITEM_GRP },
formatter: tb_common_funtions.formatterSelect,
formatterParams:{ values : varsITEM_GRP },
cssClass:"user-list",
}, //품목 그룹 -select
{ field: "", title: "재고단위", width: 100,editor:'input' }, //formatter : 숫자 EA
{ field: "DRAW_VER", title: "버전", width: 100,editor:'input' },
];
const commonFieldData = {
// headerSort: true,
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,
headerSortElement: "<i class='bi'></i>", //정렬 아이콘
// initialSort:[
// {column:"ITEM_CD", dir:"desc"}, //sort by this first
// ],
});
// 데이터 불러오기
_this.tbList.on("tableBuilt", () => {
_this.getMainList();
});
// row 클릭 시에
_this.tbList.on("rowClick", (e, tgt) => {
_this.rowClick && Tb_item.rowClick(e, tgt);
});
// cell 클릭 시에
_this.tbList.on("cellClick", (e, tgt) => {
_this.cellClick && Tb_item.cellClick(e, tgt);
});
// cell 수정 시에
_this.tbList.on("cellEdited", (cell) => {
_this.cellEdited && Tb_item.cellEdited(cell);
});
// 추가
["click", "keypress"].forEach((evt) => {
_this.addBtn.addEventListener(evt, () => {
_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();
});
});
// ['click', 'keypress'].forEach(evt => document.querySelector("#item_code_pop").addEventListener(evt, () =>
// { this.popBP() }));
// 저장
["click", "keypress"].forEach((evt) => {
const putBtn = document.querySelector("#put_item");
putBtn.addEventListener(evt, () => {
_this.putData();
Tb_routing.putRouting();
Tb_process_check.putInspSpec();
Tb_pic.putFile();
});
});
}
}
class Tb_routing_class {
constructor(container) {
let _this = this;
this.ajaxUrl = "./item.ajax.php";
_this.tbList = "";
_this.itemData = "";
_this.fileData = "";
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.lastNum = 0;
}
/*
* @Overview 데이터 가져오기
* @Parameter 없음
* @function 데이터 불러오기
* @function this.lastNum에 마지막 공순 넣기
*/
getMainList(clickData) {
// console.log(Tb_item.tbList.getSelectedData()[0]);
let _this = this;
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
ajax_json({
url: this.ajaxUrl,
data: { mode: "getRoutingList", ITEM_CD :_this.itemData?.ITEM_CD },
success: (data) => {
this.tbList.setData(data.data);
if(data.data.length == 0){
this.lastNum = 0
console.log(this.lastNum);
}else{
this.lastNum = Math.max(...data.data.map(v=>v.OP_SEQ));
}
},
error: (req, status, err) => {
kuls_alert(err.message);
},
complete: () => {
window.clearTimeout(talert);
// this.tbList.clearAlert();
// this.setFilter();
},
});
}
afterEditing(){
let _this = this;
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
ajax_json({
url: this.ajaxUrl,
data: { mode: "putRouting", reqdata: JSON.stringify(this.sortingRouting().filter( row=> row._STATUS_ )),},
success: (data) => {
if(data.code){
kuls_success("적용 되었습니다.");
}
},
error: (req, status, err) => {
kuls_alert(err.message);
},
complete: () => {
window.clearTimeout(talert);
this.tbList.clearAlert(_this.talert);
_this.getMainList();
// this.setFilter();
},
});
}
/*
* @Overview 라우팅 SORTING
* @Parameter 없음
* @function 테이블 데이터 순차적으로 SORTING 하여 데이터 가공
*
*/
sortingRouting(){
let temArr = this.tbList.getData(); // 테이블 전체 데이터
for(let i = 0; i < temArr.length; i++){
temArr[i].OP_SEQ = (parseInt([i]) + 1) * 10 // 공정 순서의 숫자 채번
if(parseInt([i]) === 0){ // 0인 경우 => 첫번째 공정 순서의 경우
temArr[0].FRST_OP_FLG = 'Y' // 첫번째 공정에 대하여 Y
temArr[0].LAST_OP_FLG = 'N' // 마지막 공정에 대하여 N
temArr[i].PRV_OP_CD = '' // 이전의 공정에 대하여 빈값 부여
}else{ // 0이 아닌경우 => 두번째 공정 순서부터 값 부여
temArr[i].FRST_OP_FLG = 'N'
temArr[i].LAST_OP_FLG = 'N'
temArr[i].PRV_OP_CD = temArr[i-1].OP_CD; // 이전의 공정에 대하여 VALUE 바인딩
temArr[i - 1].NXT_OP_CD = temArr[i].OP_CD; // 다음의 공정에 대하여 VALUE 바인딩
}
if(parseInt([i]) === temArr.length-1){
temArr[temArr.length-1].FRST_OP_FLG = 'N'
temArr[temArr.length-1].LAST_OP_FLG = 'Y'
}
// some : I나 D 상태가 하나라도 있으면 TRUE 반환
if(temArr.some(x=>x._STATUS_ === "I" ||temArr.some(x=>x._STATUS_ === "D" ))){
}else if(temArr.some(x=>x._STATUS_ === "U")){
temArr[i]._STATUS_ = "U";
}
}
return temArr
}
putRouting = (clickData) =>{
let _this = this;
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
ajax_json({
url: this.ajaxUrl,
data: { mode: "putRouting", reqdata: JSON.stringify(this.sortingRouting().filter( row=> row._STATUS_ )),},
success: (data) => {
if(data.code){
kuls_success("적용 되었습니다.");
}
},
error: (req, status, err) => {
kuls_alert(err.message);
},
complete: () => {
window.clearTimeout(talert);
this.tbList.clearAlert(_this.talert);
_this.getMainList();
// this.setFilter();
},
});
}
putTempFile(file, rowData){
let _this = this;
let fdata = "";
let formData = new FormData();
formData.append('upfile', file);
formData.append('mode', "putRoutTempFile");
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
jQuery.ajax({
url: _this.ajaxUrl,
type: 'POST',
data: formData,
contentType: false,
processData: false,
success: (data)=>{
if(data.code !== "0") {
kuls_success("적용 되었습니다.");
_this.fileData = JSON.parse(data).data;
console.log(_this.fileData);
if(rowData._STATUS_ !== "I"){
rowData.FILE_NM = _this.fileData.file_name;
this.tbList.updateData([
{ id: rowData.id,
// FILE_NM: _this.fileData.file_name,
TMP_NAME:_this.fileData.tmp_name,
FILE_TYPE:_this.fileData.file_type ,
FILE_SIZE:_this.fileData.file_size,
_STATUS_ : "U"
}
]);
}else if(rowData._STATUS_ === "I"){
rowData.FILE_NM = _this.fileData.file_name;
this.tbList.updateData([
{ id: rowData.id,
// FILE_NM: _this.fileData.file_name,
TMP_NAME:_this.fileData.tmp_name,
FILE_TYPE:_this.fileData.file_type ,
FILE_SIZE:_this.fileData.file_size
}
]);
}
console.log(this.tbList.getData());
}else{
kuls_alert(data.msg);
}
},
error: (req, stat, err) => {
kuls_alert(err.message);
},
complete: () => {
window.clearTimeout(talert);
// this.tbList.clearAlert();
// this.setFilter();
},
});
return _this.fileData;
}
setFilter() {}
/*
* @Overview 테이블 행 추가 함수
* @Parameter 없음
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
*/
addRow(item_cd) {
let _this = this;
console.log(_this.fileData);
if(item_cd === undefined){
kuls_alert("품목코드를 선택해주세요")
return false;
}
this.lastNum += 10;
this.tbList.addRow({ _STATUS_: "I", OP_SEQ: this.lastNum, ITEM_CD: item_cd });
}
/*
* @Overview 테이블 행 삭제 함수
* @Parameter 없음
* @function 선택된 모든 행 STATUS D
*/
removeRow() {
const selectedRows = this.tbList.getRows().filter(row=>{
return row.getData().check ==="Y"
});
if(selectedRows.length > 0 ){
kuls_confirm("삭제","하시겠습니까?", ()=>{
// 선택된 각 행 삭제
selectedRows.forEach((row) => {
// STAUS D로 바꾸기
row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
const rowElement = row.getElement();
rowElement.classList.add("remove-row");
});
})
}else{
kuls_alert("삭제할 행을 선택해주세요.")
}
}
/*
* @Overview 삭제 취소 함수
* @Parameter 삭제 행
* @function 클릭시 삭제 취소 & STATUS를 공란으로 변경
*/
clearRemove(tgt){
if(tgt._row.data._STATUS_ == "D"){
// console.log();
tgt._row.data._STATUS_ = "";
tgt._row.getElement().classList.remove("remove-row")
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
}
}
/*
* @Overview 테이블 행 공순 변경 함수(위로)
* @Parameter 없음
* @function 선택된 모든 행 위로
*/
upRow() {
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
// selectedRows.forEach((row) => {
// const currData = row.getData()["공순"];
// const upRows = this.tbList.searchRows("공순", "=", currData-10);
// upRows.forEach((upRow) => {
// upRow.update({_STATUS_: "U", 공순: currData});
// row.update({_STATUS_:"U", 공순 : currData-10});
// });
// });
}
/*
* @Overview 테이블 행 공순 변경 함수(아래로)
* @Parameter 없음
* @function 선택된 모든 행 아래로
*/
downRow() {
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
// selectedRows.forEach((row) => {
// const currData = row.getData()["공순"];
// const upRows = this.tbList.searchRows("공순", "=", currData+10);
// upRows.forEach((upRow) => {
// upRow.update({_STATUS_: "U", 공순: currData});
// row.update({_STATUS_:"U", 공순 : currData+10});
// });
// });
}
// 클릭 이벤트
rowClick(e, tgt) {
// 삭제가 가능하도록 ROW SELECT
// staus D로 바꾸기?
}
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 "check":
tgt.setValue(tgt.getValue() == "Y" ? "" : "Y");
this.clearRemove(tgt.getRow())
break;
default:
if (!editor) {
this.rowClick && this.rowClick(e, tgt.getRow());
}
break;
}
}
/*
* @Overview 파일 다운로드 함수
* @Parameter 없음
*/
getFileUrl =function(DRAW_NO, SID, FILE_ID, FILE_NM,kind,down){
let urlStr = "";
if(kind == "draw"){
urlStr = '/include/getFile.php'+"?gubun=draw&nid="
+ DRAW_NO +
"&sid="+ SID +
"&file_id="+ FILE_ID+
"&name="+FILE_NM
if(down === true){
location.href = urlStr;
}
}else{
urlStr = '/include/getFile.php'+"?gubun=rout&ITEM_CD="
+ DRAW_NO +
"&ROUT_SQNO="+ SID +
"&name="+FILE_ID
if(down === true){
location.href = urlStr;
}
}
return urlStr;
}
/*
* @Overview 아이콘 함수
* @Parameter 없음
*/
downloadIcon = function(cell, formatterParams, onRendered){ //plain text value
if(!cell.getRow().getData().FILE_NM){
// kuls_alert("");
return "<button class='reverse-btn disabled-btn' disabled>다운</button>";
}
return "<button class='reverse-btn'>다운</button>";
};
// /*
// * @Overview file 업로드 함수
// * @Parameter 없음
// * @function 파일 선택 시 업로드 창 열림 -> 선택 후 임시폴더 업로드 -> putTempFile 함수 통해 해당 ROWDATA에 파일 데이터 업데이트
// */
// 셀 수정
cellEdited(cell) {
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
}
// /*
// * @Overview file 업로드 함수
// * @Parameter 없음
// * @function 파일 선택 시 업로드 창 열림 -> 선택 후 임시폴더 업로드 -> putTempFile 함수 통해 해당 ROWDATA에 파일 데이터 업데이트
// */
uploadButton = function(cell){ //plain text value
var button = $("<button class='reverse-btn'>업로드</button>");
button.on("click", function(){
// console.log(value);
let editor = document.createElement("input");
editor.setAttribute("type", "file");
editor.setAttribute("name", "imgFile");
editor.setAttribute("id", "imgFile");
editor.style.padding = "3px";
editor.style.width = "100%";
editor.style.boxSizing = "border-box";
//trigger your file upload here
// editor.addEventListener("click",fun)
editor.click();
editor.addEventListener('change', function() {
// 파일 정보 가져오기
let file = this.files[0];
console.log(file);
Tb_routing.putTempFile(file,cell.getRow().getData());
cell.getRow().getData().id = Math.floor(Math.random() * 101);
});
// var file = this.files[0];
// console.log(file);
});
return button[0];
};
deleteButton = function(cell, data, row, options){ //plain text value
if(!cell.getRow().getData().FILE_NM){
// kuls_alert("");
return "<button class='reverse-btn disabled-btn' disabled>삭제</button>";
}
let _this = this;
var button = $("<button class='reverse-btn'>삭제</button>");
// value
button.on("click", function(){
// console.log(value);
kuls_confirm("삭제","하시겠습니까?", ()=>{
ajax_json({
url: "./item.ajax.php",
data: { mode: "delRoutFile", ITEM_CD:cell.getRow().getData().ITEM_CD , ROUT_SQNO:cell.getRow().getData().ROUT_SQNO},
success: (data) => {
if(data.code){
kuls_success("적용 되었습니다.");
}
},
error: (req, status, err) => {
kuls_alert(err.message);
},
complete: () => {
_this.getMainList();
},
});
})
// console.log(cell.getRow().getData());
});
return button[0];
};
putData() {
// 사번 중복 확인 및 방지
// _STATUS_ 있는 데이터만 들고와서 PUT하기
}
previewIcon = function(cell, formatterParams, onRendered){ //plain text value
if(!cell.getRow().getData().FILE_NM){
// kuls_alert("");
return "<button class='reverse-btn disabled-btn' diabled>미리보기</button>";
}
// console.log(cell.getRow().getData().FILE_NM);
return "<button class='reverse-btn'>미리보기</button>";
};
/*
* @Overview 최초 실행 함수
* @Parameter 없음
*/
init() {
let _this = this;
// field 정의
const fields = [
// 생산오더, 품목, 도면번호, 거래처, 납기일, 지시일, 지시구분, 지시 수량, 단위, 상태, 작업순서, 비고
// {field: "id", title:"id", formatter:function(cell, formatterParams, onRendered) {
// // 다른 열의 값을 가져와서 원하는 처리를 수행하여 새로운 값 생성
// let idx = cell.getRow().getData().ROUT_SQNO;
// console.log(idx);
// return idx;
// }},
{ field:"check", title: "선택", width: 50, headerSort: false,
formatter: tb_common_funtions.formatterCheckboxIcon,
formatterParams: { checkval: "Y" },
},
{ formatter:"rownum", field:"id", title: "NO", width: 50, visible: false },
{ field: "ITEM_CD", title: "품목코드", visible: false},
{ field: "OP_SEQ", title: "공순", width: 65,movableRows: true},
{ title: "공정", cssClass:"width-200", columns:[
{field:"OP_CD", width:100, editor: "input"},
{field:"OP_NM", width:100, editor: "input"}
]
},
{field: "ROUT_SQNO", title: "일련번호", width: 80,visible:false},
{ field: "FRST_OP_FLG", title: "처음 공정" , width: 80, visible: false},
{ field: "LAST_OP_FLG", title: "마지막 공정", width: 80, visible: false },
{ field: "PRV_OP_CD", title: "이전 공정", width: 80, visible: false },
{ field: "NXT_OP_CD", title: "다음 공정", width: 80, visible: false },
{ field: "STD_SETUP_TM", title: "준비시간</br>(분)", width: 80, editor: "input",
formatter:"money",
formatterParams:{
decimal:".",
precision:0
}
},
{ field: "CYCLE_TM", title: "공정시간</br>(분)", width: 80, editor: "input",
formatter:"money",
formatterParams:{
decimal:".",
precision:0
}
},
{ field: "STD_OP_AMT", title: "공정 단가</br>(원)", width: 80 ,editor: "input",
formatter:"money",
formatterParams:{
decimal:".",
precision:0
}
},
{ title: "작업 표준서", cssClass:"width-230", columns:[
{ field: "SID", visible:false},
{ field: "FILE_ID", visible:false},
{ field:"FILE_NM", width:80, formatter: this.previewIcon, cellClick:function(e,cell){
pop_filedown(
_this.getFileUrl(
cell.getRow().getData().ITEM_CD,
cell.getRow().getData().ROUT_SQNO,
cell.getRow().getData().FILE_NM,
"",
"rout",
// cell.getRow().getData().FILE_NM,
false
), cell.getRow().getData().FILE_NM.split(".").pop()
);
}
},
{ field:"DOWNLOAD", width:50, formatter: this.downloadIcon,
cellClick:function(e, cell){
_this.getFileUrl(
cell.getRow().getData().ITEM_CD,
cell.getRow().getData().ROUT_SQNO,
cell.getRow().getData().FILE_NM,
"",
"rout",
true
);
// location.href = '/include/getFile.php'+"?gubun=draw&nid="
// + cell.getRow().getData().DRAW_NO
// + "&sid="+cell.getRow().getData().SID
// + "&file_id="+cell.getRow().getData().FILE_ID
}},
// {field:"REGISTER", width:50,editor: _this.fileEditor}
{field:"REGISTER", width:50,formatter: function(cell,formatterParams){
if(cell.getRow().getData().FILE_NM){
return "<button class='reverse-btn disabled-btn' disabled>업로드</button>";
}
return _this.uploadButton(cell)}
},
{field:"DELETE", width:50,formatter: function(cell,formatterParams){return _this.deleteButton(cell)}}
]
},
];
const commonFieldData = {
headerSort: false,
vertAlign: "middle",
hozAlign: "center",
resizable: "header", //Resize 는 헤더에서만 가능
headerHozAlign: "center", //헤더 정렬
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
};
this.tbList = new Tabulator(this.table, {
layout: "fitColumns",
movableRows:true,
selectableRows: 1,
data: [], //기본 데이터
columns: fields, //컬럼 설정
columnDefaults: commonFieldData,
headerSortElement: "<i class='bi'></i>", //정렬 아이콘
selectable: 1
});
// row 이동 시에
this.tbList.on("rowMoved", function(row){
//row - row component
if(Tb_routing.sortingRouting().some(x=>x._STATUS_ == "I")){
kuls_alert("현재 입력 중인 라우팅을 저장 후 공정 순서를 조정해주세요")
Tb_routing.getMainList(Tb_item.itemData);
}else{
const rowElement = row.getElement();
rowElement.classList.add("edit-row");
// console.log(row._row.getData());
row._row.getData()._STATUS_ = "U";
}
});
// row 클릭 시에
this.tbList.on("rowClick", (e, tgt) => {
this.rowClick && Tb_routing.rowClick(e, tgt);
Tb_process_check.getMainList();
});
// cell 클릭 시에
this.tbList.on("cellClick", (e, tgt) => {
this.cellClick && Tb_routing.cellClick(e, tgt);
Tb_process_check.getMainList();
});
// cell 수정 시에
this.tbList.on("cellEdited", (cell) => {
this.cellEdited && Tb_routing.cellEdited(cell);
Tb_process_check.getMainList();
});
// 추가
["click", "keypress"].forEach((evt) => {
this.addBtn.addEventListener(evt, () => {
// console.log();
this.addRow && this.addRow(Tb_item.tbList.getSelectedData()[0]?.ITEM_CD);
});
});
// 삭제
["click", "keypress"].forEach((evt) => {
this.removeBtn.addEventListener(evt, () => {
this.removeRow && this.removeRow();
});
});
// 위로
["click", "keypress"].forEach((evt) => {
this.upBtn.addEventListener(evt, () => {
// this.upRow && this.upRow();
});
});
// 아래로
["click", "keypress"].forEach((evt) => {
this.downBtn.addEventListener(evt, () => {
this.downRow && this.downRow();
});
});
}
}
class Tb_process_check_class {
constructor(container) {
this.ajaxUrl = "./item.ajax.php";
this.container = document.querySelector(container);
this.table = this.container.querySelector(".hy-table");
this.addBtn = this.container.querySelector(".add-btn");
this.removeBtn = this.container.querySelector(".remove-btn");
}
// tableBuild 되었을때 getManList
getMainList(clickData) {
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
ajax_json({
url: this.ajaxUrl,
data: {
mode: "getInspSpecList",
ITEM_CD:Tb_item.tbList.getSelectedData()[0]?.ITEM_CD,
ROUT_SQNO:Tb_routing.tbList.getSelectedData()[0]?.ROUT_SQNO
},
success: (data) => {
this.tbList.setData(data.data);
},
error: (req, status, err) => {
kuls_alert(err.message);
},
complete: () => {
window.clearTimeout(talert);
this.tbList.clearAlert();
this.tbList.getRows().forEach(row=>{
row.getCell("INSP_ITEM").getElement().addEventListener("click",(e)=>{
console.log("hihi")
this.rowClick(e,row);
})
});
},
});
}
setFilter() {}
/*
* @Overview 테이블 행 추가 함수
* @Parameter 없음
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
*/
addRow(ITEM_CD, ROUT_SQNO, OP_CD) {
if(ITEM_CD === undefined){
kuls_alert("품목 코드를 선택해주세요");
return false;
}
if(ITEM_CD === undefined || ROUT_SQNO === undefined){
kuls_alert("공정 코드를 선택해주세요");
return false;
}
this.tbList.addRow({ _STATUS_: "I", SPEC_ITEM_CD: ITEM_CD, ROUT_SQNO: ROUT_SQNO, OP_CD : OP_CD });
}
// putInspSpec() {
// let _this = this;
// if(this.tbList.getData().filter(row=> row._STATUS_).length == 0){
// return false;
// }
// let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
// ajax_json({
// url: _this.ajaxUrl,
// data: {
// mode: 'putInspSpec',
// reqdata: JSON.stringify(this.tbList.getData().filter( row=> row._STATUS_ )),
// },
// success: (data)=>{
// if(data.code) {
// _this.getMainList();
// kuls_success("적용 되었습니다.");
// }else{
// kuls_alert(data.mesg);
// }},
// error: function(req, stat, err){
// kuls_alert(err.message);
// },
// complete: () => {
// window.clearTimeout(talert);
// this.tbList.clearAlert();
// // this.setFilter();
// },
// });
// return true;
// }
/*
* @Overview 추가, 수정 및 삭제 데이터 저장
* @Parameter 없음
* @Function _STATUS_ : U, I, D Row 인 것 php 처리.
*/
putInspSpec() {
let _this = this;
// 저장 시 상태 변화 없는 row 요청 X
if(this.tbList.getData().filter(row=> row._STATUS_).length == 0){
this.getMainList();
return false;
}
const blankObj = this.tbList.getRows().filter(row => {
return Object.keys(row._row.data).filter(key => key !== '_STATUS_' && key !== 'USE_FLG' && key !== 'OP_CD' && key !== 'ROUT_SQNO' && key !== 'SPEC_ITEM_CD').every(key => {
const value = row._row.data[key];
return (value === undefined || value === '');
});
});
let postdata = {
'mode': 'putInspSpec',
'reqdata': JSON.stringify(this.tbList.getData().filter(row=> row._STATUS_)),
};
console.log(blankObj)
if(blankObj.length !== 0){
kuls_confirm("비어있는 행을 무시하고 진행하시겠습니까?","",()=>{
ajax_json({
url: _this.ajaxUrl,
data: postdata,
success: function (data) {
if (data.code) {
kuls_success("저장되었습니다.");
_this.getMainList();
}else{
kuls_alert(data.mesg);
}
},
error: function (request, status, error) {
console.log(request)
kuls_alert(error.message);
},
complete: function () {
}
});
},()=>{
blankObj.forEach(row=>{
row.getElement().classList.add("blank-row")
})
console.log(blankObj)
})
}else{
ajax_json({
url: _this.ajaxUrl,
data: postdata,
success: function (data) {
if (data.code) {
kuls_success("저장되었습니다.");
_this.getMainList();
}else{
kuls_alert(data.mesg);
}
},
error: function (request, status, error) {
console.log(request)
kuls_alert(error.message);
},
complete: function () {
}
});
}
}
/*
* @Overview 테이블 행 삭제 함수
* @Parameter 없음
* @function 선택된 모든 행 STATUS D
*/
removeRow() {
const selectedRows = this.tbList.getRows().filter(row=>{
return row.getData().check ==="Y"
});
if(selectedRows.length > 0 ){
kuls_confirm("삭제","하시겠습니까?", ()=>{
// 선택된 각 행 삭제
selectedRows.forEach((row) => {
// STAUS D로 바꾸기
row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
const rowElement = row.getElement();
rowElement.classList.add("remove-row");
});
})
}else{
kuls_alert("삭제할 행을 선택해주세요.")
}
}
/*
* @Overview 삭제 취소 함수
* @Parameter 삭제 행
* @function 클릭시 삭제 취소 & STATUS를 공란으로 변경
*/
clearRemove(tgt){
if(tgt._row.data._STATUS_ == "D"){
// console.log();
tgt._row.data._STATUS_ = "";
tgt._row.getElement().classList.remove("remove-row")
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
}
}
/*
* @Overview 테이블 행 선택 함수
* @Parameter 없음
* @function 선택된 모든 행 색 변경
*/
rowClick(e, tgt) {
if (tgt.isSelected()) {
tgt.deselect();
this.clearRemove(tgt);
} else {
tgt.select();
}
}
/*
* @Overview 삭제 취소 함수
* @Parameter 삭제 행
* @function 클릭시 삭제 취소 & STATUS를 공란으로 변경
*/
clearRemove(tgt){
if(tgt._row.data._STATUS_ == "D"){
// console.log();
tgt._row.data._STATUS_ = "";
tgt._row.getElement().classList.remove("remove-row")
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
}
}
cellClick(e, tgt) {
var editor = tgt.getColumn().getDefinition().editor;
// 체크박스 클릭
switch (tgt.getField()) {
case "INSP_ITEM":
popInsp({
INSP_ITEM: "INSP_ITEM"
},tgt.getRow())
break;
case "check":
tgt.setValue(tgt.getValue() == "Y" ? "" : "Y");
this.clearRemove(tgt.getRow())
break;
default:
if (!editor) {
this.rowClick && this.rowClick(e, tgt.getRow());
}
break;
}
}
// 셀 수정
cellEdited(cell) {
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
}
putData() {
// 사번 중복 확인 및 방지
// _STATUS_ 있는 데이터만 들고와서 PUT하기
}
/*
* @Overview 최초 실행 함수
* @Parameter 없음
*/
init() {
// field 정의
const fields = [
{ field:"check", title: "선택", width: 50, headerSort: false,
formatter: tb_common_funtions.formatterCheckboxIcon,
formatterParams: { checkval: "Y" },
},
{ formatter:"rownum", field:"file_id", title: "NO", width: 50 },
{ field: "INSP_ITEM", title: "검사 항목", width: 80, editor: "input",
editable:(cell)=>{ let val = cell.getData(); return val._STATUS_ === 'I' },
},
// { field: "", title: "검사명", width: 80, editor: "input" },
{ field: "INSP_METH", title: "측정 방법", width: 80, editor: "input" },
{ field: "ROUT_SQNO", title: "라우팅일련번호", visible:false },
{ field: "INSP_TOOL", title: "측정기", width: 150, editor: "input" },
{ field: "SPEC_UNIT", title: "단위", width: 50, editor: "input" },
{ field: "SPEC_VAL", title: "기준값", width: 100, editor: "input" },
// { field: "", title: "규격유형", width: 100, editor:"list"},
{ field: "TOL_UPPER", title: "상한값", width: 100, editor: "input" },
{ field: "TOL_LOWER", title: "하한값", width: 100, 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, () => {
this.addRow(
Tb_item.tbList.getSelectedData()[0]?.ITEM_CD,
Tb_routing.tbList.getSelectedData()[0]?.ROUT_SQNO,
Tb_routing.tbList.getSelectedData()[0]?.OP_CD
);
});
});
// 삭제 함수
["click", "keypress"].forEach((evt) => {
this.removeBtn.addEventListener(evt, () => {
this.removeRow && this.removeRow();
});
});
}
}
class Tb_pic_class {
constructor(container) {
let _this = this;
_this.file = "";
_this.itemData ="";
this.ajaxUrl = "./item.ajax.php";
_this.download_url = "/include/getFile.php";
this.container = document.querySelector(container);
this.table = this.container.querySelector(".hy-table");
this.addBtn = this.container.querySelector(".add-btn");
this.removeBtn = this.container.querySelector(".remove-btn");
}
// tableBuild 되었을때 getManList
getMainList(clickData) {
let _this = this;
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
ajax_json({
url: this.ajaxUrl,
data: { mode : "getDrawList", ITEM_CD : _this.itemData.ITEM_CD},
success: (data) => {
this.tbList.setData(data.data);
},
error: (req, status, err) => {
kuls_alert(err.message);
},
complete: () => {
window.clearTimeout(talert);
// this.getMainList();
// this.tbList.clearAlert();
// this.setFilter();
},
});
}
setFilter() {}
/*
* @Overview 테이블 행 추가 함수
* @Parameter 없음
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
*/
addRow() {
this.tbList.addRow({ _STATUS_: "I" });
}
/*
* @Overview 테이블 행 삭제 함수
* @Parameter 없음
* @function 선택된 모든 행 STATUS D
*/
removeRow() {
const selectedRows = this.tbList.getRows().filter(row=>{
return row.getData().check ==="Y"
});
if(selectedRows.length > 0 ){
kuls_confirm("삭제","하시겠습니까?", ()=>{
// 선택된 각 행 삭제
selectedRows.forEach((row) => {
// STAUS D로 바꾸기
row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
const rowElement = row.getElement();
rowElement.classList.add("remove-row");
});
})
}else{
kuls_alert("삭제할 행을 선택해주세요.")
}
}
/*
* @Overview 삭제 취소 함수
* @Parameter 삭제 행
* @function 클릭시 삭제 취소 & STATUS를 공란으로 변경
*/
clearRemove(tgt){
if(tgt._row.data._STATUS_ == "D"){
// console.log();
tgt._row.data._STATUS_ = "";
tgt._row.getElement().classList.remove("remove-row")
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
}
}
putTempFile(file){
let _this = this;
let formData = new FormData();
formData.append('upfile', file);
formData.append('mode', "putTempFile");
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
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_NM = 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',
ITEM_CD : Tb_item.tbList.getSelectedData()[0].ITEM_CD,
// nid:_this.parData['SO_NO'],
// sid:_this.parData['SO_SEQ'],
FILE_NM,
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);
},
complete: () => {
window.clearTimeout(talert);
this.getMainList();
// this.tbList.clearAlert();
// this.setFilter();
},
});
return true;
}
putFile(){
let _this = this;
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':'putDraw',
'reqdata': JSON.stringify(rowData),
};
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
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);
},
complete: () => {
window.clearTimeout(talert);
// this.tbList.clearAlert();
// this.setFilter();
},
});
return true;
}
// 클릭 이벤트
rowClick(e, tgt) {
// 삭제가 가능하도록 ROW SELECT
// staus D로 바꾸기?
let _this = this;
if (tgt.isSelected()) {
_this.tbList.deselectRow(tgt._row);
// Tb_process_check.getMainList(clickData);
} else {
_this.tbList.deselectRow();
// _this.tbList.selectRow(clickRow);
}
}
/*
* @Overview 테이블 행 삭제 함수
* @Parameter 없음
* @function 선택된 모든 행 STATUS D
*/
removeRow() {
const selectedRows = this.tbList.getRows().filter(row=>{
return row.getData().check ==="Y"
});
if(selectedRows.length > 0 ){
kuls_confirm("삭제","하시겠습니까?", ()=>{
// 선택된 각 행 삭제
selectedRows.forEach((row) => {
// STAUS D로 바꾸기
row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
const rowElement = row.getElement();
rowElement.classList.add("remove-row");
});
})
}else{
kuls_alert("삭제할 행을 선택해주세요.")
}
}
/*
* @Overview 삭제 취소 함수
* @Parameter 삭제 행
* @function 클릭시 삭제 취소 & STATUS를 공란으로 변경
*/
clearRemove(tgt){
if(tgt._row.data._STATUS_ == "D"){
// console.log();
tgt._row.data._STATUS_ = "";
tgt._row.getElement().classList.remove("remove-row")
// const selectedRows = this.tbList.getSelectedRows(); // 선택된 모든 행 가져오기
}
}
cellClick(e, tgt) {
// 체크박스 클릭
switch (tgt.getField()) {
case "check":
tgt.setValue(tgt.getValue() == "Y" ? "" : "Y");
this.clearRemove(tgt.getRow())
break;
}
}
uploadDraw(e) {
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];
// console.log(event.target.files[0]);
}
// 셀 수정
cellEdited(cell) {
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
}
putData() {
// 사번 중복 확인 및 방지
// _STATUS_ 있는 데이터만 들고와서 PUT하기
}
downloadIcon = function(cell, formatterParams, onRendered){ //plain text value
return "<i class='fa-solid fa-download'></i>";
};
getFileUrl =function(DRAW_NO, SID, FILE_ID, FILE_NM,down){
let urlStr = '/include/getFile.php'+"?gubun=draw&nid="
+ DRAW_NO +
"&sid="+ SID +
"&file_id="+ FILE_ID+
"&name="+FILE_NM
if(down == true){
location.href = urlStr;
}
return urlStr;
}
/*
* @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: "DOWNLOAD", title: "다운로드", width: 100, formatter: this.downloadIcon,
// cellClick:function(e, cell){
// console.log(cell.getRow().getData())
// }
// },
{ field: "DOWNLOAD", title: "다운로드", width: 100, formatter: this.downloadIcon,
cellClick:function(e, cell){
_this.getFileUrl(
cell.getRow().getData().DRAW_NO,
cell.getRow().getData().SID,
cell.getRow().getData().FILE_ID,
cell.getRow().getData().FILE_NM,
true
);
// location.href = '/include/getFile.php'+"?gubun=draw&nid="
// + cell.getRow().getData().DRAW_NO
// + "&sid="+cell.getRow().getData().SID
// + "&file_id="+cell.getRow().getData().FILE_ID
}
},
{ field: "DRAW_VER", title: "버전", width: 100 , editor: "input"},
{ field: "DRAW_NO", title: "도면번호", width: 150, editor: "input" }, //file의 nid이기도 함
{ field: "FILE_NM", title: "파일명", width: 150 },
{ field: "SID", visible:false},
{ field: "FILE_ID", visible:false},
{ field: "MAKE_TM", title: "등록일", width: 100, formatter: (cell)=>{
let dateData = cell.getValue().date.substring(0,10);
if(dateData == '1900-01-01'){
dateData = '';
}
return dateData;
}
},
{ field: "MAKE_USER_ID",title: "등록자", width: 100 },
{ field: "preview", title: "미리보기", width: 80, formatter: Tb_routing.previewIcon,
cellClick:function(e,cell){
pop_filedown(
_this.getFileUrl(
cell.getRow().getData().DRAW_NO,
cell.getRow().getData().SID,
cell.getRow().getData().FILE_ID,
cell.getRow().getData().FILE_NM
), cell.getRow().getData().FILE_NM.split(".").pop()
);
}
},
];
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 && Tb_item.rowClick(e, tgt);
});
// cell 클릭 시에
this.tbList.on("cellClick", (e, tgt) => {
this.cellClick && Tb_item.cellClick(e, tgt);
});
// cell 수정 시에
this.tbList.on("cellEdited", (cell) => {
this.cellEdited && Tb_item.cellEdited(cell);
});
// 추가
// ["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) =>{
this.addBtn.addEventListener(evt,()=> {
let _this = this;
// uploadFile();
});
});
}
}
// document.getElementById('fileInput').addEventListener('change', function() {
// // 파일 정보 가져오기
// var file = this.files[0];
// var fileName = file.name;
// var fileSize = formatBytes(file.size);
// var fileType = file.type || '알 수 없음';
//
// // 파일 정보를 화면에 표시
// document.getElementById('fileName').innerHTML = '파일명: ' + fileName;
// document.getElementById('fileSize').innerHTML = '크기: ' + fileSize;
// document.getElementById('fileType').innerHTML = '유형: ' + fileType;
//
// // 파일 정보를 보여주는 div 요소를 보이도록 설정
// document.getElementById('fileInfo').style.display = 'block';
// });
const Tb_item = new Tb_item_class("#item_ifo_table");
Tb_item.init();
const Tb_routing = new Tb_routing_class("#routing_table");
Tb_routing.init();
const Tb_process_check = new Tb_process_check_class("#process_check_table");
Tb_process_check.init();
const Tb_pic = new Tb_pic_class("#second-tab-container");
Tb_pic.init();
uploadFile=()=> {
// console.log(Tb_item.tbList.getSelectedData()[0]?.ITEM_CD);
if(!Tb_item.tbList.getSelectedData()[0]?.ITEM_CD){
kuls_alert("품목코드를 클릭해주세요");
return false;
}
document.getElementById('file_input').click();
}
document.getElementById('file_input').addEventListener('change', function() {
// 파일 정보 가져오기
var file = this.files[0];
// Tb_pic.file = file;
Tb_pic.putTempFile(file);
});