forked from HANYANG/HANYANG_MES
Compare commits
37 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
5335ab0056 | |
|
|
c97143c1a0 | |
|
|
94adb04cf7 | |
|
|
849a30682b | |
|
|
a4dfa3960e | |
|
|
03f674be78 | |
|
|
b2ef750795 | |
|
|
1e97de071f | |
|
|
d30f753cd1 | |
|
|
c0a293622d | |
|
|
ed862562da | |
|
|
7314c3994d | |
|
|
366cef22cd | |
|
|
a4f95dd24a | |
|
|
401a325a5d | |
|
|
9afc5f8bf8 | |
|
|
260c00791a | |
|
|
edcaf330a0 | |
|
|
e2e762e825 | |
|
|
db7e9af2f8 | |
|
|
2c79c1adf7 | |
|
|
920cfed0ba | |
|
|
6de63d993e | |
|
|
b86ad73742 | |
|
|
ce30b3ce24 | |
|
|
328d1b5f9c | |
|
|
234cf697f2 | |
|
|
6b6f4a7745 | |
|
|
43872a9adf | |
|
|
5d3cdf0839 | |
|
|
b85b1801c1 | |
|
|
07a9a4bd79 | |
|
|
3b7134ad6b | |
|
|
d8f08e6365 | |
|
|
d524e215b5 | |
|
|
6c0ce8ec61 | |
|
|
f4ca1d4cea |
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode
|
||||||
|
|
||||||
|
### VisualStudioCode ###
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
|
||||||
|
### VisualStudioCode Patch ###
|
||||||
|
# Ignore all local history of files
|
||||||
|
.history
|
||||||
|
.ionide
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode
|
||||||
|
|
||||||
|
# just upload home_dir
|
||||||
|
show_dir/*
|
||||||
|
|
@ -375,16 +375,17 @@ class Tb_dept_class {
|
||||||
},
|
},
|
||||||
{ field: "DEPT_NM", title: "부서명", width: 150,
|
{ field: "DEPT_NM", title: "부서명", width: 150,
|
||||||
editor: tb_custom_editor.upper,
|
editor: tb_custom_editor.upper,
|
||||||
|
hozAlign:"left",
|
||||||
validator:{
|
validator:{
|
||||||
type:tb_custom_validator.stringNumeric,
|
type:tb_custom_validator.stringNumeric,
|
||||||
parameters: "특수문자를 입력할 수 없습니다."
|
parameters: "특수문자를 입력할 수 없습니다."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: "PAR_DEPT_CD", title: "상위부서코드", width: 150, cssClass:"editable-cell" },
|
{ field: "PAR_DEPT_CD", title: "상위부서코드", width: 150, cssClass:"editable-cell" },
|
||||||
{ field: "PAR_DEPT_NM", title: "상위부서명", width: 200, },
|
{ field: "PAR_DEPT_NM", title: "상위부서명", width: 200, formatter:function(cell){console.log( this.getWidth());} },
|
||||||
{ field: "BIZ_AREA_CD", title: "사업장코드", width: 150, cssClass:"editable-cell" },
|
{ field: "BIZ_AREA_CD", title: "사업장코드", width: 150, cssClass:"editable-cell" },
|
||||||
{ field: "BIZ_AREA_NM", title: "사업장명", width: 200, },
|
{ field: "BIZ_AREA_NM", title: "사업장명", width: 200, },
|
||||||
{ field: "EMP_NO", title: "관리자", width: 100, cssClass:"editable-cell" },
|
{ field: "EMP_NO", title: "관리자", width: 100, cssClass:"editable-cell", },
|
||||||
{ field: "USE_FLG", title: "사용", width: 50, cssClass: "editable-cell", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval: "Y" }, },
|
{ field: "USE_FLG", title: "사용", width: 50, cssClass: "editable-cell", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval: "Y" }, },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,16 +76,48 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
|
|
||||||
<!-- 테이블 컨테이너 -->
|
<!-- 테이블 컨테이너 -->
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<div class="inner-container">
|
|
||||||
|
|
||||||
<!-- 수평 테이블 컨테이너 시작 -->
|
|
||||||
<div class="flexrow gap20">
|
<!-- 수평 테이블 컨테이너 시작 -->
|
||||||
|
<div class="inner-container flexrow gap20">
|
||||||
|
|
||||||
|
<!-- 테이블 박스 시작 -->
|
||||||
|
<div class="table-box flex-1" id="main_table">
|
||||||
|
<!-- 테이블 헤더(제목, 추가, 삭제) -->
|
||||||
|
<div class="table-title">
|
||||||
|
<p class="title">설비 <span>※ 더블 클릭하면 수정창이 열립니다.</span></p>
|
||||||
|
|
||||||
|
<!-- 버튼 -->
|
||||||
|
<div class="button-box">
|
||||||
|
<button class="add-btn reverse-btn">
|
||||||
|
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
||||||
|
추가
|
||||||
|
</button>
|
||||||
|
<button class="remove-btn reverse-btn">
|
||||||
|
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
||||||
|
삭제
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<!-- 버튼 종료 // -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 헤더 종료 // -->
|
||||||
|
|
||||||
|
<!-- 테이블 -->
|
||||||
|
<div class="tb-height-full">
|
||||||
|
<div class="hy-table"></div>
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 종료 // -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
||||||
|
<div class="flexcol flex-2 gap10">
|
||||||
|
|
||||||
<!-- 테이블 박스 시작 -->
|
<!-- 테이블 박스 시작 -->
|
||||||
<div class="table-box flex-1" id="main_table">
|
<div class="table-box flex-1" id="process_table">
|
||||||
<!-- 테이블 헤더(제목, 추가, 삭제) -->
|
|
||||||
<div class="table-title">
|
<div class="table-title">
|
||||||
<p class="title">설비 <span>※ 더블 클릭하면 수정창이 열립니다.</span></p>
|
<p class="title">공정</p>
|
||||||
|
|
||||||
<!-- 버튼 -->
|
<!-- 버튼 -->
|
||||||
<div class="button-box">
|
<div class="button-box">
|
||||||
|
|
@ -99,54 +131,22 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<!-- 버튼 종료 // -->
|
<!-- 버튼 종료 // -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- 테이블 헤더 종료 // -->
|
|
||||||
|
|
||||||
<!-- 테이블 -->
|
<!-- 테이블 -->
|
||||||
<div class="tb-height-full">
|
<div class="tb-height-half">
|
||||||
<div class="hy-table"></div>
|
<div class="hy-table"></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 테이블 종료 // -->
|
<!-- 테이블 종료 // -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- 테이블 박스 종료 // -->
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
||||||
<div class="flexcol flex-2 gap10">
|
<div class="table-box flex-1" id="repair_table">
|
||||||
|
<!-- 테이블 헤더(제목, 추가, 삭제) -->
|
||||||
|
<div class="table-title">
|
||||||
|
<p class="title">수리내역</p>
|
||||||
|
|
||||||
<!-- 테이블 박스 시작 -->
|
<!-- 버튼 -->
|
||||||
<div class="table-box flex-1" id="process_table">
|
<!-- <div class="button-box">
|
||||||
<div class="table-title">
|
|
||||||
<p class="title">공정</p>
|
|
||||||
|
|
||||||
<!-- 버튼 -->
|
|
||||||
<div class="button-box">
|
|
||||||
<button class="add-btn reverse-btn">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
추가
|
|
||||||
</button>
|
|
||||||
<button class="remove-btn reverse-btn">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
삭제
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<!-- 버튼 종료 // -->
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 -->
|
|
||||||
<div class="tb-height-half">
|
|
||||||
<div class="hy-table"></div>
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 종료 // -->
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
|
|
||||||
<div class="table-box flex-1" id="repair_table">
|
|
||||||
<!-- 테이블 헤더(제목, 추가, 삭제) -->
|
|
||||||
<div class="table-title">
|
|
||||||
<p class="title">수리내역</p>
|
|
||||||
|
|
||||||
<!-- 버튼 -->
|
|
||||||
<!-- <div class="button-box">
|
|
||||||
<button class="add-btn reverse-btn">
|
<button class="add-btn reverse-btn">
|
||||||
<?php //include _SVC_INC_PATH_ . '/img/add.php' ?>
|
<?php //include _SVC_INC_PATH_ . '/img/add.php' ?>
|
||||||
추가
|
추가
|
||||||
|
|
@ -156,22 +156,22 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
삭제
|
삭제
|
||||||
</button>
|
</button>
|
||||||
</div> -->
|
</div> -->
|
||||||
<!-- 버튼 종료 // -->
|
<!-- 버튼 종료 // -->
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 헤더 종료 // -->
|
|
||||||
<!-- 테이블 -->
|
|
||||||
<div class="tb-height-half">
|
|
||||||
<div class="hy-table"></div>
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 테이블 헤더 종료 // -->
|
||||||
|
<!-- 테이블 -->
|
||||||
|
<div class="tb-height-half">
|
||||||
|
<div class="hy-table"></div>
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 종료 // -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- 수평 테이블 컨테이너 종료 // -->
|
<!-- 수평 테이블 컨테이너 종료 // -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -297,12 +297,13 @@ class Tb_insp_class {
|
||||||
},
|
},
|
||||||
{ field: "INSP_NAME", title: "검사항목명", width: 500,
|
{ field: "INSP_NAME", title: "검사항목명", width: 500,
|
||||||
editor: "input",
|
editor: "input",
|
||||||
|
hozAlign:"left",
|
||||||
validator:{
|
validator:{
|
||||||
type:tb_custom_validator.stringNumeric,
|
type:tb_custom_validator.stringNumeric,
|
||||||
parameters: "특수문자를 입력할 수 없습니다."
|
parameters: "특수문자를 입력할 수 없습니다."
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ field: "INSP_METH", title: "검사유형", width: 100, editor:"input"},
|
{ field: "INSP_METH", title: "검사유형",hozAlign:"left", width: 100, editor:"input"},
|
||||||
{ field: "USEFLAG", title: "사용", width: 50, cssClass: "editable-cell", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval: "Y" }, },
|
{ field: "USEFLAG", title: "사용", width: 50, cssClass: "editable-cell", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval: "Y" }, },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -377,10 +378,51 @@ class Tb_insp_class {
|
||||||
this.cellEdited && this.cellEdited(cell);
|
this.cellEdited && this.cellEdited(cell);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//엑셀연결
|
||||||
|
document.getElementById('excel_down').addEventListener('click', function (e) {
|
||||||
|
getExcel2();
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('excel_up').addEventListener('click', function (e) {
|
||||||
|
document.getElementById('fileInput').click();
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('fileInput').addEventListener('change', function (e) {
|
||||||
|
let file = e.target.files[0];
|
||||||
|
if (!file) {
|
||||||
|
console.log('파일이 선택되지 않았습니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let reader = new FileReader();
|
||||||
|
reader.onload = (e) => {
|
||||||
|
let data = e.target.result;
|
||||||
|
let workbook = XLSX.read(data, { type: 'binary' });
|
||||||
|
|
||||||
|
workbook.SheetNames.forEach((sheetName) => {
|
||||||
|
let rows = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], { header:1 });
|
||||||
|
console.log(rows);
|
||||||
|
rows.slice(1).forEach((row,index) => {
|
||||||
|
let rowToAdd = {
|
||||||
|
INSP_ITEM: row[0],
|
||||||
|
INSP_NAME: row[1],
|
||||||
|
INSP_METH: row[2],
|
||||||
|
USEFLAG: row[3],
|
||||||
|
_STATUS_: "I"
|
||||||
|
};
|
||||||
|
console.log('행추가 ', rowToAdd);
|
||||||
|
Tb_insp.tbList.addRow(rowToAdd);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
reader.readAsBinaryString(file);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 추가
|
// 추가
|
||||||
["click", "keypress"].forEach((evt) => {
|
["click", "keypress"].forEach((evt) => {
|
||||||
this.addBtn.addEventListener(evt, () => {
|
this.addBtn.addEventListener(evt, () => {
|
||||||
this.addRow && this.addRow();
|
this.addRow && this.addRow() && this.addRow(rowToAdd);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// 삭제
|
// 삭제
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<div class="button-container">
|
<div class="button-container">
|
||||||
<div class="button-box">
|
<div class="button-box">
|
||||||
<button class="point-btn" id="excel_down">엑셀 다운로드</button>
|
<button class="point-btn" id="excel_down">엑셀 다운로드</button>
|
||||||
|
<input type="file" id="fileInput" style="display: none;" accept=".xlsx, .xls">
|
||||||
<button class="point-btn" id="excel_up">엑셀 업로드</button>
|
<button class="point-btn" id="excel_up">엑셀 업로드</button>
|
||||||
<button class="point-btn" id="filter_btn">조회</button>
|
<button class="point-btn" id="filter_btn">조회</button>
|
||||||
<button class="point-btn" id="put_btn">저장</button>
|
<button class="point-btn" id="put_btn">저장</button>
|
||||||
|
|
@ -98,5 +99,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
|
|
||||||
<?php include_once _SVC_INC_PATH_ . "/footer_common.php"; ?>
|
<?php include_once _SVC_INC_PATH_ . "/footer_common.php"; ?>
|
||||||
<script src="./insp.js"></script>
|
<script src="./insp.js"></script>
|
||||||
|
<script src="./insp_excel.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js"></script>
|
||||||
<?php
|
<?php
|
||||||
include_once _SVC_INC_PATH_ . "/footer.php";
|
include_once _SVC_INC_PATH_ . "/footer.php";
|
||||||
|
|
@ -0,0 +1,127 @@
|
||||||
|
|
||||||
|
let getExcel2 = function (data) {
|
||||||
|
//Todo: 컴퍼넌트. 주석 삭제하지 말자
|
||||||
|
|
||||||
|
let sheet_title = "검사항목";
|
||||||
|
let file_name = "검사항목";
|
||||||
|
|
||||||
|
const work_Book = new ExcelJS.Workbook(); // ExcelJS 라이브러리로 새 워크북 생성
|
||||||
|
const work_Sheet = work_Book.addWorksheet(sheet_title); // 새 워크시트 추가
|
||||||
|
|
||||||
|
const all_border = {
|
||||||
|
top: { style: "thin", color: { argb: "FF000000" } },
|
||||||
|
left: { style: "thin", color: { argb: "FF000000" } },
|
||||||
|
bottom: { style: "thin", color: { argb: "FF000000" } },
|
||||||
|
right: { style: "thin", color: { argb: "FF000000" } },
|
||||||
|
};
|
||||||
|
const field_css = {
|
||||||
|
yellow: {
|
||||||
|
border: all_border,
|
||||||
|
font: { color: { argb: "FF9C5700" }, bold: true },
|
||||||
|
alignment: { vertical: "middle", horizontal: "center" },
|
||||||
|
fill: {
|
||||||
|
type: "pattern",
|
||||||
|
pattern: "solid",
|
||||||
|
fgColor: { argb: "FFFFEB9C" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
green: {
|
||||||
|
border: all_border,
|
||||||
|
font: { color: { argb: "FF006100" }, bold: true },
|
||||||
|
alignment: { vertical: "middle", horizontal: "center" },
|
||||||
|
fill: {
|
||||||
|
type: "pattern",
|
||||||
|
pattern: "solid",
|
||||||
|
fgColor: { argb: "FFC6EFCE" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
red: {
|
||||||
|
border: all_border,
|
||||||
|
font: { color: { argb: "FF9C0006" }, bold: true },
|
||||||
|
alignment: { vertical: "middle", horizontal: "center" },
|
||||||
|
fill: {
|
||||||
|
type: "pattern",
|
||||||
|
pattern: "solid",
|
||||||
|
fgColor: { argb: "FFFFC7CE" },
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
blue: {
|
||||||
|
border: all_border,
|
||||||
|
font: { font: { size: 11 }, color: { argb: "0E3979" }, bold: true },
|
||||||
|
alignment: { vertical: "middle", horizontal: "center" },
|
||||||
|
fill: {
|
||||||
|
type: "pattern",
|
||||||
|
pattern: "solid",
|
||||||
|
fgColor: { argb: "EAEFF3" },
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
font: { size: 15, bold: true },
|
||||||
|
alignment: { vertical: "middle", horizontal: "center" },
|
||||||
|
},
|
||||||
|
box: {
|
||||||
|
border: all_border,
|
||||||
|
alignment: { vertical: "middle", horizontal: "center" },
|
||||||
|
font: { size: 11 },
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// // 첫 번째 행 설정, 높이와 제목 설정
|
||||||
|
|
||||||
|
// let ws_row1 = work_Sheet.getRow(1);
|
||||||
|
// ws_row1.height = 32;
|
||||||
|
// ws_row1.getCell(1).value = "검사항목";
|
||||||
|
// ws_row1.getCell(1).style = field_css.title
|
||||||
|
// work_Sheet.mergeCells('A1:E1');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let ws_row = work_Sheet.getRow(1);
|
||||||
|
ws_row.height = 25;
|
||||||
|
// ws_row.getCell(1).style = field_css.blue;
|
||||||
|
// ws_row.getCell(1).value = "NO.";
|
||||||
|
ws_row.getCell(1).style = field_css.blue;
|
||||||
|
ws_row.getCell(1).value = "검사항목";
|
||||||
|
ws_row.getCell(2).style = field_css.blue;
|
||||||
|
ws_row.getCell(2).value = "검사항목명";
|
||||||
|
ws_row.getCell(3).style = field_css.blue;
|
||||||
|
ws_row.getCell(3).value = "검사유형";
|
||||||
|
ws_row.getCell(4).style = field_css.blue;
|
||||||
|
ws_row.getCell(4).value = "사용";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
work_Sheet.columns = [
|
||||||
|
{ width: 15 },
|
||||||
|
{ width: 30 },
|
||||||
|
{ width: 15 },
|
||||||
|
{ width: 15 },
|
||||||
|
{ width: 9 },
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 파일 생성 및 다운로드 부분
|
||||||
|
|
||||||
|
work_Book.xlsx.writeBuffer().then((data) => {
|
||||||
|
const blob = new Blob([data], {
|
||||||
|
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||||
|
});
|
||||||
|
const url = window.URL.createObjectURL(blob);
|
||||||
|
const anchor = document.createElement("a");
|
||||||
|
anchor.href = url;
|
||||||
|
anchor.download = file_name;
|
||||||
|
anchor.click();
|
||||||
|
window.URL.revokeObjectURL(url);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -13,13 +13,13 @@ class Tb_item_class {
|
||||||
let _this = this;
|
let _this = this;
|
||||||
_this.tbList ="";
|
_this.tbList ="";
|
||||||
_this.itemData = "";
|
_this.itemData = "";
|
||||||
|
_this.ITEM_CD = "";
|
||||||
this.ajaxUrl = "./item.ajax.php";
|
this.ajaxUrl = "./item.ajax.php";
|
||||||
this.container = document.querySelector(container);
|
this.container = document.querySelector(container);
|
||||||
this.table = this.container.querySelector(".hy-table");
|
this.table = this.container.querySelector(".hy-table");
|
||||||
// this.upBtn = this.container.querySelector(".up-btn") || "";
|
// this.upBtn = this.container.querySelector(".up-btn") || "";
|
||||||
// this.downBtn = this.container.querySelector(".down-btn") || "";
|
// this.downBtn = this.container.querySelector(".down-btn") || "";
|
||||||
this.addBtn = this.container.querySelector(".add-btn");
|
this.addBtn = this.container.querySelector(".add-btn");
|
||||||
_this.ITEM_CD = "";
|
|
||||||
this.removeBtn = this.container.querySelector(".remove-btn");
|
this.removeBtn = this.container.querySelector(".remove-btn");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -279,7 +279,7 @@ class Tb_item_class {
|
||||||
},
|
},
|
||||||
{ formatter: "rownum", title: "NO", width: 50 },
|
{ 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_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: "ITEM_NM", title: "품명", width: 250,editor:'input', hozAlign:"left" }, //품목 코드
|
||||||
{ field: "DRAW_NO", title: "도면", width: 200,editor:'input' }, //도면 번호 - popup
|
{ field: "DRAW_NO", title: "도면", width: 200,editor:'input' }, //도면 번호 - popup
|
||||||
{ field: "ITEM_GRP", title: "품목 그룹", width: 80,
|
{ field: "ITEM_GRP", title: "품목 그룹", width: 80,
|
||||||
editor:"list",
|
editor:"list",
|
||||||
|
|
@ -522,7 +522,7 @@ class Tb_routing_class {
|
||||||
|
|
||||||
_this.fileData = JSON.parse(data).data;
|
_this.fileData = JSON.parse(data).data;
|
||||||
|
|
||||||
console.log(_this.fileData);
|
|
||||||
if(rowData._STATUS_ !== "I"){
|
if(rowData._STATUS_ !== "I"){
|
||||||
rowData.FILE_NM = _this.fileData.file_name;
|
rowData.FILE_NM = _this.fileData.file_name;
|
||||||
this.tbList.updateData([
|
this.tbList.updateData([
|
||||||
|
|
@ -546,7 +546,7 @@ class Tb_routing_class {
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(this.tbList.getData());
|
|
||||||
}else{
|
}else{
|
||||||
kuls_alert(data.msg);
|
kuls_alert(data.msg);
|
||||||
}
|
}
|
||||||
|
|
@ -1365,8 +1365,8 @@ class Tb_pic_class {
|
||||||
let _this = this;
|
let _this = this;
|
||||||
_this.file = "";
|
_this.file = "";
|
||||||
_this.itemData ="";
|
_this.itemData ="";
|
||||||
this.ajaxUrl = "./item.ajax.php";
|
|
||||||
_this.download_url = "/include/getFile.php";
|
_this.download_url = "/include/getFile.php";
|
||||||
|
this.ajaxUrl = "./item.ajax.php";
|
||||||
this.container = document.querySelector(container);
|
this.container = document.querySelector(container);
|
||||||
this.table = this.container.querySelector(".hy-table");
|
this.table = this.container.querySelector(".hy-table");
|
||||||
this.addBtn = this.container.querySelector(".add-btn");
|
this.addBtn = this.container.querySelector(".add-btn");
|
||||||
|
|
@ -1501,7 +1501,7 @@ class Tb_pic_class {
|
||||||
},
|
},
|
||||||
complete: () => {
|
complete: () => {
|
||||||
window.clearTimeout(talert);
|
window.clearTimeout(talert);
|
||||||
this.getMainList();
|
|
||||||
// this.tbList.clearAlert();
|
// this.tbList.clearAlert();
|
||||||
// this.setFilter();
|
// this.setFilter();
|
||||||
},
|
},
|
||||||
|
|
@ -1706,11 +1706,11 @@ class Tb_pic_class {
|
||||||
{ field: "SID", visible:false},
|
{ field: "SID", visible:false},
|
||||||
{ field: "FILE_ID", visible:false},
|
{ field: "FILE_ID", visible:false},
|
||||||
{ field: "MAKE_TM", title: "등록일", width: 100, formatter: (cell)=>{
|
{ field: "MAKE_TM", title: "등록일", width: 100, formatter: (cell)=>{
|
||||||
let dateData = cell.getValue().date.substring(0,10);
|
// let dateData = cell.getValue().date.substring(0,10);
|
||||||
if(dateData == '1900-01-01'){
|
// if(dateData == '1900-01-01'){
|
||||||
dateData = '';
|
// dateData = '';
|
||||||
}
|
// }
|
||||||
return dateData;
|
return cell;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: "MAKE_USER_ID",title: "등록자", width: 100 },
|
{ field: "MAKE_USER_ID",title: "등록자", width: 100 },
|
||||||
|
|
|
||||||
|
|
@ -294,12 +294,14 @@ class Tb_facility_class {
|
||||||
{ formatter: "rownum", title: "NO", width: 50},
|
{ formatter: "rownum", title: "NO", width: 50},
|
||||||
{ field: "FACLT_NM", title: "설비", width: 150, editor: "input" , editable:(cell)=>{ let val = cell.getData(); return val._STATUS_ === 'I' },},
|
{ field: "FACLT_NM", title: "설비", width: 150, editor: "input" , editable:(cell)=>{ let val = cell.getData(); return val._STATUS_ === 'I' },},
|
||||||
{ field: "FACLT_CD", visible: false, width: 150},
|
{ field: "FACLT_CD", visible: false, width: 150},
|
||||||
{ field: "DEFECT_DT", title: "고장일자", width: 150,editor:'date', editorParams:{
|
// { field: "DEFECT_DT", title: "발생일", width: 150,editor:'date', editorParams:{
|
||||||
min:"01/01/2000", // the minimum allowed value for the date picker
|
// min:"01/01/2000", // the minimum allowed value for the date picker
|
||||||
max:"02/12/9999", // the maximum allowed value for the date picker
|
// max:"02/12/9999", // the maximum allowed value for the date picker
|
||||||
format:"yyyy-MM-dd", // the format of the date value stored in the cell
|
// format:"yyyy-MM-dd", // the format of the date value stored in the cell
|
||||||
verticalNavigation:"table"}},
|
// verticalNavigation:"table"}},
|
||||||
{ field: "DEFECT_CONTENT", title: "고장내역", width: 150, editor: "input"},
|
// { field: "DEF_TM", title: "발생시간", width: 150, editor: tb_custom_editor.time },
|
||||||
|
{ field: "DEFECT_CONTENT", title: "고장내역", width: 300, editor: "input"},
|
||||||
|
{ field: "DEFECT_DT", title: "발생일", width: 150},
|
||||||
];
|
];
|
||||||
const commonFieldData = {
|
const commonFieldData = {
|
||||||
headerSort: true,
|
headerSort: true,
|
||||||
|
|
|
||||||
|
|
@ -299,11 +299,12 @@ class Tb_facility_class {
|
||||||
{ field: "FACLT_NM", title: "설비", width: 150,editor: "input", editable:(cell)=>{ let val = cell.getData(); return val._STATUS_ === 'I' }, },
|
{ field: "FACLT_NM", title: "설비", width: 150,editor: "input", editable:(cell)=>{ let val = cell.getData(); return val._STATUS_ === 'I' }, },
|
||||||
{ field: "FACLT_CD", visible: false, width: 150},
|
{ field: "FACLT_CD", visible: false, width: 150},
|
||||||
{ field: "REPAIR_NO", visible: false, width: 150},
|
{ field: "REPAIR_NO", visible: false, width: 150},
|
||||||
{ field: "REPAIR_DT", title: "수리일자", width: 150,editor:'date', editorParams: {max:'9999-12-31'} },
|
|
||||||
{ field: "REPAIR_CONTENT", title: "수리내역", width: 150,editor: "input" },
|
{ field: "REPAIR_CONTENT", title: "수리내역", width: 150,editor: "input" },
|
||||||
{ field: "REPAIR_BP_NM", title: "수리업체", width: 100,editor: "input" },
|
{ field: "REPAIR_BP_NM", title: "수리업체", width: 100,editor: "input" },
|
||||||
{ field: "REPAIR_AMT", title: "수리금액", width: 150,editor: "input" },
|
{ field: "REPAIR_AMT", title: "수리금액", width: 150,editor: "input", formatter:"money", formatterParams:{ decimal:".",precision:0 } },
|
||||||
{ field: "REPAIR_TEL_NO", title: "연락처", width: 200,editor: "input"},
|
{ field: "REPAIR_TEL_NO", title: "연락처", width: 200,editor: "input"},
|
||||||
|
// { field: "REPAIR_DT", title: "수리일자", width: 150,editor:'date', editorParams: {max:'9999-12-31'} },
|
||||||
|
{ field: "REPAIR_DT", title: "수리일자", width: 150 }
|
||||||
];
|
];
|
||||||
const commonFieldData = {
|
const commonFieldData = {
|
||||||
headerSort: true,
|
headerSort: true,
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* @Overview 불량실적 등록
|
||||||
|
* @History 2024-04-29 / 김승혁 / 문단정렬
|
||||||
|
*/
|
||||||
|
|
||||||
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
include_once _HOME_INC_PATH_ . "/ajax_init.php";
|
include_once _HOME_INC_PATH_ . "/ajax_init.php";
|
||||||
|
|
||||||
|
|
@ -10,6 +15,7 @@ if (class_exists("SangsengApi")) {
|
||||||
$_REQUEST['mode'] = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : "";
|
$_REQUEST['mode'] = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : "";
|
||||||
switch ($_REQUEST['mode']) {
|
switch ($_REQUEST['mode']) {
|
||||||
|
|
||||||
|
//로그인
|
||||||
case "memberLogin":
|
case "memberLogin":
|
||||||
if (csrf_check('memberLogin')) {
|
if (csrf_check('memberLogin')) {
|
||||||
$retval['mesg'] = cUtil\Mlang::getText("정상적인 접근이 아닙니다.");
|
$retval['mesg'] = cUtil\Mlang::getText("정상적인 접근이 아닙니다.");
|
||||||
|
|
@ -39,45 +45,9 @@ switch ($_REQUEST['mode']) {
|
||||||
unset($_COOKIE['kuls_save_session']);
|
unset($_COOKIE['kuls_save_session']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//토큰
|
||||||
case "getItemList":
|
|
||||||
$sql = "USP_B_ITEM_S20";
|
|
||||||
// $params = Array(
|
|
||||||
// "ITEM_CD" => $_REQUEST['ITEM_CD'],
|
|
||||||
// );
|
|
||||||
$rst = $baseObj->DB->exec($sql, $params);
|
|
||||||
|
|
||||||
$rows = array();
|
|
||||||
if ($rst) {
|
|
||||||
$retval['code'] = 1;
|
|
||||||
while ($row = $baseObj->DB->fetch_array($rst)) {
|
|
||||||
$rows[] = $row;
|
|
||||||
}
|
|
||||||
$retval['data'] = $rows;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "getDefList":
|
|
||||||
$sql = "USP_P_DEF_RSLT_S20";
|
|
||||||
// $params = Array(
|
|
||||||
// "ITEM_CD" => $_REQUEST['ITEM_CD'],
|
|
||||||
// );
|
|
||||||
$rst = $baseObj->DB->exec($sql, $params);
|
|
||||||
$rows = array();
|
|
||||||
if ($rst) {
|
|
||||||
$retval['code'] = 1;
|
|
||||||
while ($row = $baseObj->DB->fetch_array($rst)) {
|
|
||||||
$rows[] = $row;
|
|
||||||
}
|
|
||||||
$retval['data'] = $rows;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case "memberTokenLogin":
|
case "memberTokenLogin":
|
||||||
if (csrf_check('memberLogin')) {
|
if (csrf_check('memberLogin')) {
|
||||||
$retval['mesg'] = cUtil\Mlang::getText("정상적인 접근이 아닙니다.");
|
$retval['mesg'] = cUtil\Mlang::getText("정상적인 접근이 아닙니다.");
|
||||||
|
|
@ -110,16 +80,9 @@ switch ($_REQUEST['mode']) {
|
||||||
$retval['data']['save_id'] = '';
|
$retval['data']['save_id'] = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//로그인
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case "memberJoin":
|
case "memberJoin":
|
||||||
$minfo = $baseObj->getMember($_REQUEST['member_id']);
|
$minfo = $baseObj->getMember($_REQUEST['member_id']);
|
||||||
if (csrf_check('memberJoin')) {
|
if (csrf_check('memberJoin')) {
|
||||||
|
|
@ -151,29 +114,15 @@ switch ($_REQUEST['mode']) {
|
||||||
$retval['code'] = $baseObj->join($ins_row);
|
$retval['code'] = $baseObj->join($ins_row);
|
||||||
$retval['mesg'] = cUtil\Mlang::getText("등록에 실패하였습니다.");
|
$retval['mesg'] = cUtil\Mlang::getText("등록에 실패하였습니다.");
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//로그아웃
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case "memberLogout":
|
case "memberLogout":
|
||||||
$apiObj->pushApi($GLOBALS['_Umem']['member_id'], "종료");
|
$apiObj->pushApi($GLOBALS['_Umem']['member_id'], "종료");
|
||||||
$retval['code'] = $baseObj->logout();
|
$retval['code'] = $baseObj->logout();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//메뉴리스트
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case "getSiteMenuList":
|
case "getSiteMenuList":
|
||||||
$mnuObj = new Menu(TB_menu_list);
|
$mnuObj = new Menu(TB_menu_list);
|
||||||
|
|
||||||
|
|
@ -190,13 +139,12 @@ switch ($_REQUEST['mode']) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//거래처목록
|
||||||
|
|
||||||
case "getPartnerList":
|
case "getPartnerList":
|
||||||
$sql = "USP_B_BIZ_PARTNER_S10";
|
$sql = "USP_B_BIZ_PARTNER_S10";
|
||||||
$params = array(
|
$params = array(
|
||||||
"P_USE_FLG" => "Y",
|
"P_USE_FLG" => "Y",
|
||||||
"P_BP_CD" => "",
|
"P_BP_CD" => "",
|
||||||
"P_PUR_FLG" => "",
|
"P_PUR_FLG" => "",
|
||||||
"P_SAL_FLG" => ""
|
"P_SAL_FLG" => ""
|
||||||
);
|
);
|
||||||
|
|
@ -207,16 +155,16 @@ switch ($_REQUEST['mode']) {
|
||||||
if ($rst) {
|
if ($rst) {
|
||||||
$retval['code'] = 1;
|
$retval['code'] = 1;
|
||||||
while ($row = $baseObj->DB->fetch_array($rst)) {
|
while ($row = $baseObj->DB->fetch_array($rst)) {
|
||||||
// $row['BP_PRSN_CELL_NO'] = $baseObj->lcrypt->dec_secure($row['BP_PRSN_CELL_NO']);
|
// $row['BP_PRSN_CELL_NO'] = $baseObj->lcrypt->dec_secure($row['BP_PRSN_CELL_NO']);
|
||||||
// $row['BP_PRSN_EMAIL'] = $baseObj->lcrypt->dec_secure($row['BP_PRSN_EMAIL']);
|
// $row['BP_PRSN_EMAIL'] = $baseObj->lcrypt->dec_secure($row['BP_PRSN_EMAIL']);
|
||||||
// $row['BP_PRSN_TEL_NO'] = $baseObj->lcrypt->dec_secure($row['BP_PRSN_TEL_NO']);
|
// $row['BP_PRSN_TEL_NO'] = $baseObj->lcrypt->dec_secure($row['BP_PRSN_TEL_NO']);
|
||||||
$rows[] = $row;
|
$rows[] = $row;
|
||||||
}
|
}
|
||||||
$retval['data'] = $rows;
|
$retval['data'] = $rows;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//사업장
|
||||||
case "getBizareaList":
|
case "getBizareaList":
|
||||||
$sql = "USP_B_BIZ_AREA_S10";
|
$sql = "USP_B_BIZ_AREA_S10";
|
||||||
$params = Array(
|
$params = Array(
|
||||||
|
|
@ -224,10 +172,7 @@ switch ($_REQUEST['mode']) {
|
||||||
,"BP_NM" => "" //거래처명
|
,"BP_NM" => "" //거래처명
|
||||||
,"USEFLAG" => 'Y'
|
,"USEFLAG" => 'Y'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
$rst = $baseObj->DB->exec($sql, $params);
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
|
|
||||||
$rows = array();
|
$rows = array();
|
||||||
if ($rst) {
|
if ($rst) {
|
||||||
$retval['code'] = 1;
|
$retval['code'] = 1;
|
||||||
|
|
@ -240,10 +185,57 @@ switch ($_REQUEST['mode']) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
// 사원정보
|
||||||
|
case 'getWorkerList':
|
||||||
|
$squl = "USP_B_EMPLOYEE_S10";
|
||||||
|
$params = Array(
|
||||||
|
"EMP_NO" => "",
|
||||||
|
"P_EMP_NM" => "",
|
||||||
|
"P_DEPT_CD" => "",
|
||||||
|
"P_DEPT_NM" => "",
|
||||||
|
"RET_FLG" => "N"
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($squl,$params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if( $rst ){
|
||||||
|
$retval['code'] = true;
|
||||||
|
while( $row = $baseObj->DB->fetch_array($rst) ){
|
||||||
|
$rows[] = $row;
|
||||||
|
};
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
}else{
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// 부서정보
|
||||||
|
case 'getDeptList':
|
||||||
|
$squl = "USP_B_DEPT_S10";
|
||||||
|
|
||||||
|
$params = Array(
|
||||||
|
"BIZ_AREA_NM" => "",
|
||||||
|
"DEPT_NM" => "",
|
||||||
|
"USE_FLG" => "Y"
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($squl, $params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if ($rst) {
|
||||||
|
$retval['code'] = true;
|
||||||
|
while ($row = $baseObj->DB->fetch_array($rst)) {
|
||||||
|
$rows[] = $row;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
} else {
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
//부서 트리
|
||||||
case "getDeptTree":
|
case "getDeptTree":
|
||||||
$sql = "USP_B_DEPT_HISTORY_S11";
|
$sql = "USP_B_DEPT_HISTORY_S11";
|
||||||
$params = array(
|
$params = array(
|
||||||
|
|
@ -271,62 +263,42 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// 품목 정보
|
||||||
// 사원정보
|
case "getItemList":
|
||||||
case 'getWorkerList':
|
$sql = "USP_B_ITEM_S20";
|
||||||
$squl = "USP_B_EMPLOYEE_S10";
|
$params = Array(
|
||||||
$params = Array(
|
"ITEM_NM" => '',
|
||||||
"EMP_NO" => "",
|
);
|
||||||
"P_EMP_NM" => "",
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
"P_DEPT_CD" => "",
|
|
||||||
"P_DEPT_NM" => "",
|
|
||||||
"RET_FLG" => "N"
|
|
||||||
);
|
|
||||||
$rst = $baseObj->DB->exec($squl,$params);
|
|
||||||
|
|
||||||
$rows = array();
|
|
||||||
if( $rst ){
|
|
||||||
$retval['code'] = true;
|
|
||||||
while( $row = $baseObj->DB->fetch_array($rst) ){
|
|
||||||
$rows[] = $row;
|
|
||||||
};
|
|
||||||
$retval['data'] = $rows;
|
|
||||||
$retval['mesg'] = '정상 동작 되었습니다.';
|
|
||||||
}else{
|
|
||||||
$retval['code'] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
// 부서정보
|
|
||||||
case 'getDeptList':
|
|
||||||
$squl = "USP_B_DEPT_S10";
|
|
||||||
|
|
||||||
$params = Array(
|
|
||||||
"BIZ_AREA_NM" => "",
|
|
||||||
"DEPT_NM" => "",
|
|
||||||
"USE_FLG" => "Y"
|
|
||||||
);
|
|
||||||
$rst = $baseObj->DB->exec($squl, $params);
|
|
||||||
|
|
||||||
$rows = array();
|
$rows = array();
|
||||||
if ($rst) {
|
if ($rst) {
|
||||||
$retval['code'] = true;
|
$retval['code'] = 1;
|
||||||
while ($row = $baseObj->DB->fetch_array($rst)) {
|
while ($row = $baseObj->DB->fetch_array($rst)) {
|
||||||
$rows[] = $row;
|
$rows[] = $row;
|
||||||
}
|
}
|
||||||
;
|
|
||||||
$retval['data'] = $rows;
|
$retval['data'] = $rows;
|
||||||
$retval['mesg'] = '정상 동작 되었습니다.';
|
|
||||||
} else {
|
|
||||||
$retval['code'] = false;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// 생산오더(작업지시)별 공정 정보
|
// 불량실적
|
||||||
|
case "getDefList":
|
||||||
|
$sql = "USP_P_DEF_RSLT_S20";
|
||||||
|
// $params = Array(
|
||||||
|
// "ITEM_CD" => $_REQUEST['ITEM_CD'],
|
||||||
|
// );
|
||||||
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
|
$rows = array();
|
||||||
|
if ($rst) {
|
||||||
|
$retval['code'] = 1;
|
||||||
|
while ($row = $baseObj->DB->fetch_array($rst)) {
|
||||||
|
$rows[] = $row;
|
||||||
|
}
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// 생산오더(작업지시)별 공정 정보
|
||||||
case 'getOrderList':
|
case 'getOrderList':
|
||||||
$squl = "USP_P_WO_S20";
|
$squl = "USP_P_WO_S20";
|
||||||
|
|
||||||
|
|
@ -346,8 +318,7 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// 공정정보
|
||||||
// 공정정보
|
|
||||||
case 'getOperList':
|
case 'getOperList':
|
||||||
$squl = "USP_B_OPERATION_S20";
|
$squl = "USP_B_OPERATION_S20";
|
||||||
$rst = $baseObj->DB->exec($squl);
|
$rst = $baseObj->DB->exec($squl);
|
||||||
|
|
@ -365,6 +336,7 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
$retval['code'] = false;
|
$retval['code'] = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// 특정 품목에 대한 공정정보
|
// 특정 품목에 대한 공정정보
|
||||||
case 'getItemOperList':
|
case 'getItemOperList':
|
||||||
$squl = "USP_B_OPERATION_S30";
|
$squl = "USP_B_OPERATION_S30";
|
||||||
|
|
@ -387,7 +359,7 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// 설비 정보
|
// 설비 정보
|
||||||
case 'getFacilityList':
|
case 'getFacilityList':
|
||||||
$squl = "USP_B_FACILITY_S10";
|
$squl = "USP_B_FACILITY_S10";
|
||||||
$params = Array(
|
$params = Array(
|
||||||
|
|
@ -412,7 +384,7 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// 검사항목 정보
|
// 검사항목 정보
|
||||||
case "getInspList":
|
case "getInspList":
|
||||||
$sql = "USP_B_INSP_ITEM_S10";
|
$sql = "USP_B_INSP_ITEM_S10";
|
||||||
|
|
||||||
|
|
@ -436,26 +408,7 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// 생산실적 오더 공정 정보
|
||||||
case "getBasecodeList":
|
|
||||||
$where = new DB_Where();
|
|
||||||
$where->add("CD.Code_Uid <> ?", $_REQUEST['Bran_Uid']);
|
|
||||||
if ($_REQUEST['Group_Uid']) {
|
|
||||||
$where->add("CD.Code_Uid <> ?", $_REQUEST['Group_Uid']);
|
|
||||||
}
|
|
||||||
$where->add("BR.Active = ?", "Y");
|
|
||||||
$where->add("GR.Active = ?", "Y");
|
|
||||||
$rows = $baseObj->getAllBaseCodeList($_REQUEST['Bran_Uid'], $_REQUEST['Group_Uid'] ?: "", "", $where);
|
|
||||||
|
|
||||||
for ($a = 0; $a < count($rows); $a++) {
|
|
||||||
$rows[$a]['Code_Uid_Old'] = $rows[$a]['Code_Uid'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$retval['code'] = 1;
|
|
||||||
$retval['data'] = $rows;
|
|
||||||
break;
|
|
||||||
|
|
||||||
// 생산실적 오더 공정 정보
|
|
||||||
case 'getRegOrderList':
|
case 'getRegOrderList':
|
||||||
$squl = "USP_P_REG_WO_S20";
|
$squl = "USP_P_REG_WO_S20";
|
||||||
|
|
||||||
|
|
@ -475,7 +428,7 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// 생산실적 설비 정보
|
// 생산실적 설비 정보
|
||||||
case 'getOrderFacilityList':
|
case 'getOrderFacilityList':
|
||||||
$squl = "USP_B_REG_FACILITY_S10";
|
$squl = "USP_B_REG_FACILITY_S10";
|
||||||
|
|
||||||
|
|
@ -495,10 +448,27 @@ $retval['data'] = $mnuObj->tree_by_parent($rows, 'DEPT_CD', 'PAR_DEPT_CD', '');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//기초코드
|
||||||
|
case "getBasecodeList":
|
||||||
|
$where = new DB_Where();
|
||||||
|
$where->add("CD.Code_Uid <> ?", $_REQUEST['Bran_Uid']);
|
||||||
|
if ($_REQUEST['Group_Uid']) {
|
||||||
|
$where->add("CD.Code_Uid <> ?", $_REQUEST['Group_Uid']);
|
||||||
|
}
|
||||||
|
$where->add("BR.Active = ?", "Y");
|
||||||
|
$where->add("GR.Active = ?", "Y");
|
||||||
|
$rows = $baseObj->getAllBaseCodeList($_REQUEST['Bran_Uid'], $_REQUEST['Group_Uid'] ?: "", "", $where);
|
||||||
|
|
||||||
|
for ($a = 0; $a < count($rows); $a++) {
|
||||||
|
$rows[$a]['Code_Uid_Old'] = $rows[$a]['Code_Uid'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$retval['code'] = 1;
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//기초코드
|
||||||
case "putBasecode":
|
case "putBasecode":
|
||||||
|
|
||||||
$_REQUEST['reqdata'] = json_decode($_REQUEST['reqdata']);
|
$_REQUEST['reqdata'] = json_decode($_REQUEST['reqdata']);
|
||||||
$rst = true;
|
$rst = true;
|
||||||
foreach ($_REQUEST['reqdata'] as $data) {
|
foreach ($_REQUEST['reqdata'] as $data) {
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ button {
|
||||||
color: #828282;
|
color: #828282;
|
||||||
background-color: rgba(255, 255, 255, 0.973);
|
background-color: rgba(255, 255, 255, 0.973);
|
||||||
}
|
}
|
||||||
|
|
||||||
.basic-btn {
|
.basic-btn {
|
||||||
border: solid 2px transparent;
|
border: solid 2px transparent;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
@ -78,6 +79,94 @@ button {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-danger {
|
||||||
|
height: 100%;
|
||||||
|
border: solid 2px red;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: red;
|
||||||
|
background-color: white;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: red;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.close-btn {
|
||||||
|
border: solid 2px #cf5b5b;
|
||||||
|
color: white;
|
||||||
|
background-color: #cf5b5b;
|
||||||
|
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: white;
|
||||||
|
color: #cf5b5b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// .run-btn {
|
||||||
|
// border: solid 2px #5b73cf;
|
||||||
|
// color: white;
|
||||||
|
// background-color: #5b73cf;
|
||||||
|
|
||||||
|
// border-radius: 3px;
|
||||||
|
|
||||||
|
// &:hover {
|
||||||
|
// background-color: white;
|
||||||
|
// color: #5b73cf;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// .norun-btn {
|
||||||
|
// border: solid 2px #f3da8f;
|
||||||
|
// color: white;
|
||||||
|
// background-color: #f3da8f;
|
||||||
|
|
||||||
|
// border-radius: 3px;
|
||||||
|
|
||||||
|
// &:hover {
|
||||||
|
// background-color: white;
|
||||||
|
// color: #f3da8f;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
.disabled-btn, button[disabled] {
|
||||||
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
|
color: #dddddd !important;
|
||||||
|
border-color: #e9e9e9 !important;
|
||||||
|
cursor: default !important;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
|
color: #dddddd !important;
|
||||||
|
border-color: #e9e9e9 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-btn {
|
||||||
|
background-color: white;
|
||||||
|
color: black;
|
||||||
|
border: solid 1px $gray-004;
|
||||||
|
height: 30px;
|
||||||
|
width: 25%;
|
||||||
|
border-right: none;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
text-wrap: nowrap;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $gray-004;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.left-round{
|
||||||
|
border-radius: 50px 0px 0px 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-round{
|
||||||
|
border-radius: 0px 50px 50px 0px;
|
||||||
|
border-right: solid 1px $gray-004;
|
||||||
|
}
|
||||||
|
|
||||||
// 전체 프레임
|
// 전체 프레임
|
||||||
.have-image {
|
.have-image {
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
|
@ -89,68 +178,154 @@ button {
|
||||||
height: calc(100vh - 48px);
|
height: calc(100vh - 48px);
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
position: relative;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.container .main-part {
|
.container .main-part {
|
||||||
width: calc(100% - 280px);
|
width: calc(100% - 280px);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
display: flex;
|
||||||
top: 0;
|
flex-direction: column;
|
||||||
right: 0;
|
}
|
||||||
|
|
||||||
|
.breadcrumb {
|
||||||
|
.inner-container {
|
||||||
|
padding: 20px 15px;
|
||||||
|
|
||||||
|
a, i {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:nth-of-type(3) {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #1F2859;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// item 탭메뉴
|
|
||||||
.sub-container {
|
.sub-container {
|
||||||
width: 49%;
|
width: 49%;
|
||||||
height: calc(100% - 25px);
|
height: calc(100% - 25px);
|
||||||
|
|
||||||
.tab-menu {
|
.button-box {
|
||||||
gap: 5px;
|
&.main-table {
|
||||||
margin-bottom: 10px;
|
display: flex;
|
||||||
border-bottom: solid 2px $blue-005;
|
}
|
||||||
|
|
||||||
li {
|
&.sub-table {
|
||||||
border-left: solid 2px $blue-005;
|
|
||||||
border-right: solid 2px $blue-005;
|
|
||||||
border-top: solid 2px $blue-005;
|
|
||||||
border-radius: 5px 5px 0px 0px;
|
|
||||||
padding: 10px 12px;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
.first-tab {
|
|
||||||
background-color: $blue-005;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.first-table-container {
|
|
||||||
display: flex;
|
|
||||||
height: calc(100% - 20px);
|
|
||||||
}
|
|
||||||
.second-table-container {
|
|
||||||
display: none;
|
|
||||||
height: calc(100% - 20px);
|
|
||||||
}
|
|
||||||
&.on {
|
|
||||||
.first-tab {
|
|
||||||
background-color: white;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
.second-tab {
|
|
||||||
background-color: $blue-005;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.first-table-container {
|
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.second-table-container {
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-menu {
|
||||||
|
gap: 5px;
|
||||||
|
border-bottom: solid 2px #162788;
|
||||||
|
|
||||||
|
li {
|
||||||
|
border-left: solid 2px #162788;
|
||||||
|
border-right: solid 2px #162788;
|
||||||
|
border-top: solid 2px #162788;
|
||||||
|
border-radius: 5px 5px 0 0;
|
||||||
|
padding: 7px 12px;
|
||||||
|
background-color: white;
|
||||||
|
color: #162788;
|
||||||
|
|
||||||
|
min-width: 80px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&:hover{
|
||||||
|
background-color: #162788;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.on {
|
||||||
|
background-color: #162788;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tab-container {
|
||||||
|
height: 98%;
|
||||||
|
|
||||||
|
|
||||||
|
> div {
|
||||||
|
display: none;
|
||||||
|
height: calc(100vh - 320px);
|
||||||
|
|
||||||
|
.table-box:first-of-type, .tab-box:first-of-type {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.table-title {
|
||||||
|
position: absolute;
|
||||||
|
top: -35px;
|
||||||
|
right: 0;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.on {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// item 탭메뉴
|
||||||
|
// .sub-container {
|
||||||
|
// width: 49%;
|
||||||
|
// height: calc(100% - 25px);
|
||||||
|
|
||||||
|
// .tab-menu {
|
||||||
|
// gap: 5px;
|
||||||
|
// margin-bottom: 10px;
|
||||||
|
// border-bottom: solid 2px $blue-005;
|
||||||
|
|
||||||
|
// li {
|
||||||
|
// border-left: solid 2px $blue-005;
|
||||||
|
// border-right: solid 2px $blue-005;
|
||||||
|
// border-top: solid 2px $blue-005;
|
||||||
|
// border-radius: 5px 5px 0px 0px;
|
||||||
|
// padding: 10px 12px;
|
||||||
|
// color: black;
|
||||||
|
// }
|
||||||
|
// .first-tab {
|
||||||
|
// background-color: $blue-005;
|
||||||
|
// color: white;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// .first-table-container {
|
||||||
|
// display: flex;
|
||||||
|
// height: calc(100% - 20px);
|
||||||
|
// }
|
||||||
|
// .second-table-container {
|
||||||
|
// display: none;
|
||||||
|
// height: calc(100% - 20px);
|
||||||
|
// }
|
||||||
|
// &.on {
|
||||||
|
// .first-tab {
|
||||||
|
// background-color: white;
|
||||||
|
// color: black;
|
||||||
|
// }
|
||||||
|
// .second-tab {
|
||||||
|
// background-color: $blue-005;
|
||||||
|
// color: white;
|
||||||
|
// }
|
||||||
|
// .first-table-container {
|
||||||
|
// display: none;
|
||||||
|
// }
|
||||||
|
// .second-table-container {
|
||||||
|
// display: flex;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
// 메인 프레임
|
// 메인 프레임
|
||||||
.table-title {
|
.table-title {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -166,7 +341,7 @@ button {
|
||||||
}
|
}
|
||||||
|
|
||||||
.contents-container {
|
.contents-container {
|
||||||
height: calc(100vh - 140px);
|
height: calc(100vh - 235px);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
&.full-height {
|
&.full-height {
|
||||||
|
|
@ -175,7 +350,7 @@ button {
|
||||||
|
|
||||||
.table-container {
|
.table-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100% - 40px);
|
height: 98%;
|
||||||
margin: 10px 0 30px 0;
|
margin: 10px 0 30px 0;
|
||||||
|
|
||||||
.inner-container {
|
.inner-container {
|
||||||
|
|
@ -210,13 +385,16 @@ button {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 98%;
|
height: 98%;
|
||||||
}
|
}
|
||||||
.flexrow {
|
.sub-table, .inner-container{
|
||||||
width: 100%;
|
|
||||||
> .table-box {
|
&.flexrow {
|
||||||
width: 49%;
|
width: 100%;
|
||||||
}
|
> .table-box {
|
||||||
> .flexcol {
|
width: 49%;
|
||||||
width: 49%;
|
}
|
||||||
|
> .flexcol {
|
||||||
|
width: 49%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.flexcol {
|
.flexcol {
|
||||||
|
|
@ -232,3 +410,46 @@ button {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tb-height-full {
|
||||||
|
height: calc(100vh - 320px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tb-height-half {
|
||||||
|
height: calc(50vh - 205px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tb-height-30 {
|
||||||
|
height: calc(100vh - 600px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.label-tag{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 25px;
|
||||||
|
width: 60px;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
span{
|
||||||
|
width: 6px;
|
||||||
|
height: 100%;
|
||||||
|
margin-right: 9px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.blue-back{
|
||||||
|
background-color: #d2e7ff;
|
||||||
|
}
|
||||||
|
.green-back{
|
||||||
|
background-color: #d2ffd5;
|
||||||
|
}
|
||||||
|
.orange-back{
|
||||||
|
background-color: #ffe0d2;
|
||||||
|
}
|
||||||
|
.gray-back{
|
||||||
|
background-color: #d9d9d9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.min-width-572{
|
||||||
|
min-width: 572px;
|
||||||
|
}
|
||||||
|
|
@ -1,92 +1,310 @@
|
||||||
// form 관련 css
|
// 원기씨 바보바 대리님도 바보바보
|
||||||
// form.flexrow {
|
|
||||||
// .text-container {
|
|
||||||
// width: 100%;
|
|
||||||
// overflow-y: auto;
|
|
||||||
|
|
||||||
// .row-input-box {
|
form {
|
||||||
// width: fit-content;
|
height: 100%;
|
||||||
|
|
||||||
// input {
|
// 현장 작업자 실적등록 팝업
|
||||||
// height: 15px;
|
&[name=frmWorkData]{
|
||||||
// }
|
width: 80vw;
|
||||||
// .width-15 {
|
|
||||||
// width: 15%;
|
|
||||||
// min-width: 65px;
|
|
||||||
// }
|
|
||||||
// .width-30 {
|
|
||||||
// width: 30%;
|
|
||||||
// min-width: 140px;
|
|
||||||
// }
|
|
||||||
// label {
|
|
||||||
// min-width: 55px;
|
|
||||||
// width: 12%;
|
|
||||||
// display: block;
|
|
||||||
// padding: 5px;
|
|
||||||
// text-wrap: nowrap;
|
|
||||||
// text-align: end;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// .img-container {
|
|
||||||
// width: 400px;
|
|
||||||
// border: solid 1px black;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
.input-box{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
span{
|
||||||
|
position: absolute;
|
||||||
|
right: 15px;
|
||||||
|
top: 30%;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
i{
|
||||||
|
font-size: 1.2em;
|
||||||
|
color: $gray-004;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&>div{
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&.form-button-container{
|
||||||
|
height: fit-content;
|
||||||
|
padding: 10px 0px;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
.form-button-box{
|
||||||
|
// width: 50%;
|
||||||
|
|
||||||
|
button{
|
||||||
|
border-radius: 50px;
|
||||||
|
border: solid 2px $blue-001;
|
||||||
|
color: $blue-001;
|
||||||
|
font-size: 1.1em;
|
||||||
|
font-weight: 600;
|
||||||
|
|
||||||
|
background-color: white;
|
||||||
|
min-width: 140px;
|
||||||
|
padding: 10px 14px;
|
||||||
|
text-wrap: nowrap;
|
||||||
|
|
||||||
|
&:hover, &.on{
|
||||||
|
background-color: $blue-001;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
// width: fit-content;
|
||||||
|
// padding: 0px 10px;
|
||||||
|
// height: 32px;
|
||||||
|
|
||||||
|
// border: solid 2px $blue-005;
|
||||||
|
// border-bottom: none;
|
||||||
|
// border-radius: 5px 5px 0 0;
|
||||||
|
// background: white;
|
||||||
|
|
||||||
|
// color: $blue-005;
|
||||||
|
// font-size: 13px;
|
||||||
|
// font-weight: 600;
|
||||||
|
|
||||||
|
// &:hover, &.on{
|
||||||
|
// background: $blue-005;
|
||||||
|
// color: white;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
form{
|
}
|
||||||
.add-btn, .remove-btn{
|
|
||||||
|
&.form-contents{
|
||||||
|
.info-container{
|
||||||
|
min-height: 510px;
|
||||||
|
height: 80vh;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.detail-container{
|
||||||
|
min-height: 510px;
|
||||||
|
height: 80vh;
|
||||||
|
width: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.detail-contents{
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.form-header{
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
textarea{
|
||||||
|
height: 100px;
|
||||||
|
resize: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-btn{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.table-box{
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - 70px);
|
||||||
|
|
||||||
|
&>div{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.tab-menu{
|
||||||
|
width: 100%;
|
||||||
|
height: fit-content;
|
||||||
|
// border: none;
|
||||||
|
|
||||||
|
li{
|
||||||
|
height: 34px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
// border-radius: 50px;
|
||||||
|
// border: solid 2px $blue-001;
|
||||||
|
|
||||||
|
// &:hover{
|
||||||
|
// background-color: $blue-001;
|
||||||
|
// }
|
||||||
|
// &.on{
|
||||||
|
// background-color: $blue-001;
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.table-title{
|
||||||
|
width: 99%;
|
||||||
|
|
||||||
|
.button-box{
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hy-table{
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.height-full{
|
||||||
|
height: 100% !important;
|
||||||
|
}
|
||||||
|
.height-93{
|
||||||
|
height: 93% !important;
|
||||||
|
}
|
||||||
|
.height-half{
|
||||||
|
height: calc(100% - 220px) !important;
|
||||||
|
}
|
||||||
|
.round-tab-box{
|
||||||
|
width: calc(100% - 120px);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 설비관리 대장 팝업
|
||||||
|
&[name=frmFacility]{
|
||||||
|
width: 800px;
|
||||||
|
height: 525px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 거래처 등록 팝업
|
||||||
|
&[name=frmPartner]{
|
||||||
|
width: 800px;
|
||||||
|
min-height: 525px;
|
||||||
|
height: 70vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-btn, .remove-btn {
|
||||||
padding: 7px 12px;
|
padding: 7px 12px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-contents{
|
.form-contents {
|
||||||
padding-top: 20px;
|
height: 70% !important;
|
||||||
height: auto !important;
|
overflow: hidden;
|
||||||
|
|
||||||
.form-box{
|
.form-box {
|
||||||
padding-bottom: 20px;
|
overflow: auto;
|
||||||
border-bottom: solid 1px;
|
background: #F6F6FC;
|
||||||
|
height: 100%;
|
||||||
|
padding: 20px 0px;
|
||||||
|
|
||||||
.input-container{
|
.input-container {
|
||||||
width: 100%;
|
width: calc(100% - 10px);
|
||||||
|
height: -moz-fit-content;
|
||||||
|
height: fit-content;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
||||||
.input-box{
|
.input-box {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: -moz-fit-content;
|
||||||
|
height: fit-content;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
label, .input-title{
|
label, .input-title {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
text-align: justify;
|
|
||||||
width: 100px;
|
width: 100px;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
text-align: end;
|
||||||
:after{
|
|
||||||
content: "";
|
|
||||||
width: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
.check-label{
|
input[type=button]{
|
||||||
|
width: 80px;
|
||||||
|
margin: 0 15px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
label.form_toggle, .input-title.form_toggle {
|
||||||
|
text-align: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.check-label {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
label{
|
label {
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
input[type="text"], select{
|
|
||||||
|
input[type=text], input[type=tel], input[type=datetime-local], select, textarea {
|
||||||
|
border: solid 1px #c7c7c7;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
width: calc(100% - 120px);
|
width: calc(100% - 120px);
|
||||||
|
min-width: 100px;
|
||||||
padding: 0px 10px;
|
padding: 0px 10px;
|
||||||
|
|
||||||
|
&.sub-input{
|
||||||
|
width: calc(100% - 6px);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-text{
|
||||||
|
width: calc(50% - 65px) !important;
|
||||||
|
text-align: center;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-container {
|
||||||
|
padding-right: 10px;
|
||||||
|
height: 100%;
|
||||||
|
gap: 5%;
|
||||||
|
|
||||||
|
.img-box {
|
||||||
|
height: 85%;
|
||||||
|
width: calc(100% - 2px);
|
||||||
|
border: solid 1px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
position: relative;
|
||||||
|
background-color: white;
|
||||||
|
|
||||||
|
.img-cover {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: rgba(8, 8, 8, 0.322);
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
input {
|
||||||
|
width: 30%;
|
||||||
|
height: 10%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover .img-cover {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
height: 10%;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
|
||||||
|
input {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -105,6 +323,7 @@ form{
|
||||||
|
|
||||||
&:hover{
|
&:hover{
|
||||||
background: white;
|
background: white;
|
||||||
|
border: solid 2px #f38814 !important;
|
||||||
color: #f38814;
|
color: #f38814;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,85 +1,124 @@
|
||||||
#awn-popup-wrapper{
|
#awn-popup-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|
||||||
background: rgba(0, 0, 0, 0.7);
|
background: rgba(0, 0, 0, 0.7);
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
.awn-popup-body{
|
.awn-popup-body {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
box-shadow: 0px 0px 11px 0px rgba(0, 0, 0, 0.20);
|
box-shadow: 0px 0px 11px 0px rgba(0, 0, 0, 0.2);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
max-width: 833px;
|
// max-width: 833px;
|
||||||
min-width: 500px;
|
max-width: max-content;
|
||||||
height: 531px;
|
// min-width: 500px;
|
||||||
|
// min-height: 531px;
|
||||||
|
// max-height: fit-content;
|
||||||
|
// height: 80vh;
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
|
|
||||||
.awn-popup-confirm{
|
&>div{
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow-y: auto;
|
|
||||||
overflow-x: hidden;
|
|
||||||
|
|
||||||
.awn-popup-title{
|
.awn-form{
|
||||||
|
|
||||||
|
.awn-popup-search{
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.table-box{
|
||||||
|
padding: 0 10px;
|
||||||
|
width: calc(100% - 20px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.awn-popup-confirm.custom-popup {
|
||||||
|
height: 500px;
|
||||||
|
min-width: 500px;
|
||||||
|
// overflow-y: auto;
|
||||||
|
// overflow-x: hidden;
|
||||||
|
overflow: hidden;
|
||||||
|
&.free-height{
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
// &.free-width{
|
||||||
|
// width: auto;
|
||||||
|
// }
|
||||||
|
|
||||||
|
.awn-popup-title {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
i{
|
|
||||||
|
i {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.awn-popup-search{
|
|
||||||
|
|
||||||
.s_exp{
|
.awn-popup-search {
|
||||||
|
|
||||||
|
|
||||||
|
.s_exp {
|
||||||
margin: 0 0 10px 0;
|
margin: 0 0 10px 0;
|
||||||
color: $blue-004;
|
color: #1F2859;
|
||||||
}
|
}
|
||||||
.s_fld{
|
|
||||||
|
.s_fld {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
height: 32px;
|
height: 32px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|
||||||
select, input{
|
select, input {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
border: 1px solid $gray-003;
|
border: 1px solid #D9D9D9;
|
||||||
}
|
}
|
||||||
.btn-danger{
|
|
||||||
height: 100%;
|
|
||||||
border: solid 2px red;
|
|
||||||
border-radius: 3px;
|
|
||||||
color: red;
|
|
||||||
background-color: white;
|
|
||||||
|
|
||||||
&:hover{
|
|
||||||
background-color: red;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.awn-popup-content{
|
|
||||||
|
.title-container{
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
.awn-popup-content {
|
||||||
max-height: 430px;
|
max-height: 430px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
padding: 0 10px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
.tabulator.hy-table{}
|
|
||||||
|
.tabulator.hy-table{
|
||||||
|
height: 85%;;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.form-contents{
|
||||||
|
height: 90% !important;
|
||||||
|
overflow: auto;
|
||||||
|
|
||||||
|
.form-box{
|
||||||
|
height: fit-content;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#awn-popup-wrapper .awn-popup-body.awn-popup-confirm{
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -161,5 +200,5 @@
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
.table-header .button-container{
|
.table-header .button-container{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: end;
|
justify-content: flex-end;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -100,7 +100,5 @@
|
||||||
|
|
||||||
// table container
|
// table container
|
||||||
.table-container .button-box{
|
.table-container .button-box{
|
||||||
justify-content: end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,35 +3,56 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
border-right: solid 1px #e9e9e9;
|
||||||
border-right: solid 1px $gray-002;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
background: white;
|
background: white;
|
||||||
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.container.on {
|
.container.on .side-nav {
|
||||||
.side-nav {
|
width: 88px;
|
||||||
width: 88px;
|
overflow-y: visible;
|
||||||
|
align-items: center;
|
||||||
.fold-btn-container {
|
}
|
||||||
padding-left: 25%;
|
.container.on .side-nav .side-menu ul.fancytree-plain.fancytree-container {
|
||||||
width: auto;
|
position: static;
|
||||||
|
}
|
||||||
.fold-btn {
|
.container.on .side-nav .side-menu ul.fancytree-plain.fancytree-container > li {
|
||||||
transform: rotate(180deg);
|
position: relative;
|
||||||
}
|
}
|
||||||
}
|
.container.on .side-nav .side-menu ul.fancytree-plain.fancytree-container > li span.fancytree-expander, .container.on .side-nav .side-menu ul.fancytree-plain.fancytree-container > li span.fancytree-title {
|
||||||
}
|
display: none;
|
||||||
|
}
|
||||||
.main-part{
|
.container.on .side-nav .side-menu ul.fancytree-plain.fancytree-container > li span.fancytree-custom-icon {
|
||||||
width: calc(100% - 88px);
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
.container.on .side-nav .side-menu ul.fancytree-plain.fancytree-container > li ul {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
left: 56px;
|
||||||
|
top: 0;
|
||||||
|
width: 250px;
|
||||||
|
background: #e9e9e9;
|
||||||
|
z-index: 2;
|
||||||
|
min-height: 52px;
|
||||||
|
max-height: 294px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
.container.on .side-nav .side-menu ul.fancytree-plain.fancytree-container > li ul li span.fancytree-title {
|
||||||
|
color: black;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.container.on .side-nav .fold-btn-container {
|
||||||
|
margin: 0 0 30px 0;
|
||||||
|
padding-left: 0;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.container.on .side-nav .fold-btn-container .fold-btn {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.container.on .main-part {
|
||||||
|
width: calc(100% - 88px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-nav .fold-btn-container {
|
.side-nav .fold-btn-container {
|
||||||
|
|
@ -52,126 +73,66 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-nav .side-menu{
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container {
|
||||||
|
border: none;
|
||||||
ul.fancytree-plain.fancytree-container{
|
padding: 0px;
|
||||||
border: none;
|
|
||||||
padding: 0px;
|
|
||||||
|
|
||||||
> li > span{
|
|
||||||
border-bottom: solid 1px $gray-002;
|
|
||||||
}
|
|
||||||
li {
|
|
||||||
min-height: 72px;
|
|
||||||
|
|
||||||
|
|
||||||
> span{
|
|
||||||
height: 72px;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
&:hover, &:active{
|
|
||||||
span.fancytree-title{
|
|
||||||
color: #3c3c3c;
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
> span{
|
|
||||||
// 글자
|
|
||||||
color: #3c3c3c;
|
|
||||||
font-size: 15px;
|
|
||||||
|
|
||||||
// 아이콘
|
|
||||||
&.fancytree-custom-icon{
|
|
||||||
color: #98A7FA;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 활성화된 메뉴
|
|
||||||
&.fancytree-node.fancytree-active{
|
|
||||||
|
|
||||||
span.fancytree-title{
|
|
||||||
color: #3c3c3c;
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover, &:active{
|
|
||||||
span.fancytree-title{
|
|
||||||
color: #3c3c3c;
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 서브 메뉴
|
|
||||||
ul{
|
|
||||||
padding: 0px;
|
|
||||||
|
|
||||||
li{
|
|
||||||
min-height: 48px;
|
|
||||||
border-bottom: 1px solid $blue-003;
|
|
||||||
|
|
||||||
> span{
|
|
||||||
height: 48px;
|
|
||||||
width: fit-content;
|
|
||||||
padding-left: 1.5em;
|
|
||||||
span.fancytree-title{
|
|
||||||
font-size: 14px;
|
|
||||||
color: $blue-001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover{
|
|
||||||
background-color: $blue-003;
|
|
||||||
|
|
||||||
span.fancytree-title{
|
|
||||||
color: $blue-001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container > li > span {
|
||||||
|
border-bottom: solid 1px #e9e9e9;
|
||||||
|
|
||||||
.side-nav .side-menu {
|
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li {
|
||||||
.side-nav .side-menu ul {
|
min-height: 72px;
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li > span {
|
||||||
.side-nav .side-menu ul li {
|
height: 72px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li > span:hover span.fancytree-title, .side-nav .side-menu ul.fancytree-plain.fancytree-container li > span:active span.fancytree-title {
|
||||||
.side-nav .side-menu ul li span {
|
color: #3c3c3c;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li > span > span {
|
||||||
.side-nav .side-menu > ul {
|
color: #3c3c3c;
|
||||||
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li > span > span.fancytree-custom-icon {
|
||||||
.side-nav .side-menu > ul li span{
|
color: #98A7FA;
|
||||||
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li > span.fancytree-node.fancytree-active span.fancytree-title {
|
||||||
.side-nav .side-menu > ul li.on {
|
color: #3c3c3c;
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li > span.fancytree-node.fancytree-active:hover span.fancytree-title, .side-nav .side-menu ul.fancytree-plain.fancytree-container li > span.fancytree-node.fancytree-active:active span.fancytree-title {
|
||||||
|
color: #3c3c3c;
|
||||||
|
background-color: transparent;
|
||||||
.side-nav .side-menu > ul > li > ul {
|
border: none;
|
||||||
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li ul {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li ul li {
|
||||||
|
min-height: 48px;
|
||||||
|
border-bottom: 1px solid #E1E4F9;
|
||||||
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li ul li > span {
|
||||||
|
height: 48px;
|
||||||
|
width: -moz-fit-content;
|
||||||
|
width: fit-content;
|
||||||
|
padding-left: 1.5em;
|
||||||
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li ul li > span span.fancytree-title {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #4A5ED2;
|
||||||
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li ul li:hover {
|
||||||
|
background-color: #E1E4F9;
|
||||||
|
}
|
||||||
|
.side-nav .side-menu ul.fancytree-plain.fancytree-container li ul li:hover span.fancytree-title {
|
||||||
|
color: #4A5ED2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-nav .side-menu > ul > li > ul > li {
|
.side-nav .side-menu > ul > li > ul > li {
|
||||||
|
|
@ -179,7 +140,34 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-nav .side-menu > ul > li > ul > li > span {
|
.side-nav .side-menu > ul > li > ul > li > span {
|
||||||
color: $blue-001;
|
color: #4A5ED2;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.menu-icon {
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
.menu-icon.base-icon {
|
||||||
|
background-image: url("../img/icon-shield.png");
|
||||||
|
}
|
||||||
|
.menu-icon.filed-icon {
|
||||||
|
background-image: url("../img/icon-industry.png");
|
||||||
|
}
|
||||||
|
.menu-icon.production-icon {
|
||||||
|
background-image: url("../img/icon-engineering.png");
|
||||||
|
}
|
||||||
|
.menu-icon.system-icon {
|
||||||
|
background-image: url("../img/icon-gear.png");
|
||||||
|
}
|
||||||
|
.menu-icon.insp-icon {
|
||||||
|
background-image: url("../img/icon-clipboard.svg");
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
margin-left: 0.6em;
|
||||||
|
}
|
||||||
|
.menu-icon.facility-icon {
|
||||||
|
background-image: url("../img/icon-cone.svg");
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,9 @@
|
||||||
// 테이블 행
|
// 테이블 행
|
||||||
.tabulator-row{
|
.tabulator-row{
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-bottom: solid 1px $gray-002;
|
border: solid 0.5px $gray-002;
|
||||||
|
border-left: solid 0.5px transparent;
|
||||||
|
border-right: solid 0.5px transparent;
|
||||||
|
|
||||||
&:hover{
|
&:hover{
|
||||||
background-color: $gray-003;
|
background-color: $gray-003;
|
||||||
|
|
@ -43,12 +45,27 @@
|
||||||
&.remove-row{
|
&.remove-row{
|
||||||
background-color: $red;
|
background-color: $red;
|
||||||
}
|
}
|
||||||
|
&.edit-row{
|
||||||
|
background-color: #d2ddff;
|
||||||
|
}
|
||||||
|
&.blank-row{
|
||||||
|
border: solid 0.5px red
|
||||||
|
}
|
||||||
|
|
||||||
.tabulator-cell{
|
.tabulator-cell{
|
||||||
border-right: solid 1px $gray-002;
|
border-right: solid 1px $gray-002;
|
||||||
|
|
||||||
|
// &.tabulator-editable{
|
||||||
|
// background-color: transparent ;
|
||||||
|
// &::after{
|
||||||
|
// content: "";
|
||||||
|
|
||||||
|
// }
|
||||||
|
// &:hover{
|
||||||
|
// background-color: $gray-003;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
&.editable-cell, &.tabulator-editable{
|
&.editable-cell, &.tabulator-editable{
|
||||||
// background-color: rgba(221, 221, 255, 0.548) ;
|
|
||||||
background-color: rgba(255, 253, 221, 0.548) ;
|
background-color: rgba(255, 253, 221, 0.548) ;
|
||||||
&::after{
|
&::after{
|
||||||
content: "◥";
|
content: "◥";
|
||||||
|
|
@ -86,7 +103,7 @@
|
||||||
|
|
||||||
&.tabulator-col-group{
|
&.tabulator-col-group{
|
||||||
.tabulator-col-group-cols{
|
.tabulator-col-group-cols{
|
||||||
border-top: solid 1px $gray-002;
|
border-top: solid 1px $gray-004;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -186,7 +203,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.tb-height-full .cont_hfix{
|
.tb-height-full .cont_hfix{
|
||||||
height: calc(100% - 43px);
|
height: calc(100% - 44px);
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
@ -238,6 +255,13 @@
|
||||||
}
|
}
|
||||||
.vue-table {
|
.vue-table {
|
||||||
width: 3000px;
|
width: 3000px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
thead{
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
th{
|
th{
|
||||||
min-width: auto;
|
min-width: auto;
|
||||||
|
|
@ -261,6 +285,12 @@
|
||||||
&.width-200{
|
&.width-200{
|
||||||
width: 200px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
&.width-230{
|
||||||
|
width: 230px;
|
||||||
|
}
|
||||||
|
&.width-800{
|
||||||
|
width: 800px;
|
||||||
|
}
|
||||||
.tabulator-col-group-cols{
|
.tabulator-col-group-cols{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
@ -301,3 +331,26 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.status-table.vue-table{
|
||||||
|
colgroup{
|
||||||
|
col{}
|
||||||
|
}
|
||||||
|
thead{
|
||||||
|
tr{
|
||||||
|
th{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody{
|
||||||
|
tr{
|
||||||
|
td{
|
||||||
|
&.on{
|
||||||
|
background-color: $gray-002;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
.login-section {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container {
|
||||||
|
display: flex;
|
||||||
|
gap: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .image-container {}
|
||||||
|
|
||||||
|
.login-section .login-container .image-container .image-box {
|
||||||
|
background: url('../img/login.png'), lightgray 50% / cover no-repeat;
|
||||||
|
min-height: 465px;
|
||||||
|
min-width: 400px;
|
||||||
|
height: 60vh;
|
||||||
|
width: 24vw;
|
||||||
|
border-radius: 15px;
|
||||||
|
margin-right: 10px;
|
||||||
|
background-position: center;
|
||||||
|
background-size: cover;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .form-title p {
|
||||||
|
color: $blue-005;
|
||||||
|
font-family: 'GmarketSans';
|
||||||
|
font-size: 27px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .login-form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 24px;
|
||||||
|
min-width: 324px;
|
||||||
|
width: 20vw;
|
||||||
|
height: fit-content;
|
||||||
|
|
||||||
|
.login-check-field{
|
||||||
|
label{
|
||||||
|
font-family: 'Pretendard';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .login-form label {
|
||||||
|
font-weight: 300;
|
||||||
|
font-size: 14px;
|
||||||
|
color: black;
|
||||||
|
font-family: 'GmarketSans';
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .login-form .login-put-field label {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .login-form .login-put-field input {
|
||||||
|
width: calc(100% - 20px);
|
||||||
|
height: 40px;
|
||||||
|
border: solid 1px rgba(227, 227, 227, 1);
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 0 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .login-form .login-check-field {
|
||||||
|
display: flex;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .login-form .login-check-field input {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-section .login-container .form-container .login-form .submit-btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.login-section .login-container .form-container .login-form .submit-btn button {
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
font-family: 'GmarketSans';
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
.main-section .main-part {
|
||||||
|
background-image: url("../img/background.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
@import "common/color";
|
||||||
|
@import "common/common";
|
||||||
|
|
||||||
|
@import "component/header";
|
||||||
|
@import "component/sidebar";
|
||||||
|
@import "component/search";
|
||||||
|
@import "component/scrollbar";
|
||||||
|
@import "component/table";
|
||||||
|
@import "component/form";
|
||||||
|
@import "component/popup";
|
||||||
|
|
||||||
|
@import "page/login";
|
||||||
|
@import "page/main";
|
||||||
|
|
@ -102,38 +102,16 @@ button {
|
||||||
color: #cf5b5b;
|
color: #cf5b5b;
|
||||||
}
|
}
|
||||||
|
|
||||||
.run-btn {
|
.disabled-btn, button[disabled] {
|
||||||
border: solid 2px #5b73cf;
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
color: white;
|
color: #dddddd !important;
|
||||||
background-color: #5b73cf;
|
border-color: #e9e9e9 !important;
|
||||||
border-radius: 3px;
|
cursor: default !important;
|
||||||
}
|
}
|
||||||
.run-btn:hover {
|
.disabled-btn:hover, button[disabled]:hover {
|
||||||
background-color: white;
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
color: #5b73cf;
|
color: #dddddd !important;
|
||||||
}
|
border-color: #e9e9e9 !important;
|
||||||
|
|
||||||
.norun-btn {
|
|
||||||
border: solid 2px #f3da8f;
|
|
||||||
color: white;
|
|
||||||
background-color: #f3da8f;
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
.norun-btn:hover {
|
|
||||||
background-color: white;
|
|
||||||
color: #f3da8f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disabled-btn {
|
|
||||||
background-color: rgba(255, 255, 255, 0.973);
|
|
||||||
color: #dddddd;
|
|
||||||
border-color: #e9e9e9;
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
.disabled-btn:hover {
|
|
||||||
background-color: rgba(255, 255, 255, 0.973);
|
|
||||||
color: #dddddd;
|
|
||||||
border-color: #e9e9e9;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-btn {
|
.tab-btn {
|
||||||
|
|
@ -144,6 +122,7 @@ button {
|
||||||
width: 25%;
|
width: 25%;
|
||||||
border-right: none;
|
border-right: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
text-wrap: nowrap;
|
||||||
}
|
}
|
||||||
.tab-btn:hover {
|
.tab-btn:hover {
|
||||||
background-color: #c7c7c7;
|
background-color: #c7c7c7;
|
||||||
|
|
@ -366,6 +345,10 @@ button {
|
||||||
background-color: #d9d9d9;
|
background-color: #d9d9d9;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.min-width-572 {
|
||||||
|
min-width: 572px;
|
||||||
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
background: #1F2859;
|
background: #1F2859;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
@ -882,6 +865,12 @@ header .status-menu ul li a {
|
||||||
|
|
||||||
.vue-table {
|
.vue-table {
|
||||||
width: 3000px;
|
width: 3000px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.vue-table thead {
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
.vue-table th {
|
.vue-table th {
|
||||||
min-width: auto;
|
min-width: auto;
|
||||||
|
|
@ -937,31 +926,55 @@ form {
|
||||||
form[name=frmWorkData] {
|
form[name=frmWorkData] {
|
||||||
width: 80vw;
|
width: 80vw;
|
||||||
}
|
}
|
||||||
|
form[name=frmWorkData] .input-box {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
form[name=frmWorkData] .input-box span {
|
||||||
|
position: absolute;
|
||||||
|
right: 15px;
|
||||||
|
top: 30%;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
form[name=frmWorkData] .input-box span i {
|
||||||
|
font-size: 1.2em;
|
||||||
|
color: #c7c7c7;
|
||||||
|
}
|
||||||
form[name=frmWorkData] > div {
|
form[name=frmWorkData] > div {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-button-container {
|
form[name=frmWorkData] > div.form-button-container {
|
||||||
height: 80px;
|
height: -moz-fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
padding: 10px 0px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 1px solid #e9e9e9;
|
|
||||||
background: #FAFAFA;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 0 20px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-button-container button {
|
form[name=frmWorkData] > div.form-button-container .form-button-box button {
|
||||||
width: 150px;
|
border-radius: 50px;
|
||||||
height: 40px;
|
border: solid 2px #4A5ED2;
|
||||||
|
color: #4A5ED2;
|
||||||
|
font-size: 1.1em;
|
||||||
|
font-weight: 600;
|
||||||
|
background-color: white;
|
||||||
|
min-width: 140px;
|
||||||
|
padding: 10px 14px;
|
||||||
|
text-wrap: nowrap;
|
||||||
|
}
|
||||||
|
form[name=frmWorkData] > div.form-button-container .form-button-box button:hover, form[name=frmWorkData] > div.form-button-container .form-button-box button.on {
|
||||||
|
background-color: #4A5ED2;
|
||||||
|
color: white;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .info-container {
|
form[name=frmWorkData] > div.form-contents .info-container {
|
||||||
height: -moz-fit-content;
|
min-height: 510px;
|
||||||
height: fit-content;
|
height: 80vh;
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container {
|
form[name=frmWorkData] > div.form-contents .detail-container {
|
||||||
height: 510px;
|
min-height: 510px;
|
||||||
|
height: 80vh;
|
||||||
width: 50%;
|
width: 50%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
@ -973,6 +986,7 @@ form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .f
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .form-header textarea {
|
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .form-header textarea {
|
||||||
height: 100px;
|
height: 100px;
|
||||||
|
resize: none;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .form-header .add-btn {
|
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .form-header .add-btn {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
|
@ -986,6 +1000,12 @@ form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .t
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .table-box .tab-menu {
|
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .table-box .tab-menu {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: -moz-fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
}
|
||||||
|
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .table-box .tab-menu li {
|
||||||
|
height: 34px;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .table-box .table-title {
|
form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .table-box .table-title {
|
||||||
width: 99%;
|
width: 99%;
|
||||||
|
|
@ -1000,14 +1020,15 @@ form[name=frmWorkData] > div.form-contents .detail-container .detail-contents .t
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .height-full {
|
form[name=frmWorkData] > div.form-contents .detail-container .height-full {
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .height-89 {
|
form[name=frmWorkData] > div.form-contents .detail-container .height-93 {
|
||||||
height: 89% !important;
|
height: 93% !important;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .height-half {
|
form[name=frmWorkData] > div.form-contents .detail-container .height-half {
|
||||||
height: calc(100% - 220px) !important;
|
height: calc(100% - 220px) !important;
|
||||||
}
|
}
|
||||||
form[name=frmWorkData] > div.form-contents .detail-container .round-tab-box {
|
form[name=frmWorkData] > div.form-contents .detail-container .round-tab-box {
|
||||||
width: calc(100% - 120px);
|
width: calc(100% - 120px);
|
||||||
|
overflow: auto;
|
||||||
}
|
}
|
||||||
form[name=frmFacility] {
|
form[name=frmFacility] {
|
||||||
width: 800px;
|
width: 800px;
|
||||||
|
|
@ -1165,8 +1186,6 @@ form .btnFindAddr:hover {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
max-width: -moz-max-content;
|
max-width: -moz-max-content;
|
||||||
max-width: max-content;
|
max-width: max-content;
|
||||||
min-width: 500px;
|
|
||||||
min-height: 531px;
|
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
position: relative;
|
position: relative;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
|
|
@ -1183,6 +1202,7 @@ form .btnFindAddr:hover {
|
||||||
}
|
}
|
||||||
#awn-popup-wrapper .awn-popup-body .awn-popup-confirm.custom-popup {
|
#awn-popup-wrapper .awn-popup-body .awn-popup-confirm.custom-popup {
|
||||||
height: 500px;
|
height: 500px;
|
||||||
|
min-width: 500px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
#awn-popup-wrapper .awn-popup-body .awn-popup-confirm.custom-popup.free-height {
|
#awn-popup-wrapper .awn-popup-body .awn-popup-confirm.custom-popup.free-height {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -11,11 +11,11 @@ $later = date('Y-m-d', strtotime('+14 days'));
|
||||||
//if( !$GLOBALS['_Umem']['member_id'] ) {
|
//if( !$GLOBALS['_Umem']['member_id'] ) {
|
||||||
// move_page(_SVC_URL_, $GLOBALS['_Auth_']['deny_view']);
|
// move_page(_SVC_URL_, $GLOBALS['_Auth_']['deny_view']);
|
||||||
//}
|
//}
|
||||||
//
|
|
||||||
////접근 권한(조회) 불가 처리
|
//접근 권한(조회) 불가 처리
|
||||||
//if( !$GLOBALS['_Auth_']['menuObj']->hasMenuAuth("R", $GLOBALS['_Auth_']['cate_id']) ){
|
if( !$GLOBALS['_Auth_']['menuObj']->hasMenuAuth("R", $GLOBALS['_Auth_']['cate_id']) ){
|
||||||
// hback($GLOBALS['_Auth_']['deny_view']);
|
hback($GLOBALS['_Auth_']['deny_view']);
|
||||||
//}
|
}
|
||||||
|
|
||||||
$menu_hist = array();
|
$menu_hist = array();
|
||||||
if( $GLOBALS['_Auth_']['menuObj'] ){
|
if( $GLOBALS['_Auth_']['menuObj'] ){
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ const tb_custom_editor = {
|
||||||
return editor;
|
return editor;
|
||||||
},
|
},
|
||||||
|
|
||||||
upper: function(cell, onRendered, success, cancel) {
|
upper: function (cell, onRendered, success, cancel) {
|
||||||
// input 요소 생성
|
// input 요소 생성
|
||||||
var input = document.createElement("input");
|
var input = document.createElement("input");
|
||||||
input.setAttribute("type", "text");
|
input.setAttribute("type", "text");
|
||||||
|
|
@ -68,87 +68,85 @@ const tb_custom_editor = {
|
||||||
return input;
|
return input;
|
||||||
},
|
},
|
||||||
|
|
||||||
onlyNumber: function(cell, onRendered, success, cancel){
|
onlyNumber: function (cell, onRendered, success, cancel) {
|
||||||
// 입력 요소 생성
|
// 입력 요소 생성
|
||||||
const input = document.createElement("input");
|
const input = document.createElement("input");
|
||||||
input.setAttribute("type", "text");
|
input.setAttribute("type", "text");
|
||||||
input.style.width = "100%";
|
input.style.width = "100%";
|
||||||
input.value = cell.getValue() ? cell.getValue() : "";
|
input.value = cell.getValue() ? cell.getValue() : "";
|
||||||
|
|
||||||
onRendered(function(){
|
onRendered(function () {
|
||||||
input.focus();
|
input.focus();
|
||||||
input.style.height = "100%";
|
input.style.height = "100%";
|
||||||
});
|
});
|
||||||
|
|
||||||
function onChange(){
|
function onChange() {
|
||||||
if(input.value.match(/^\d*$/)){ // 숫자만 허용
|
if (input.value.match(/^\d*$/)) {
|
||||||
success(input.value);
|
// 숫자만 허용
|
||||||
}else{
|
success(input.value);
|
||||||
input.value = input.value.replace(/[^0-9]/g, '');
|
} else {
|
||||||
}
|
input.value = input.value.replace(/[^0-9]/g, "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input.addEventListener("blur", onChange);
|
input.addEventListener("blur", onChange);
|
||||||
input.addEventListener("keydown", function(e){
|
input.addEventListener("keydown", function (e) {
|
||||||
if(e.keyCode == 13){
|
if (e.keyCode == 13) {
|
||||||
onChange();
|
onChange();
|
||||||
}
|
}
|
||||||
if(e.keyCode == 27){
|
if (e.keyCode == 27) {
|
||||||
cancel();
|
cancel();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return input;
|
return input;
|
||||||
},
|
},
|
||||||
|
|
||||||
time: function(cell, onRendered, success, cancel){
|
time: function (cell, onRendered, success, cancel) {
|
||||||
// 입력 요소 생성
|
// 입력 요소 생성
|
||||||
const input = document.createElement("input");
|
const input = document.createElement("input");
|
||||||
input.setAttribute("type", "text");
|
input.setAttribute("type", "text");
|
||||||
input.style.width = "100%";
|
input.style.width = "100%";
|
||||||
input.value = cell.getValue() ? cell.getValue() : "";
|
input.value = cell.getValue() ? cell.getValue() : "";
|
||||||
|
|
||||||
onRendered(function(){
|
onRendered(function () {
|
||||||
input.focus();
|
input.focus();
|
||||||
input.select();
|
input.select();
|
||||||
input.style.height = "100%";
|
input.style.height = "100%";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 변경사항이 완료되면 호출될 함수
|
||||||
// 변경사항이 완료되면 호출될 함수
|
function onChange() {
|
||||||
function onChange(){
|
if (input.value.length === 5) {
|
||||||
if (input.value.length === 5) { // 'HH:mm' 형식 확인
|
// 'HH:mm' 형식 확인
|
||||||
success(input.value);
|
success(input.value);
|
||||||
console.log(cell.getValue())
|
console.log(cell.getValue());
|
||||||
} else {
|
} else {
|
||||||
cancel();
|
cancel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 입력 이벤트 처리
|
// 입력 이벤트 처리
|
||||||
input.addEventListener("input", function(){
|
input.addEventListener("input", function () {
|
||||||
var value = input.value.replace(/[^0-9]/g, ''); // 숫자만 입력 받음
|
var value = input.value.replace(/[^0-9]/g, ""); // 숫자만 입력 받음
|
||||||
|
|
||||||
if (value.length > 2){
|
if (value.length > 2) {
|
||||||
value = value.substring(0, 4); // 최대 4자리
|
value = value.substring(0, 4); // 최대 4자리
|
||||||
input.value = value.replace(/(\d{2})(\d{1})/, '$1:$2');
|
input.value = value.replace(/(\d{2})(\d{1})/, "$1:$2");
|
||||||
};
|
|
||||||
|
|
||||||
});
|
|
||||||
input.addEventListener("blur", onChange);
|
|
||||||
input.addEventListener("keydown", function(e){
|
|
||||||
if(e.keyCode == 13){
|
|
||||||
onChange();
|
|
||||||
}
|
}
|
||||||
if(e.keyCode == 27){
|
});
|
||||||
cancel();
|
input.addEventListener("blur", onChange);
|
||||||
|
input.addEventListener("keydown", function (e) {
|
||||||
|
if (e.keyCode == 13) {
|
||||||
|
onChange();
|
||||||
}
|
}
|
||||||
});
|
if (e.keyCode == 27) {
|
||||||
|
cancel();
|
||||||
return input;
|
}
|
||||||
},
|
});
|
||||||
|
|
||||||
|
|
||||||
|
return input;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const tb_custom_formatter = {
|
const tb_custom_formatter = {
|
||||||
|
|
@ -161,11 +159,14 @@ const tb_custom_formatter = {
|
||||||
return tgt.getValue();
|
return tgt.getValue();
|
||||||
},
|
},
|
||||||
|
|
||||||
time: function(cell, formatterParams, onRendered) {
|
time: function (cell, formatterParams, onRendered) {
|
||||||
return cell.getValue().padStart(4, '0').replace(/(\d{2})(\d{2})/, '$1:$2');
|
return cell
|
||||||
|
.getValue()
|
||||||
|
.padStart(4, "0")
|
||||||
|
.replace(/(\d{2})(\d{2})/, "$1:$2");
|
||||||
},
|
},
|
||||||
|
|
||||||
diffTitme: function(cell, formatterParams, onRendered){
|
diffTitme: function (cell, formatterParams, onRendered) {
|
||||||
let startTime = cell.getRow().getCell("OPER_ST_TM").getValue();
|
let startTime = cell.getRow().getCell("OPER_ST_TM").getValue();
|
||||||
let endTime = cell.getRow().getCell("OPER_ED_TM").getValue();
|
let endTime = cell.getRow().getCell("OPER_ED_TM").getValue();
|
||||||
if (startTime && endTime) {
|
if (startTime && endTime) {
|
||||||
|
|
@ -173,69 +174,74 @@ const tb_custom_formatter = {
|
||||||
let end = luxon.DateTime.fromFormat(endTime, "HH:mm");
|
let end = luxon.DateTime.fromFormat(endTime, "HH:mm");
|
||||||
// 날짜가 반전되는 경우를 처리 (예: 밤샘)
|
// 날짜가 반전되는 경우를 처리 (예: 밤샘)
|
||||||
if (end < start) {
|
if (end < start) {
|
||||||
end = end.plus({ days: 1 });
|
end = end.plus({ days: 1 });
|
||||||
}
|
}
|
||||||
// 시간 차이 계산
|
// 시간 차이 계산
|
||||||
let duration = end.diff(start, 'minutes');
|
let duration = end.diff(start, "minutes");
|
||||||
return duration.minutes; // 분 단위로 반환
|
return duration.minutes; // 분 단위로 반환
|
||||||
} else {
|
} else {
|
||||||
return ""; // Return empty string if either time is missing
|
return ""; // Return empty string if either time is missing
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const tb_custom_validator = {
|
const tb_custom_validator = {
|
||||||
|
onlyString: function (cell, value, parameters) {
|
||||||
onlyString: function(cell, value, parameters){
|
|
||||||
const regex = /^[가-힣A-Za-z\s]+$/;
|
const regex = /^[가-힣A-Za-z\s]+$/;
|
||||||
|
|
||||||
return regex.test(value);
|
return regex.test(value);
|
||||||
},
|
},
|
||||||
|
|
||||||
onlyEnglish: function(cell, value, parameters){
|
onlyEnglish: function (cell, value, parameters) {
|
||||||
const regex = /^[A-Za-z\s]+$/;
|
const regex = /^[A-Za-z\s]+$/;
|
||||||
|
|
||||||
return regex.test(value);
|
return regex.test(value);
|
||||||
},
|
},
|
||||||
|
|
||||||
stringNumeric: function(cell, value, parameters){
|
stringNumeric: function (cell, value, parameters) {
|
||||||
const regex = /^[가-힣ㄱ-ㅎㅏ-ㅣA-Za-z0-9\/\-\_\s]+$/;
|
const regex = /^[가-힣ㄱ-ㅎㅏ-ㅣA-Za-z0-9\/\-\_\s]+$/;
|
||||||
|
|
||||||
return regex.test(value);
|
return regex.test(value);
|
||||||
}
|
},
|
||||||
|
};
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const formFormat = {
|
const formFormat = {
|
||||||
telInput: function(input){
|
telInput: function (input) {
|
||||||
let formattedNumber = input.value.replace(/[^0-9]/g, ''); // 숫자만 추출
|
let formattedNumber = input.value.replace(/[^0-9]/g, ""); // 숫자만 추출
|
||||||
// 자동 포맷팅 로직 구현 예시: "123-456-7890" 형식
|
// 자동 포맷팅 로직 구현 예시: "123-456-7890" 형식
|
||||||
if(formattedNumber.length > 10) {
|
if (formattedNumber.length > 10) {
|
||||||
formattedNumber = formattedNumber.slice(0, 3) + '-' + formattedNumber.slice(3, 7) + '-' + formattedNumber.slice(7);
|
formattedNumber =
|
||||||
|
formattedNumber.slice(0, 3) +
|
||||||
|
"-" +
|
||||||
|
formattedNumber.slice(3, 7) +
|
||||||
|
"-" +
|
||||||
|
formattedNumber.slice(7);
|
||||||
} else {
|
} else {
|
||||||
formattedNumber = formattedNumber.slice(0, 3) + '-' + formattedNumber.slice(3, 6) + '-' + formattedNumber.slice(6);
|
formattedNumber =
|
||||||
|
formattedNumber.slice(0, 3) +
|
||||||
|
"-" +
|
||||||
|
formattedNumber.slice(3, 6) +
|
||||||
|
"-" +
|
||||||
|
formattedNumber.slice(6);
|
||||||
}
|
}
|
||||||
input.value = formattedNumber; // 포맷팅된 번호를 입력 필드에 다시 설정
|
input.value = formattedNumber; // 포맷팅된 번호를 입력 필드에 다시 설정
|
||||||
},
|
},
|
||||||
|
|
||||||
inNumInput: function(input){
|
inNumInput: function (input) {
|
||||||
let formattedNumber = input.value.replace(/[^0-9]/g, ''); // 숫자만 추출
|
let formattedNumber = input.value.replace(/[^0-9]/g, ""); // 숫자만 추출
|
||||||
// 자동 포맷팅 로직 구현 예시: "123-456-7890" 형식
|
// 자동 포맷팅 로직 구현 예시: "123-456-7890" 형식
|
||||||
formattedNumber = formattedNumber.slice(0, 6) + '-' + formattedNumber.slice(6,13);
|
formattedNumber =
|
||||||
|
formattedNumber.slice(0, 6) + "-" + formattedNumber.slice(6, 13);
|
||||||
input.value = formattedNumber; // 포맷팅된 번호를 입력 필드에 다시 설정
|
input.value = formattedNumber; // 포맷팅된 번호를 입력 필드에 다시 설정
|
||||||
},
|
},
|
||||||
|
|
||||||
alphanumeric:function(input){
|
alphanumeric: function (input) {
|
||||||
input.value = input.value.toUpperCase().replace(/[^A-Z0-9]/g, '');
|
input.value = input.value.toUpperCase().replace(/[^A-Z0-9]/g, "");
|
||||||
},
|
},
|
||||||
|
|
||||||
submitValidate: function(){
|
submitValidate: function () {
|
||||||
let isValid = true;
|
let isValid = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return isValid;
|
return isValid;
|
||||||
}
|
},
|
||||||
|
};
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -151,6 +151,38 @@ class CreatePopup2 {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
setData(e,tgt){
|
||||||
|
let row = tgt._row;
|
||||||
|
if( this.tabrow ){
|
||||||
|
let uptjson = {_STATUS_:this.tabrow.getData()['_STATUS_']||'U'};
|
||||||
|
Object.keys(this.columns).forEach( key => {
|
||||||
|
// if(!row.data[this.columns[key]]){
|
||||||
|
// row.data[this.columns[key]] = row.data[this.columns[key].replace(/[A-Z]+_/, "")]
|
||||||
|
// }
|
||||||
|
// uptjson[this.columns[key]] = row.data[this.columns[key]]; // 직접 할당
|
||||||
|
uptjson[key] = row.data[this.columns[key]]; // 직접 할당
|
||||||
|
// console.log(key)
|
||||||
|
} );
|
||||||
|
this.tabrow.update(uptjson);
|
||||||
|
}else{
|
||||||
|
Object.keys(this.columns).forEach( key => {
|
||||||
|
document.querySelector("#"+this.columns[key]).value = row.data[key];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
* @Overview 테이블 행 선택 함수
|
||||||
|
* @Parameter 이벤트, 타겟 행
|
||||||
|
*/
|
||||||
|
dbClick(e, tgt) {
|
||||||
|
let rowData = tgt._row.data
|
||||||
|
this.setData(e, tgt);
|
||||||
|
console.log(tgt);
|
||||||
|
this.modal.delete();
|
||||||
|
// this.tabrow.updateData({[this.columns.tgt_name]:row.data['BIZ_AREA_NM']});
|
||||||
|
// tabrow.updateData({[tgt_id]:row.data['BIZ_AREA_CD'],[tgt_name]:row.data['BIZ_AREA_NM'],_STATUS_:tabrow.getData()['_STATUS_']||'U'});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -262,8 +262,9 @@ class CreatePopup{
|
||||||
*/
|
*/
|
||||||
dbClick(e, tgt) {
|
dbClick(e, tgt) {
|
||||||
let rowData = tgt._row.data
|
let rowData = tgt._row.data
|
||||||
|
|
||||||
this.setData(e, tgt);
|
this.setData(e, tgt);
|
||||||
console.log(tgt);
|
|
||||||
this.modal.delete();
|
this.modal.delete();
|
||||||
// this.tabrow.updateData({[this.columns.tgt_name]:row.data['BIZ_AREA_NM']});
|
// this.tabrow.updateData({[this.columns.tgt_name]:row.data['BIZ_AREA_NM']});
|
||||||
// tabrow.updateData({[tgt_id]:row.data['BIZ_AREA_CD'],[tgt_name]:row.data['BIZ_AREA_NM'],_STATUS_:tabrow.getData()['_STATUS_']||'U'});
|
// tabrow.updateData({[tgt_id]:row.data['BIZ_AREA_CD'],[tgt_name]:row.data['BIZ_AREA_NM'],_STATUS_:tabrow.getData()['_STATUS_']||'U'});
|
||||||
|
|
|
||||||
|
|
@ -43,5 +43,5 @@ const varsIO_TYPE_FIN = <?=json_encode($GLOBALS['_IO_TYPE_FIN']?:Array())?>;
|
||||||
const varsNCR_CD = <?=json_encode($GLOBALS['_NCR_CD']?:Array())?>;
|
const varsNCR_CD = <?=json_encode($GLOBALS['_NCR_CD']?:Array())?>;
|
||||||
const varsTASK_TYPE = <?=json_encode($GLOBALS['_TASK_TYPE']?:Array())?>;
|
const varsTASK_TYPE = <?=json_encode($GLOBALS['_TASK_TYPE']?:Array())?>;
|
||||||
const varsSTOP_CD = <?=json_encode($GLOBALS['_STOP_CD']?:Array())?>;
|
const varsSTOP_CD = <?=json_encode($GLOBALS['_STOP_CD']?:Array())?>;
|
||||||
const varsDEF_CD = <?=json_encode($GLOBALS['_DEF_CD']?:Array())?>;
|
const varsDEF_CD = <?=json_encode($GLOBALS['_DEF_CD']?:Array())?>;
|
||||||
const varsRSLT_GRP = <?= json_encode($GLOBALS['_RSLT_GRP'] ?: array()) ?>;
|
const varsRSLT_GRP = <?=json_encode($GLOBALS['_RSLT_GRP']?:Array())?>;
|
||||||
|
|
@ -70,7 +70,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<div class="inner-container flexcol gap20">
|
<div class="inner-container flexcol gap20">
|
||||||
|
|
||||||
<div class="flexrow flex-1 gap20">
|
<div class="sub-container flexrow flex-1 gap20">
|
||||||
<div class="table-box flex-1" id="main_tab">
|
<div class="table-box flex-1" id="main_tab">
|
||||||
<!-- 테이블 헤더 (제목, 추가, 삭제, 저장) -->
|
<!-- 테이블 헤더 (제목, 추가, 삭제, 저장) -->
|
||||||
<div class="table-title">
|
<div class="table-title">
|
||||||
|
|
|
||||||
|
|
@ -654,7 +654,8 @@ class Tb_insp_list_class {
|
||||||
formatter: tb_common_funtions.formatterCheckboxIcon,
|
formatter: tb_common_funtions.formatterCheckboxIcon,
|
||||||
formatterParams: { checkval: "Y" },
|
formatterParams: { checkval: "Y" },
|
||||||
},
|
},
|
||||||
{ formatter: "rownum", title: "NO", width: 50 },
|
{ field: 'OP_SEQ', formatter: "rownum", title: "NO", width: 50 },
|
||||||
|
{ field: 'OP_CD', title: "공정", width: 80 },
|
||||||
{
|
{
|
||||||
field: "INSP_ITEM",
|
field: "INSP_ITEM",
|
||||||
title: "검사항목",
|
title: "검사항목",
|
||||||
|
|
@ -803,15 +804,17 @@ class Tb_insp_list_class {
|
||||||
|
|
||||||
|
|
||||||
const selectData = Tb_insp_list.tbList.getSelectedData()[0];
|
const selectData = Tb_insp_list.tbList.getSelectedData()[0];
|
||||||
Tb_insp_reg.tbList.addRow(
|
Tb_insp_reg.addRow(
|
||||||
{
|
{
|
||||||
|
OP_CD : selectData.OP_CD,
|
||||||
|
OP_SEQ : selectData.OP_SEQ,
|
||||||
INSP_ITEM : selectData.INSP_ITEM,
|
INSP_ITEM : selectData.INSP_ITEM,
|
||||||
INSP_SEQ : selectData.INSP_SEQ,
|
INSP_SEQ : selectData.INSP_SEQ,
|
||||||
SPEC_VAL : selectData.SPEC_VAL,
|
SPEC_VAL : selectData.SPEC_VAL,
|
||||||
TOL_UPPER : selectData.TOL_UPPER,
|
TOL_UPPER : selectData.TOL_UPPER,
|
||||||
TOL_LOWER : selectData.TOL_LOWER,
|
TOL_LOWER : selectData.TOL_LOWER,
|
||||||
INSP_TOOL : selectData.INSP_TOOL,
|
INSP_TOOL : selectData.INSP_TOOL,
|
||||||
}
|
}, selectData.INSP_SAMPL_QTY
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -974,11 +977,13 @@ class Tb_insp_reg_class {
|
||||||
* @Parameter 없음
|
* @Parameter 없음
|
||||||
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
||||||
*/
|
*/
|
||||||
addRow() {
|
addRow(data, qty) {
|
||||||
|
this.qty = qty;
|
||||||
|
const rows = this.tbList.getRows();
|
||||||
|
|
||||||
this.tbList.addRow({
|
this.tbList.addRow({
|
||||||
_STATUS_: "I",
|
...data,
|
||||||
INSP_ITEM: this.code,
|
INSP_SEQ : rows.length + 1
|
||||||
시료번호: this.시료번호,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1096,6 +1101,9 @@ class Tb_insp_reg_class {
|
||||||
title: i,
|
title: i,
|
||||||
width: 80,
|
width: 80,
|
||||||
editor:"input",
|
editor:"input",
|
||||||
|
editable: (cell)=>{
|
||||||
|
return i<=this.qty
|
||||||
|
},
|
||||||
formatter: "money",
|
formatter: "money",
|
||||||
formatterParams: {
|
formatterParams: {
|
||||||
decimal: ".",
|
decimal: ".",
|
||||||
|
|
@ -1122,14 +1130,32 @@ class Tb_insp_reg_class {
|
||||||
formatter: tb_common_funtions.formatterCheckboxIcon,
|
formatter: tb_common_funtions.formatterCheckboxIcon,
|
||||||
formatterParams: { checkval: "Y" },
|
formatterParams: { checkval: "Y" },
|
||||||
},
|
},
|
||||||
{ formatter: "rownum", title: "NO", width: 50 },
|
{ field: "OP_SEQ", title: "공순", width: 80 },
|
||||||
|
{ field: "OP_CD", title: "공정", width: 80 },
|
||||||
{ field: "INSP_ITEM", title: "검사항목", width: 100 },
|
{ field: "INSP_ITEM", title: "검사항목", width: 100 },
|
||||||
{ field: "INSP_SEQ", title: "검사회차", width: 80 },
|
{ field: "INSP_SEQ", title: "검사회차", width: 80 },
|
||||||
/* 추가할때마다 값이 입력된 행이 추가된다. */
|
/* 추가할때마다 값이 입력된 행이 추가된다? */
|
||||||
{ field: "SPEC_VAL", title: "기준값", width: 80 },
|
{ field: "SPEC_VAL", title: "기준값", width: 80,
|
||||||
{ field: "TOL_UPPER", title: "상한치", width: 80 },
|
formatter: "money",
|
||||||
{ field: "TOL_LOWER", title: "하한치", width: 80 },
|
formatterParams: {
|
||||||
{ field: "INSP_TOOL", title: "측정기", width: 80, editor: "editor" },
|
decimal: ".",
|
||||||
|
precision: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ field: "TOL_UPPER", title: "상한치", width: 80,
|
||||||
|
formatter: "money",
|
||||||
|
formatterParams: {
|
||||||
|
decimal: ".",
|
||||||
|
precision: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ field: "TOL_LOWER", title: "하한치", width: 80, formatter: "money",
|
||||||
|
formatterParams: {
|
||||||
|
decimal: ".",
|
||||||
|
precision: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ field: "INSP_TOOL", title: "측정기", width: 80, editor: "list", cssClass:"user-list" },
|
||||||
{
|
{
|
||||||
field: "INSP_TOOL",
|
field: "INSP_TOOL",
|
||||||
title: "측정치",
|
title: "측정치",
|
||||||
|
|
@ -1206,12 +1232,7 @@ class Tb_insp_reg_class {
|
||||||
this.cellEdited && this.cellEdited(cell);
|
this.cellEdited && this.cellEdited(cell);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 추가
|
|
||||||
["click", "keypress"].forEach((evt) => {
|
|
||||||
this.addBtn.addEventListener(evt, () => {
|
|
||||||
this.addRow && this.addRow();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// 삭제
|
// 삭제
|
||||||
["click", "keypress"].forEach((evt) => {
|
["click", "keypress"].forEach((evt) => {
|
||||||
this.removeBtn.addEventListener(evt, () => {
|
this.removeBtn.addEventListener(evt, () => {
|
||||||
|
|
@ -1223,7 +1244,7 @@ class Tb_insp_reg_class {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @Overview 오더별 검사항목
|
* @Overview 파일 업로드
|
||||||
*/
|
*/
|
||||||
class Tb_file_upload_class {
|
class Tb_file_upload_class {
|
||||||
constructor(container) {
|
constructor(container) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
$cate_id = "CNT_CT_WORKER";
|
$cate_id = "CNT_CT_WORKER";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Overview 작업자별 가공시간
|
||||||
|
* @History 2024-04-22 / 최승연 / 최초작성
|
||||||
|
*/
|
||||||
|
|
||||||
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
include_once _SVC_INC_PATH_ . "/auth_check.php";
|
include_once _SVC_INC_PATH_ . "/auth_check.php";
|
||||||
include_once _HOME_INC_PATH_ . "/ajax_init.php";
|
include_once _HOME_INC_PATH_ . "/ajax_init.php";
|
||||||
|
|
@ -12,13 +18,13 @@ if (!_notAuth("R")) {
|
||||||
case 'getWoOperList':
|
case 'getWoOperList':
|
||||||
|
|
||||||
|
|
||||||
$squl = "USP_P_WO_OPER_RSLT_S20";
|
$squl = "USP_P_CNT_CT_WORKER_S10";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
"P_EMP_NO" => $_REQUEST["EMP_NO"] ?: "",
|
"P_EMP_NO" => $_REQUEST["EMP_NO"] ?: "",
|
||||||
"P_EMP_NM" => $_REQUEST["EMP_NM"] ?: "",
|
"P_EMP_NM" => $_REQUEST["EMP_NM"] ?: "",
|
||||||
"P_START_DATE" => $_REQUEST["date_st"],
|
"P_ST_DATE" => $_REQUEST["date_st"],
|
||||||
"P_ED_DATE" => $_REQUEST["date_ed"],
|
"P_ED_DATE" => $_REQUEST["date_ed"],
|
||||||
);
|
);
|
||||||
$rst = $baseObj->DB->exec($squl, $params);
|
$rst = $baseObj->DB->exec($squl, $params);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ class Tb_main_class {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.mode = mode
|
data.mode = mode
|
||||||
console.log(data)
|
|
||||||
// let USEFLAG = document.getElementById("USE_FLG").checked?"Y":"N"; //사용여부
|
// let USEFLAG = document.getElementById("USE_FLG").checked?"Y":"N"; //사용여부
|
||||||
ajax_json({
|
ajax_json({
|
||||||
url: this.ajaxUrl,
|
url: this.ajaxUrl,
|
||||||
|
|
@ -43,10 +42,11 @@ class Tb_main_class {
|
||||||
let originData = data.data;
|
let originData = data.data;
|
||||||
originData = originData.map(el=>{
|
originData = originData.map(el=>{
|
||||||
// 대기시간!!!!!!!! 변경할것
|
// 대기시간!!!!!!!! 변경할것
|
||||||
el[`REAL_RUN_TM_${el['WRK_DT']}`] = el['REAL_RUN_TM']
|
el[`REAL_RUN_TM_${el['WORK_DT']}`] = el['REAL_RUN_TM']
|
||||||
return el;
|
return el;
|
||||||
});
|
});
|
||||||
|
console.log(data.data);
|
||||||
|
console.log(originData);
|
||||||
originData = originData.reduce((acc, curr)=>{
|
originData = originData.reduce((acc, curr)=>{
|
||||||
const key = curr.EMP_NO + curr.WRK_TEAM;
|
const key = curr.EMP_NO + curr.WRK_TEAM;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,11 @@ if (!_notAuth("R")) {
|
||||||
case 'getDefOrderList':
|
case 'getDefOrderList':
|
||||||
|
|
||||||
|
|
||||||
$squl = "USP_P_DEF_RSLT_S10";
|
$squl = "USP_P_CNT_DEF_WO_S10";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
"P_ITEM_GRP" => $_REQUEST["ITEM_GRP"] ?: "",
|
"P_ITEM_GRP" => $_REQUEST["ITEM_GRP"] ?: "",
|
||||||
"P_START_DATE" => $_REQUEST["date_st"],
|
"P_ST_DATE" => $_REQUEST["date_st"],
|
||||||
"P_ED_DATE" => $_REQUEST["date_ed"],
|
"P_ED_DATE" => $_REQUEST["date_ed"],
|
||||||
);
|
);
|
||||||
$rst = $baseObj->DB->exec($squl, $params);
|
$rst = $baseObj->DB->exec($squl, $params);
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ class Tb_main_class {
|
||||||
});
|
});
|
||||||
|
|
||||||
originData = originData.reduce((acc, curr)=>{
|
originData = originData.reduce((acc, curr)=>{
|
||||||
const key = curr.WO_NO;
|
const key = curr.WO_NO ;
|
||||||
|
|
||||||
if(!acc[key]){
|
if(!acc[key]){
|
||||||
acc[key] = {...curr};
|
acc[key] = {...curr};
|
||||||
|
|
@ -197,7 +197,7 @@ setFilter() {
|
||||||
// formatterParams: { checkval: "Y" },
|
// formatterParams: { checkval: "Y" },
|
||||||
// },
|
// },
|
||||||
{ formatter: "rownum", title: "NO", width: 50 },
|
{ formatter: "rownum", title: "NO", width: 50 },
|
||||||
{ field: "WO_NO", title: "오더번호", width: 100 },
|
{ field: "WO_NO", title: "오더번호", width: 100 ,visible : false},
|
||||||
{ field: "ITEM_CD", title: "품목", width: 100,},
|
{ field: "ITEM_CD", title: "품목", width: 100,},
|
||||||
{ field: "ITEM_GRP", title: "품목그룹", width: 100,},
|
{ field: "ITEM_GRP", title: "품목그룹", width: 100,},
|
||||||
...this.getDate()
|
...this.getDate()
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ if(!_notAuth("R")) {
|
||||||
// 생산오더 리스트 조회
|
// 생산오더 리스트 조회
|
||||||
case 'getDefectWorker':
|
case 'getDefectWorker':
|
||||||
|
|
||||||
$sql = "USP_P_WO_DEF_RSLT_S20";
|
$sql = "USP_P_CNT_DEF_EMP_S10";
|
||||||
$params = array(
|
$params = array(
|
||||||
"WRK_EMP_NO" => $_REQUEST['worker_pop'] ?: "",
|
"WRK_EMP_NO" => $_REQUEST['worker_pop'] ?: "",
|
||||||
"WRK_EMP_NM" => $_REQUEST['sub_worker_pop'] ?: "",
|
"WRK_EMP_NM" => $_REQUEST['sub_worker_pop'] ?: "",
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ class Tb_main_class {
|
||||||
// },
|
// },
|
||||||
// { formatter: "rownum", title: "NO", width: 50 },
|
// { formatter: "rownum", title: "NO", width: 50 },
|
||||||
{ field: "WRK_TEAM", title: "소속", width: 100 },
|
{ field: "WRK_TEAM", title: "소속", width: 100 },
|
||||||
{ field: "EMP_NO", title: "성명", width: 100,},
|
{ field: "EMP_NM", title: "성명", width: 100,},
|
||||||
...this.getDate()
|
...this.getDate()
|
||||||
];
|
];
|
||||||
const commonFieldData = {
|
const commonFieldData = {
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@ if (!_notAuth("R")) {
|
||||||
case 'getFacltCtList':
|
case 'getFacltCtList':
|
||||||
|
|
||||||
|
|
||||||
$squl = "USP_P_FACLT_OPER_S20";
|
$squl = "USP_P_CNT_FACLT_CT_S10";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
"P_START_DATE" => $_REQUEST["date_st"],
|
"P_ST_DATE" => $_REQUEST["date_st"],
|
||||||
"P_ED_DATE" => $_REQUEST["date_ed"],
|
"P_ED_DATE" => $_REQUEST["date_ed"],
|
||||||
"P_FACLT_CD" => $_REQUEST["FACLT_CD"] ?: "",
|
"P_FACLT_CD" => $_REQUEST["FACLT_CD"] ?: "",
|
||||||
"P_FACLT_NM" => $_REQUEST["FACLT_NM"] ?: "",
|
"P_FACLT_NM" => $_REQUEST["FACLT_NM"] ?: "",
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,12 @@ if (!_notAuth("R")) {
|
||||||
case 'getOperWtList':
|
case 'getOperWtList':
|
||||||
|
|
||||||
|
|
||||||
$squl = "USP_P_WO_OPER_S20";
|
$squl = "USP_P_CNT_OPER_WT_S10";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
"P_OP_CD" => $_REQUEST["OP_CD"] ?: "",
|
"P_OP_CD" => $_REQUEST["OP_CD"] ?: "",
|
||||||
"P_OP_NM" => $_REQUEST["OP_NM"] ?: "",
|
"P_OP_NM" => $_REQUEST["OP_NM"] ?: "",
|
||||||
"P_START_DATE" => $_REQUEST["date_st"],
|
"P_ST_DATE" => $_REQUEST["date_st"],
|
||||||
"P_ED_DATE" => $_REQUEST["date_ed"],
|
"P_ED_DATE" => $_REQUEST["date_ed"],
|
||||||
);
|
);
|
||||||
$rst = $baseObj->DB->exec($squl, $params);
|
$rst = $baseObj->DB->exec($squl, $params);
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ if (!_notAuth("R")) {
|
||||||
case 'getFacltOperList':
|
case 'getFacltOperList':
|
||||||
|
|
||||||
|
|
||||||
$squl = "USP_P_FACLT_OPER_S30";
|
$squl = "USP_P_CNT_PROD_FACLT_S10";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
"P_ST_DATE" => $_REQUEST["date_st"],
|
"P_ST_DATE" => $_REQUEST["date_st"],
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<!-- <button class="point-btn" id="item_ex_down">엑셀다운</button>
|
<!-- <button class="point-btn" id="item_ex_down">엑셀다운</button>
|
||||||
<button class="point-btn" id="item_ex_load">엑셀업로드</button> -->
|
<button class="point-btn" id="item_ex_load">엑셀업로드</button> -->
|
||||||
<button class="point-btn" id="filter_btn">조회</button>
|
<button class="point-btn" id="filter_btn">조회</button>
|
||||||
<button class="point-btn disabled-btn" id="put_item" disabled>저장</button>
|
<!--<button class="point-btn disabled-btn" id="put_item" disabled>저장</button>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 조회 및 저장 버튼 종료 // -->
|
<!-- 조회 및 저장 버튼 종료 // -->
|
||||||
|
|
|
||||||
|
|
@ -19,12 +19,11 @@ if (!_notAuth("R")) {
|
||||||
case 'getProdList':
|
case 'getProdList':
|
||||||
|
|
||||||
|
|
||||||
$squl = "USP_P_PRD_AMT_S10";
|
$squl = "USP_P_CNT_PROD_WORKER_S10";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
// "P_ITEM_GRP" => $_REQUEST["ITEM_GRP"] ?: "",
|
"P_ST_DATE" => $_REQUEST["date_st"],
|
||||||
"P_START_DATE" => $_REQUEST["date_st"],
|
"P_ED_DATE" => $_REQUEST["date_ed"],
|
||||||
"P_ED_DATE" => $_REQUEST["date_ed"],
|
|
||||||
);
|
);
|
||||||
$rst = $baseObj->DB->exec($squl, $params);
|
$rst = $baseObj->DB->exec($squl, $params);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -218,9 +218,14 @@ setFilter() {
|
||||||
// console.log(avgValue);
|
// console.log(avgValue);
|
||||||
// console.log(parseInt(realKeys.length));
|
// console.log(parseInt(realKeys.length));
|
||||||
let hap = Object.values(otherData).filter(v => {return v !== undefined && v !== null});
|
let hap = Object.values(otherData).filter(v => {return v !== undefined && v !== null});
|
||||||
|
|
||||||
|
|
||||||
let avgValue = hap.reduce((a, b) => parseInt(a) + parseInt(b), 0) / hap.length;
|
let avgValue = hap.reduce((a, b) => parseInt(a) + parseInt(b), 0) / hap.length;
|
||||||
console.log(avgValue);
|
|
||||||
console.log();
|
console.log();
|
||||||
|
if(avgValue === NaN){
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return avgValue;
|
return avgValue;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
@ -239,9 +244,9 @@ setFilter() {
|
||||||
{ field: "DEPT_NM", title: "소속", width: 100 },
|
{ field: "DEPT_NM", title: "소속", width: 100 },
|
||||||
{ field: "EMP_NM", title: "작업자", width: 100,},
|
{ field: "EMP_NM", title: "작업자", width: 100,},
|
||||||
{ field: "MONTH_AMOUNT", title: "월합계", width: 100, bottomCalc: "sum", formatter:"money", bottomCalcFormatter:"money", bottomCalcFormatterParams:{ precision:0 }, formatterParams:{ precision:0 }},
|
{ field: "MONTH_AMOUNT", title: "월합계", width: 100, bottomCalc: "sum", formatter:"money", bottomCalcFormatter:"money", bottomCalcFormatterParams:{ precision:0 }, formatterParams:{ precision:0 }},
|
||||||
{ field: "DAY_AVG", title: "일평균", width: 100, bottomCalc: "sum", bottomCalcFormatter:"money", bottomCalcFormatterParams:{ precision:0 },formatter:function(cell){
|
{ field: "DAY_AVG", title: "일평균", width: 100, bottomCalc: "sum",formatter:function(cell){
|
||||||
return _this.dayAvg(cell);
|
return _this.dayAvg(cell) ? _this.dayAvg(cell): "";
|
||||||
},
|
}, bottomCalcFormatter:"money",formatterParams:{ precision:0 }, bottomCalcFormatterParams:{ precision:0 }
|
||||||
},
|
},
|
||||||
...this.getDate()
|
...this.getDate()
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<!-- <button class="point-btn" id="item_ex_down">엑셀다운</button>
|
<!-- <button class="point-btn" id="item_ex_down">엑셀다운</button>
|
||||||
<button class="point-btn" id="item_ex_load">엑셀업로드</button> -->
|
<button class="point-btn" id="item_ex_load">엑셀업로드</button> -->
|
||||||
<button class="point-btn" id="filter_btn">조회</button>
|
<button class="point-btn" id="filter_btn">조회</button>
|
||||||
<button class="point-btn disabled-btn" id="put_item" disabled>저장</button>
|
<!--<button class="point-btn disabled-btn" id="put_item" disabled>저장</button>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 조회 및 저장 버튼 종료 // -->
|
<!-- 조회 및 저장 버튼 종료 // -->
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ if(!_notAuth("R")) {
|
||||||
|
|
||||||
$params = array_merge($params, Array(
|
$params = array_merge($params, Array(
|
||||||
"WO_NO" => $data['WO_NO']?:"",
|
"WO_NO" => $data['WO_NO']?:"",
|
||||||
"ORD_STATUS" => $data['ORD_STATUS'],
|
"ORD_STATUS" => $data['ORD_STATUS'] == "Y"?"080":"",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -108,11 +108,36 @@ if(!_notAuth("R")) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// 공정별 실적 조회
|
// 공정별 실적 조회
|
||||||
case 'getOrderList':
|
|
||||||
|
|
||||||
$sql = "USP_P_WO_S30";
|
case "getOpList":
|
||||||
|
$sql = "USP_P_WO_OPER_RSLT_S30";
|
||||||
$params = array(
|
$params = array(
|
||||||
"order_pop" => $_REQUEST['order_pop'] ?: "",
|
"WO_NO" => $_REQUEST["WO_NO"] ?: "",
|
||||||
|
"ITEM_CD" => $_REQUEST["ITEM_CD"] ?: "",
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
|
|
||||||
|
$row = array();
|
||||||
|
|
||||||
|
|
||||||
|
if ($rst) {
|
||||||
|
$retval['code'] = true;
|
||||||
|
while ($row = $baseObj->DB->fetch_array($rst)) {
|
||||||
|
$rows[] = $row;
|
||||||
|
}
|
||||||
|
;
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
} else {
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// 당일 오더완료내역 조회
|
||||||
|
case 'getOrderEndList':
|
||||||
|
|
||||||
|
$sql = "USP_P_WO_S40";
|
||||||
|
$params = array(
|
||||||
|
"date_st" => $_REQUEST['date_st'] ?: "",
|
||||||
);
|
);
|
||||||
|
|
||||||
$rst = $baseObj->DB->exec($sql, $params);
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
|
|
@ -131,7 +156,6 @@ if(!_notAuth("R")) {
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,23 @@ class Tb_order_class {
|
||||||
success: (data) => {
|
success: (data) => {
|
||||||
console.log(data.code);
|
console.log(data.code);
|
||||||
if(data.code) {
|
if(data.code) {
|
||||||
this.tbList.setData(data.data);
|
let Data = data.data
|
||||||
|
for(let tempData in Data){
|
||||||
|
if(Data[tempData].ORD_STATUS === "080"){
|
||||||
|
Data[tempData].ORD_STATUS = "Y"
|
||||||
|
}
|
||||||
|
// Data[tempData].ORD_STATUS =
|
||||||
|
// console.log(Data[tempData]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if(Data.ORD_STATUS = "080"){
|
||||||
|
// tempData.ORD_STATUS = "Y"
|
||||||
|
// console.log(tempData);
|
||||||
|
// }
|
||||||
|
|
||||||
|
this.tbList.setData(Data);
|
||||||
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
kuls_alert(data.mesg);
|
kuls_alert(data.mesg);
|
||||||
}
|
}
|
||||||
|
|
@ -106,9 +122,17 @@ class Tb_order_class {
|
||||||
* @function 선택된 모든 행 색 변경
|
* @function 선택된 모든 행 색 변경
|
||||||
*/
|
*/
|
||||||
rowClick(e, tgt) {
|
rowClick(e, tgt) {
|
||||||
|
let _this = this;
|
||||||
|
console.log(tgt);
|
||||||
|
let clickRow = tgt._row;
|
||||||
|
let clickData = clickRow?.data;
|
||||||
|
Tb_report.rowData = clickData;
|
||||||
|
|
||||||
|
Tb_report.getMainList();
|
||||||
|
|
||||||
if (tgt.isSelected()) {
|
if (tgt.isSelected()) {
|
||||||
tgt.deselect();
|
tgt.deselect();
|
||||||
// this.clearRemove(tgt);
|
this.clearRemove(tgt);
|
||||||
} else {
|
} else {
|
||||||
this.tbList.deselectRow();
|
this.tbList.deselectRow();
|
||||||
tgt.select();
|
tgt.select();
|
||||||
|
|
@ -123,7 +147,11 @@ class Tb_order_class {
|
||||||
*/
|
*/
|
||||||
cellClick(e, tgt) {
|
cellClick(e, tgt) {
|
||||||
switch (tgt.getField()) {
|
switch (tgt.getField()) {
|
||||||
|
case "ORD_STATUS":
|
||||||
|
// console.log(tgt.getValue());
|
||||||
|
tgt.setValue(tgt.getValue() == "Y" ? "" : "Y");
|
||||||
|
// this.clearRemove(tgt.getRow())
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
this.rowClick && this.rowClick(e, tgt);
|
this.rowClick && this.rowClick(e, tgt);
|
||||||
break;
|
break;
|
||||||
|
|
@ -147,12 +175,9 @@ class Tb_order_class {
|
||||||
this.getMainList('getOrderList','order_pop','order_product_pop','order_bp_pop','date_st');
|
this.getMainList('getOrderList','order_pop','order_product_pop','order_bp_pop','date_st');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
console.log(this.tbList.getData().filter(row=> row._STATUS_));
|
|
||||||
|
|
||||||
const blankObj = this.tbList.getRows().filter(row => {
|
const blankObj = this.tbList.getRows().filter(row => {
|
||||||
|
|
||||||
return Object.keys(row._row.data).filter(key => key !== '_STATUS_' && key !== 'USE_FLG').every(key => {
|
return Object.keys(row._row.data).filter(key => key !== '_STATUS_' && key !== 'USE_FLG').every(key => {
|
||||||
|
|
||||||
const value = row._row.data[key];
|
const value = row._row.data[key];
|
||||||
return (value === undefined || value === '');
|
return (value === undefined || value === '');
|
||||||
});
|
});
|
||||||
|
|
@ -212,7 +237,7 @@ class Tb_order_class {
|
||||||
// field 정의
|
// field 정의
|
||||||
const fields = [
|
const fields = [
|
||||||
{formatter:"rownum", title:"NO", width:50},
|
{formatter:"rownum", title:"NO", width:50},
|
||||||
{field:"ORD_STATUS", title:"완료", width:80, cssClass: "editable-cell", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval: "Y" },},
|
{field:"ORD_STATUS", title:"완료", width:80, cssClass: "editable-cell", formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: { checkval : "Y" },},
|
||||||
{field:"WO_NO", title:"생산오더", width:100},
|
{field:"WO_NO", title:"생산오더", width:100},
|
||||||
{field:"ITEM_CD", title:"품목", width:100},
|
{field:"ITEM_CD", title:"품목", width:100},
|
||||||
{field:"DRAW_NO", title:"도면번호", width:200},
|
{field:"DRAW_NO", title:"도면번호", width:200},
|
||||||
|
|
@ -228,6 +253,13 @@ class Tb_order_class {
|
||||||
precision:0
|
precision:0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{field:"PRD_QTY", title:"실적 수량", width:80,
|
||||||
|
formatter:"money",
|
||||||
|
formatterParams:{
|
||||||
|
decimal:".",
|
||||||
|
precision:0
|
||||||
|
}
|
||||||
|
},
|
||||||
{field:"UNIT", title:"단위", width:50},
|
{field:"UNIT", title:"단위", width:50},
|
||||||
{field:"", title:"", width:50},
|
{field:"", title:"", width:50},
|
||||||
{field:"", title:"비고", width: 300},
|
{field:"", title:"비고", width: 300},
|
||||||
|
|
@ -271,6 +303,7 @@ class Tb_order_class {
|
||||||
filterBtn.addEventListener(evt, () => {
|
filterBtn.addEventListener(evt, () => {
|
||||||
// setFilter 또는 setData
|
// setFilter 또는 setData
|
||||||
this.getMainList('getOrderList','order_pop','order_product_pop','order_bp_pop','date_st');
|
this.getMainList('getOrderList','order_pop','order_product_pop','order_bp_pop','date_st');
|
||||||
|
Tb_daily.getMainList('getOrderEndList','date_st');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// 저장
|
// 저장
|
||||||
|
|
@ -286,35 +319,44 @@ class Tb_order_class {
|
||||||
|
|
||||||
class Tb_report_class {
|
class Tb_report_class {
|
||||||
constructor(container) {
|
constructor(container) {
|
||||||
|
let _this = this;
|
||||||
this.ajaxUrl = "./mng_order_result.ajax.php";
|
this.ajaxUrl = "./mng_order_result.ajax.php";
|
||||||
this.code =""; // 품목 코드
|
this.code =""; // 품목 코드
|
||||||
|
|
||||||
this.container = document.querySelector(container);
|
this.container = document.querySelector(container);
|
||||||
this.table = this.container.querySelector(".hy-table")
|
this.table = this.container.querySelector(".hy-table")
|
||||||
// this.upBtn = this.container.querySelector(".up-btn") || ""
|
// this.upBtn = this.container.querySelector(".up-btn") || ""
|
||||||
// this.downBtn = this.container.querySelector(".down-btn") || ""
|
// this.downBtn = this.container.querySelector(".down-btn") || ""
|
||||||
// this.addBtn = this.container.querySelector(".add-btn")
|
// this.addBtn = this.container.querySelector(".add-btn")
|
||||||
// this.removeBtn = this.container.querySelector(".remove-btn")
|
// this.removeBtn = this.container.querySelector(".remove-btn")
|
||||||
|
_this.rowData ="";
|
||||||
|
// _this.itemcd ="";
|
||||||
}
|
}
|
||||||
|
|
||||||
// tableBuild 되었을때 getManList
|
// tableBuild 되었을때 getManList
|
||||||
getMainList(code) {
|
getMainList() {
|
||||||
// let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
let _this = this;
|
||||||
// this.code = code;
|
if(_this.rowData == undefined){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
console.log(_this.rowData);
|
||||||
|
// console.log(Tb_item.tbList.getSelectedData()[0]);
|
||||||
|
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: { mode: "getOpList", WO_NO :_this.rowData?.WO_NO, ITEM_CD: _this.rowData?.ITEM_CD },
|
||||||
|
success: (data) => {
|
||||||
|
this.tbList.setData(data.data);
|
||||||
|
|
||||||
// ajax_json({
|
},
|
||||||
// url: this.ajaxUrl,
|
error: (req, status, err) => {
|
||||||
// data: { mode: "", PR_CD: this.code},
|
kuls_alert(err.message);
|
||||||
// success: (data) => {},
|
},
|
||||||
// error: (req, status, err) => {
|
complete: () => {
|
||||||
// kuls_alert(err.message);
|
window.clearTimeout(talert);
|
||||||
// },
|
// this.tbList.clearAlert();
|
||||||
// complete: () => {
|
// this.setFilter();
|
||||||
// // window.clearTimeout(talert);
|
},
|
||||||
// // this.tbList.clearAlert();
|
});
|
||||||
// // this.setFilter();
|
|
||||||
// },
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setFilter() {}
|
setFilter() {}
|
||||||
|
|
@ -381,18 +423,18 @@ class Tb_report_class {
|
||||||
const fields = [
|
const fields = [
|
||||||
// 생산오더, 품목, 도면번호, 거래처, 납기일, 지시일, 지시구분, 지시 수량, 단위, 상태, 작업순서, 비고
|
// 생산오더, 품목, 도면번호, 거래처, 납기일, 지시일, 지시구분, 지시 수량, 단위, 상태, 작업순서, 비고
|
||||||
{formatter:"rownum", title:"NO", width:50},
|
{formatter:"rownum", title:"NO", width:50},
|
||||||
{field:"", title:"공순", width:80},
|
{field:"OP_SEQ", title:"공순", width:80},
|
||||||
{field:"", title:"공정", width:80},
|
{field:"OP_CD", title:"공정", width:80},
|
||||||
{title:"설비", cssClass:"width-150",
|
{title:"설비", cssClass:"width-150",
|
||||||
columns:[
|
columns:[
|
||||||
{field:"", title:"", width:50},
|
{field:"FACLT_CD", title:"", width:50},
|
||||||
{field:"", title:"", width:100},
|
{field:"FACLT_NM", title:"", width:100},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{field:"", title:"작업자", width:100},
|
{field:"EMP_NM", title:"작업자", width:100},
|
||||||
{field:"", title:"지시수량", width:80},
|
// {field:"ORD_QTY", title:"지시수량", width:80},
|
||||||
{field:"", title:"실적수량", width:80},
|
{field:"PRD_QTY", title:"실적수량", width:80},
|
||||||
{field:"", title:"불량수량", width:80},
|
// {field:"DEF_QTY", title:"불량수량", width:80},
|
||||||
{field:"", title:"종료시간", width:150},
|
{field:"", title:"종료시간", width:150},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -447,22 +489,69 @@ class Tb_daily_class {
|
||||||
// this.removeBtn = this.container.querySelector(".remove-btn")
|
// this.removeBtn = this.container.querySelector(".remove-btn")
|
||||||
}
|
}
|
||||||
|
|
||||||
// tableBuild 되었을때 getManList
|
/*
|
||||||
getMainList(code) {
|
* @Overview 데이터 조회 함수
|
||||||
// let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
* @Parameter mode : AJAX 비동깉 통신 시 사용할 STRING 값, ...test : 조회할 INPUT 태그의 ID 값
|
||||||
// ajax_json({
|
*/
|
||||||
// url: this.ajaxUrl,
|
getMainList(mode,...test) {
|
||||||
// data: { mode: "" , PROCESS: this.code},
|
// const talert= window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
||||||
// success: (data) => {},
|
let arr = test;
|
||||||
// error: (req, status, err) => {
|
// let testList = new Array();
|
||||||
// kuls_alert(err.message);
|
let data = new Object();
|
||||||
// },
|
for(let i=0; i < arr.length; i++){
|
||||||
// complete: () => {
|
let temp = [arr[i]]
|
||||||
// // window.clearTimeout(talert);
|
|
||||||
// // this.tbList.clearAlert();
|
if(document.getElementById(arr[i])?.type !== "checkbox"){
|
||||||
// // this.setFilter();
|
data[temp] = document.getElementById(temp)?.value
|
||||||
// },
|
}else{
|
||||||
// });
|
data[temp] = document.getElementById(temp)?.checked?"Y":"N";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data.mode = mode
|
||||||
|
// let USEFLAG = document.getElementById("USE_FLG").checked?"Y":"N"; //사용여부
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: data,
|
||||||
|
|
||||||
|
success: (data) => {
|
||||||
|
console.log(data.code);
|
||||||
|
if(data.code) {
|
||||||
|
let Data = data.data
|
||||||
|
for(let tempData in Data){
|
||||||
|
if(Data[tempData].ORD_STATUS === "080"){
|
||||||
|
Data[tempData].ORD_STATUS = "Y"
|
||||||
|
}
|
||||||
|
// Data[tempData].ORD_STATUS =
|
||||||
|
// console.log(Data[tempData]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if(Data.ORD_STATUS = "080"){
|
||||||
|
// tempData.ORD_STATUS = "Y"
|
||||||
|
// console.log(tempData);
|
||||||
|
// }
|
||||||
|
|
||||||
|
this.tbList.setData(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("WO_NO").getElement().addEventListener("click",(e)=>{
|
||||||
|
// this.rowClick(e,row);
|
||||||
|
// })
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
setFilter() {}
|
setFilter() {}
|
||||||
|
|
@ -528,14 +617,14 @@ class Tb_daily_class {
|
||||||
// field 정의
|
// field 정의
|
||||||
const fields = [
|
const fields = [
|
||||||
{formatter:"rownum", title:"NO", width:50},
|
{formatter:"rownum", title:"NO", width:50},
|
||||||
{field:"", title:"생산오더", width:100},
|
{field:"WO_NO", title:"생산오더", width:100},
|
||||||
{field:"", title:"품목", width:100},
|
{field:"ITEM_CD", title:"품목", width:100},
|
||||||
{field:"", title:"오더번호", width:200},
|
// {field:"", title:"오더번호", width:200},
|
||||||
{field:"", title:"거래처", width:150},
|
{field:"BP_CD", title:"거래처", width:150},
|
||||||
{field:"", title:"납기일", width:100},
|
{field:"DLVY_REQ_DT", title:"납기일", width:100},
|
||||||
{field:"", title:"지시 구분", width:100},
|
{field:"ORD_TYPE", title:"지시 구분", width:100},
|
||||||
{field:"", title:"지시 수량", width:100},
|
{field:"ORD_QTY", title:"지시 수량", width:100},
|
||||||
{field:"", title:"물량 수량", width:100},
|
{field:"PRD_QTY", title:"물량 수량", width:100},
|
||||||
{field:"", title:"최종공정</br>완료시간", width:100},
|
{field:"", title:"최종공정</br>완료시간", width:100},
|
||||||
{field:"", title:"완료처리</br>시간", width:100},
|
{field:"", title:"완료처리</br>시간", width:100},
|
||||||
];
|
];
|
||||||
|
|
@ -558,7 +647,7 @@ class Tb_daily_class {
|
||||||
|
|
||||||
// 데이터 불러오기
|
// 데이터 불러오기
|
||||||
this.tbList.on("tableBuilt", () => {
|
this.tbList.on("tableBuilt", () => {
|
||||||
this.getMainList('getOrderList','order_pop','order_product_pop','order_bp_pop','date_st');
|
this.getMainList('getOrderEndList','date_st');
|
||||||
});
|
});
|
||||||
// row 클릭 시에
|
// row 클릭 시에
|
||||||
this.tbList.on("rowClick", (e, tgt) => {
|
this.tbList.on("rowClick", (e, tgt) => {
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<label for="order_product_pop">품목</label>
|
<label for="order_product_pop">품목</label>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<input type="text" id="order_product_pop">
|
<input type="text" id="order_product_pop">
|
||||||
<?php include _SVC_INC_PATH_ . '/img/popupIcon.php' ?>
|
<span onclick="popItem({'ITEM_CD':'order_product_pop'})"><?php include _SVC_INC_PATH_ . '/img/popupIcon.php' ?></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -41,7 +41,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<label for="order_bp_pop">고객사</label>
|
<label for="order_bp_pop">고객사</label>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<input type="text" id="order_bp_pop">
|
<input type="text" id="order_bp_pop">
|
||||||
<?php include _SVC_INC_PATH_ . '/img/popupIcon.php' ?>
|
<span onclick="popClient({'BP_CD':'order_bp_pop'})"><?php include _SVC_INC_PATH_ . '/img/popupIcon.php' ?></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ class CreatePopup2 {
|
||||||
}
|
}
|
||||||
// 데이터 렌더링
|
// 데이터 렌더링
|
||||||
getPopList(){
|
getPopList(){
|
||||||
console.log(this.columns);
|
console.log("test");
|
||||||
ajax_json({
|
ajax_json({
|
||||||
url: "/ksvc/inc/common.ajax.php",
|
url: "/ksvc/inc/common.ajax.php",
|
||||||
data: {mode: this.mode, columns : this.columns },
|
data: {mode: this.mode, columns : this.columns },
|
||||||
|
|
@ -137,6 +137,18 @@ class CreatePopup2 {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
/*
|
||||||
|
* @Overview 테이블 행 선택 함수
|
||||||
|
* @Parameter 이벤트, 타겟 행
|
||||||
|
*/
|
||||||
|
dbClick(e, tgt) {
|
||||||
|
let rowData = tgt._row.data
|
||||||
|
this.setData(e, tgt);
|
||||||
|
console.log(tgt);
|
||||||
|
this.modal.delete();
|
||||||
|
// this.tabrow.updateData({[this.columns.tgt_name]:row.data['BIZ_AREA_NM']});
|
||||||
|
// tabrow.updateData({[tgt_id]:row.data['BIZ_AREA_CD'],[tgt_name]:row.data['BIZ_AREA_NM'],_STATUS_:tabrow.getData()['_STATUS_']||'U'});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -168,5 +180,6 @@ const popItemOper = function( columns, tabrow ){
|
||||||
});
|
});
|
||||||
|
|
||||||
Tb_modal.init();
|
Tb_modal.init();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,8 @@ if(!_notAuth("R")) {
|
||||||
"ORD_QTY" => $data['ORD_QTY'],
|
"ORD_QTY" => $data['ORD_QTY'],
|
||||||
// "ORD_DT" => $data['ORD_DT']?:date("Y-m-d", time()),
|
// "ORD_DT" => $data['ORD_DT']?:date("Y-m-d", time()),
|
||||||
// "ORD_DT" => date("Y-m-d", time()),
|
// "ORD_DT" => date("Y-m-d", time()),
|
||||||
"ORD_TYPE" => $data['WRK_QTY']?:"",
|
"WRK_QTY" => $data['WRK_QTY']?:"",
|
||||||
|
"WO_OP_AMT" => $data['WO_OP_AMT']?:"",
|
||||||
"ORD_STATUS" => $data['PLANT_CD']?:"",
|
"ORD_STATUS" => $data['PLANT_CD']?:"",
|
||||||
// "DLVY_REQ_DT" => date("Y-m-d", time()),
|
// "DLVY_REQ_DT" => date("Y-m-d", time()),
|
||||||
// "DLVY_REQ_DT" => $data['DLVY_REQ_DT']?:date("Y-m-d", time()),
|
// "DLVY_REQ_DT" => $data['DLVY_REQ_DT']?:date("Y-m-d", time()),
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,7 @@ class Tb_order_class {
|
||||||
let _this = this;
|
let _this = this;
|
||||||
let clickRow = tgt._row;
|
let clickRow = tgt._row;
|
||||||
let clickData = clickRow.data;
|
let clickData = clickRow.data;
|
||||||
|
|
||||||
// Tb_process.prodData = clickData;
|
// Tb_process.prodData = clickData;
|
||||||
// Tb_check.prodData = clickData;
|
// Tb_check.prodData = clickData;
|
||||||
// Tb_check.getMainList(Tb_check.prodData);
|
// Tb_check.getMainList(Tb_check.prodData);
|
||||||
|
|
@ -122,6 +123,9 @@ class Tb_order_class {
|
||||||
tgt.select();
|
tgt.select();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if(document.getElementById("hidden_item_cd")?.value === clickData?.ITEM_CD){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Tb_process.getMainList();
|
Tb_process.getMainList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -349,6 +353,14 @@ class Tb_order_class {
|
||||||
this.getMainList("getOrderList","order_date_st", "order_date_ed", "ITEM_CD"," ITEM_NM", "BP_CD", "BP_NM");
|
this.getMainList("getOrderList","order_date_st", "order_date_ed", "ITEM_CD"," ITEM_NM", "BP_CD", "BP_NM");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
// 조회
|
||||||
|
["click", "keypress"].forEach((evt) => {
|
||||||
|
const copyBtn = document.querySelector("#copy_btn");
|
||||||
|
copyBtn.addEventListener(evt, () => {
|
||||||
|
Tb_process.copyRow();
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
// 저장
|
// 저장
|
||||||
["click", "keypress"].forEach((evt) => {
|
["click", "keypress"].forEach((evt) => {
|
||||||
const putBtn = document.querySelector("#put_btn");
|
const putBtn = document.querySelector("#put_btn");
|
||||||
|
|
@ -417,7 +429,45 @@ class Tb_process_class {
|
||||||
this.lastNum += 10;
|
this.lastNum += 10;
|
||||||
this.tbList.addRow({ OP_SEQ : this.lastNum, WO_NO : Tb_order.tbList.getSelectedData()[0].WO_NO, _STATUS_: "I" });
|
this.tbList.addRow({ OP_SEQ : this.lastNum, WO_NO : Tb_order.tbList.getSelectedData()[0].WO_NO, _STATUS_: "I" });
|
||||||
}
|
}
|
||||||
|
copyRow(){
|
||||||
|
let _this = this;
|
||||||
|
ajax_json({
|
||||||
|
|
||||||
|
url: "/ksvc/inc/common.ajax.php",
|
||||||
|
data: {mode: "getItemOperList", ITEM_CD: Tb_order.tbList.getSelectedData()[0].ITEM_CD },
|
||||||
|
success:( data ) => {
|
||||||
|
if( data.code ){
|
||||||
|
// console.log(data.data)
|
||||||
|
console.log(data.data);
|
||||||
|
let makingData =data.data
|
||||||
|
for(let temp in data.data){
|
||||||
|
if(this.lastNum == 0){
|
||||||
|
this.lastNum += 10;
|
||||||
|
_this.tbList.addRow({
|
||||||
|
OP_CD : makingData[temp].OP_CD,
|
||||||
|
OP_SEQ : makingData[temp].OP_SEQ ,
|
||||||
|
WO_OP_AMT : makingData[temp].WO_OP_AMT,
|
||||||
|
WO_NO : Tb_order.tbList.getSelectedData()[0].WO_NO, _STATUS_: "I" });
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.lastNum += 10;
|
||||||
|
_this.tbList.addRow({
|
||||||
|
OP_CD : makingData[temp].OP_CD,
|
||||||
|
OP_SEQ : this.lastNum ,
|
||||||
|
WO_OP_AMT : makingData[temp].WO_OP_AMT,
|
||||||
|
WO_NO : Tb_order.tbList.getSelectedData()[0].WO_NO, _STATUS_: "I" });
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(this.lastNum);
|
||||||
|
},
|
||||||
|
error: (request, status, error)=>{
|
||||||
|
kuls_alert(error.message);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
document.getElementById("hidden_item_cd").value = Tb_order.tbList?.getSelectedData()[0]?.ITEM_CD;
|
||||||
|
}
|
||||||
|
|
||||||
sortingRouting(){
|
sortingRouting(){
|
||||||
let temArr = this.tbList.getData(); // 테이블 전체 데이터
|
let temArr = this.tbList.getData(); // 테이블 전체 데이터
|
||||||
|
|
@ -622,13 +672,14 @@ class Tb_process_class {
|
||||||
},
|
},
|
||||||
{formatter:"rownum", title:"NO", width:50},
|
{formatter:"rownum", title:"NO", width:50},
|
||||||
{field:"OP_SEQ", title:"공순", width:100},
|
{field:"OP_SEQ", title:"공순", width:100},
|
||||||
{field:"OP_CD", title:"공정", width:100,editor: "input"},
|
{field:"OP_CD", title:"공정명", width:100,editor: "input"},
|
||||||
{field:"ORD_QTY", title:"지시 수량", width:80 ,editor: "input",
|
{field:"WO_OP_AMT", title:"공정 단가", width:80 ,editor: "input",
|
||||||
formatter: "money",
|
formatter: "money",
|
||||||
formatterParams: {
|
formatterParams: {
|
||||||
decimal:".",
|
decimal:".",
|
||||||
precision:0
|
precision:0
|
||||||
}
|
},
|
||||||
|
hozAlign: "right"
|
||||||
},
|
},
|
||||||
// {field:"", title:"준비시간</br>(분)", width:100},
|
// {field:"", title:"준비시간</br>(분)", width:100},
|
||||||
// {field:"", title:"가공시간</br>(분)", width:100},
|
// {field:"", title:"가공시간</br>(분)", width:100},
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="BP_NM"></label>
|
<label for="BP_NM"></label>
|
||||||
<input type="text" id="BP_NM" placeholder="거래처명">
|
<input type="text" id="BP_NM" placeholder="거래처명">
|
||||||
|
<input type="hidden" id="hidden_item_cd">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -66,6 +67,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<!-- 조회 및 저장 버튼 -->
|
<!-- 조회 및 저장 버튼 -->
|
||||||
<div class="button-container">
|
<div class="button-container">
|
||||||
<div class="button-box">
|
<div class="button-box">
|
||||||
|
<button class="point-btn" id="copy_btn">편성</button>
|
||||||
<button class="point-btn" id="">SAP 조회</button>
|
<button class="point-btn" id="">SAP 조회</button>
|
||||||
<button class="point-btn" id="filter_btn">조회</button>
|
<button class="point-btn" id="filter_btn">조회</button>
|
||||||
<button class="point-btn" id="put_btn">저장</button>
|
<button class="point-btn" id="put_btn">저장</button>
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ if (!_notAuth("R")) {
|
||||||
$params = array(
|
$params = array(
|
||||||
"date_st" => $_REQUEST["date_st"] ?: "",
|
"date_st" => $_REQUEST["date_st"] ?: "",
|
||||||
"date_ed" => $_REQUEST["date_ed"] ?: "",
|
"date_ed" => $_REQUEST["date_ed"] ?: "",
|
||||||
"WO_NO" => $_REQUEST["WO_NO_P"] ?: "",
|
"WO_NO" => $_REQUEST["WO_NO_P"] ?: "",
|
||||||
"ITEM_CD" => $_REQUEST["ITEM_CD"] ?: "",
|
"ITEM_CD" => $_REQUEST["ITEM_CD"] ?: "",
|
||||||
"OP_CD" => $_REQUEST["OP_CD"] ?: "",
|
"OP_CD" => $_REQUEST["OP_CD"] ?: "",
|
||||||
"FACLT_CD " => $_REQUEST["FACLT_CD_P"] ?: ""
|
"FACLT_CD " => $_REQUEST["FACLT_CD_P"] ?: ""
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,6 @@ class Tb_order_class {
|
||||||
*/
|
*/
|
||||||
addRow() {
|
addRow() {
|
||||||
this.tbList.addRow({ _STATUS_: "I" });
|
this.tbList.addRow({ _STATUS_: "I" });
|
||||||
this.saveButtonActive(false);
|
|
||||||
// this.orderModal();
|
// this.orderModal();
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
@ -163,15 +162,7 @@ class Tb_order_class {
|
||||||
* @function 선택된 모든 행 삭제
|
* @function 선택된 모든 행 삭제
|
||||||
*/
|
*/
|
||||||
|
|
||||||
saveButtonActive(boolean) {
|
|
||||||
if (boolean) {
|
|
||||||
document.getElementById("put_btn").classList.add("disabled-btn");
|
|
||||||
document.getElementById("put_btn").disabled = true;
|
|
||||||
} else {
|
|
||||||
document.getElementById("put_btn").classList.remove("disabled-btn");
|
|
||||||
document.getElementById("put_btn").disabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
submitDateTime() {
|
submitDateTime() {
|
||||||
let dateTimeValue = document.getElementById("MAKE_TM").value;
|
let dateTimeValue = document.getElementById("MAKE_TM").value;
|
||||||
|
|
@ -179,41 +170,55 @@ class Tb_order_class {
|
||||||
console.log("서버로 보낼 날짜 및 시간: " + formattedDateTime);
|
console.log("서버로 보낼 날짜 및 시간: " + formattedDateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
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");
|
removeRow() {
|
||||||
|
const selectedRows = this.tbList.getRows().filter(row=>{
|
||||||
|
return row.getData().check ==="Y"
|
||||||
});
|
});
|
||||||
this.saveButtonActive(false);
|
|
||||||
|
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("삭제할 행을 선택해주세요.")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// removeRow() {
|
/*
|
||||||
// const selectedRows = this.tbList.getRows().filter(row=>{
|
* @Overview 삭제 취소 함수
|
||||||
// return row.getData().check ==="Y"
|
* @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(); // 선택된 모든 행 가져오기
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// if(selectedRows.length > 0 ){
|
|
||||||
|
|
||||||
// kuls_confirm("삭제","하시겠습니까?", ()=>{
|
/*
|
||||||
// // 선택된 각 행 삭제
|
* @Overview 테이블 셀 수정 함수
|
||||||
// selectedRows.forEach((row) => {
|
* @Parameter 셀
|
||||||
// // STAUS D로 바꾸기
|
* @function 셀 편집이 이후 저장될수 있도록 _STATUS_:U로 데이터 업데이트
|
||||||
// row.getData()._STATUS_ = row.getData()._STATUS_=="I"?null:"D";
|
*/
|
||||||
|
cellEdited(cell) {
|
||||||
|
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
|
||||||
|
|
||||||
// const rowElement = row.getElement();
|
}
|
||||||
// rowElement.classList.add("remove-row");
|
|
||||||
|
|
||||||
// });
|
|
||||||
// })
|
|
||||||
// }else{
|
|
||||||
// kuls_alert("삭제할 행을 선택해주세요.")
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @Overview 테이블 행 선택 함수
|
* @Overview 테이블 행 선택 함수
|
||||||
|
|
@ -223,14 +228,10 @@ class Tb_order_class {
|
||||||
rowClick(e, tgt) {
|
rowClick(e, tgt) {
|
||||||
if (tgt.isSelected()) {
|
if (tgt.isSelected()) {
|
||||||
tgt.deselect();
|
tgt.deselect();
|
||||||
this.updateBtn.classList.add("disabled-btn");
|
this.clearRemove(tgt)
|
||||||
this.updateBtn.disabled = true;
|
|
||||||
//this.clearRemove(tgt)
|
|
||||||
} else {
|
} else {
|
||||||
this.tbList.deselectRow();
|
this.tbList.deselectRow();
|
||||||
tgt.select();
|
tgt.select();
|
||||||
this.updateBtn.disabled = false;
|
|
||||||
this.updateBtn.classList.remove("disabled-btn");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -262,15 +263,18 @@ class Tb_order_class {
|
||||||
DRAW_NO: 'DRAW_NO',
|
DRAW_NO: 'DRAW_NO',
|
||||||
PRV_OP_CD: 'PRV_OP_CD',
|
PRV_OP_CD: 'PRV_OP_CD',
|
||||||
ORD_QTY: 'ORD_QTY',
|
ORD_QTY: 'ORD_QTY',
|
||||||
OP_WRK_QTY: 'OP_WRK_QTY'
|
OP_WRK_QTY: 'OP_WRK_QTY',
|
||||||
|
MAKE_TM: 'MAKE_TM',
|
||||||
|
FACLT_CD: 'FACLT_CD',
|
||||||
|
FACLT_NM: 'FACLT_NM'
|
||||||
},tgt.getRow())
|
},tgt.getRow())
|
||||||
break;
|
break;
|
||||||
case "FACLT_CD":
|
// case "FACLT_CD":
|
||||||
popRegFacility({
|
// popRegFacility({
|
||||||
FACLT_CD: 'FACLT_CD',
|
// FACLT_CD: 'FACLT_CD',
|
||||||
FACLT_NM:'FACLT_NM'
|
// FACLT_NM:'FACLT_NM'
|
||||||
},tgt.getRow())
|
// },tgt.getRow())
|
||||||
break;
|
// break;
|
||||||
case "EMP_NM":
|
case "EMP_NM":
|
||||||
popWorker({
|
popWorker({
|
||||||
EMP_NO:'EMP_NO',
|
EMP_NO:'EMP_NO',
|
||||||
|
|
@ -289,11 +293,6 @@ class Tb_order_class {
|
||||||
// break;
|
// break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 셀 수정
|
|
||||||
cellEdited(cell) {
|
|
||||||
cell.getData()._STATUS_ = cell.getData()._STATUS_ || "U";
|
|
||||||
}
|
|
||||||
putData() {
|
putData() {
|
||||||
const _this = this;
|
const _this = this;
|
||||||
// 기본키 중복 확인 및 방지
|
// 기본키 중복 확인 및 방지
|
||||||
|
|
@ -325,9 +324,8 @@ class Tb_order_class {
|
||||||
kuls_alert(error.message);
|
kuls_alert(error.message);
|
||||||
},
|
},
|
||||||
complete: function () {
|
complete: function () {
|
||||||
this.saveButtonActive(true);
|
window.clearTimeout(talert);
|
||||||
this.updateBtn.disabled = false;
|
this.tbList.clearAlert();
|
||||||
this.updateBtn.classList.remove("disabled-btn");
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -348,18 +346,23 @@ class Tb_order_class {
|
||||||
* @Parameter 없음
|
* @Parameter 없음
|
||||||
*/
|
*/
|
||||||
init() {
|
init() {
|
||||||
|
|
||||||
|
|
||||||
// field 정의
|
// field 정의
|
||||||
const fields = [
|
fields = [
|
||||||
// 생산오더, 품목, 도면번호, 거래처, 납기일, 지시일, 지시구분, 지시 수량, 단위, 상태, 작업순서, 비고
|
// 생산오더, 품목, 도면번호, 거래처, 납기일, 지시일, 지시구분, 지시 수량, 단위, 상태, 작업순서, 비고
|
||||||
{ field:"check", title: "선택", width: 50, headerSort: false,formatter: tb_common_funtions.formatterCheckboxIcon,formatterParams: { checkval: "Y" },},
|
{ field:"check", title: "선택", width: 50, headerSort: false,formatter: tb_common_funtions.formatterCheckboxIcon,formatterParams: { checkval: "Y" },},
|
||||||
{ formatter: "rownum", title: "NO", width: 50 },
|
{ formatter: "rownum", title: "NO", width: 50 },
|
||||||
{ field: "WO_NO", title: "생산오더", width: 100,cssClass: "editable-cell" },
|
{ field: "WO_NO", title: "생산오더", width: 100,editor:tb_custom_editor.upper,
|
||||||
|
editable: (cell) => {
|
||||||
|
const val = cell.getData();
|
||||||
|
return val._STATUS_ === "I";
|
||||||
|
}, },
|
||||||
{ field: "WO_SEQ", width: 50, visible: false },
|
{ field: "WO_SEQ", width: 50, visible: false },
|
||||||
{ field: "RSLT_NO", width: 50, visible: false },
|
{ field: "RSLT_NO", width: 50, visible: false },
|
||||||
{ field: "ITEM_CD", width: 50, visible: false },
|
{ field: "ITEM_CD", width: 100, title: "품목"},
|
||||||
{ field: "DEF_NO", width: 50, visible: false },
|
|
||||||
{ field: "EMP_NO", width: 50, visible: false},
|
{ field: "EMP_NO", width: 50, visible: false},
|
||||||
{ field: "ITEM_NM", visible: false },
|
{ field: "ITEM_NM",title: "품목", width: 200,visible: false },
|
||||||
{ field: "DRAW_NO", title: "도면번호", width: 200, hozAlign: "start" },
|
{ field: "DRAW_NO", title: "도면번호", width: 200, hozAlign: "start" },
|
||||||
{ field: "OP_CD", title: "공정", width: 50 },
|
{ field: "OP_CD", title: "공정", width: 50 },
|
||||||
{ field: "OP_NM", title: "공정", width: 50, visible: false },
|
{ field: "OP_NM", title: "공정", width: 50, visible: false },
|
||||||
|
|
@ -367,7 +370,7 @@ class Tb_order_class {
|
||||||
title: "설비",
|
title: "설비",
|
||||||
cssClass: "width-200",
|
cssClass: "width-200",
|
||||||
columns: [
|
columns: [
|
||||||
{ field: "FACLT_CD", width: 100 ,cssClass: "editable-cell" },
|
{ field: "FACLT_CD", width: 100 , },
|
||||||
{ field: "FACLT_NM", width: 100 },
|
{ field: "FACLT_NM", width: 100 },
|
||||||
]},
|
]},
|
||||||
{ field: "ORD_QTY",
|
{ field: "ORD_QTY",
|
||||||
|
|
@ -394,15 +397,12 @@ class Tb_order_class {
|
||||||
title: "양품 수량",
|
title: "양품 수량",
|
||||||
width: 80,
|
width: 80,
|
||||||
formatter: "money",
|
formatter: "money",
|
||||||
|
hozAlign:"left",
|
||||||
formatterParams: { decimal: ",", precision: 0 },
|
formatterParams: { decimal: ",", precision: 0 },
|
||||||
editor: "input"
|
editor: "input"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: "RSLT_GRP",
|
field: "RSLT_GRP",
|
||||||
visible: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: "CODE_VAL",
|
|
||||||
title: "실적 그룹",
|
title: "실적 그룹",
|
||||||
width: 80,
|
width: 80,
|
||||||
cssClass: "user-list editable-cell",
|
cssClass: "user-list editable-cell",
|
||||||
|
|
@ -413,34 +413,8 @@ class Tb_order_class {
|
||||||
},
|
},
|
||||||
|
|
||||||
{ field: "EMP_NM", title: "작업자", width: 100 ,cssClass: "editable-cell"},
|
{ field: "EMP_NM", title: "작업자", width: 100 ,cssClass: "editable-cell"},
|
||||||
{ field: "", title: "실적등록시간", width: 120,cssClass: "editable-cell" },
|
{ field: "MAKE_TM", title: "실적등록시간", width: 120 },
|
||||||
{ field: "", title: "실적일자",width: 120,},
|
{ field: "WRK_DT", title: "실적일자",width: 120,},
|
||||||
|
|
||||||
// {
|
|
||||||
// field: "DEF_QTY",
|
|
||||||
// width: 100,
|
|
||||||
// formatter: "money",
|
|
||||||
// formatterParams: { decimal: ",", precision: 0 },
|
|
||||||
// visible:false
|
|
||||||
// },
|
|
||||||
// { field: "WRK_DT", title: "작업 일자", width: 80 }, //formatter mm-dd로
|
|
||||||
// {
|
|
||||||
// field: "ST_TM",
|
|
||||||
// title: "시작 시간",
|
|
||||||
// width: 120,
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// field: "ED_TM",
|
|
||||||
// title: "종료 시간",
|
|
||||||
// width: 120,
|
|
||||||
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// field: "",
|
|
||||||
// title: "가동 시간</br>(분)",
|
|
||||||
// width: 100,
|
|
||||||
// formatter: this.runningTime,
|
|
||||||
// },
|
|
||||||
];
|
];
|
||||||
const commonFieldData = {
|
const commonFieldData = {
|
||||||
headerSort: false,
|
headerSort: false,
|
||||||
|
|
@ -524,15 +498,6 @@ class Tb_order_class {
|
||||||
this.putData && this.putData();
|
this.putData && this.putData();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
//수정
|
|
||||||
["click", "keypress"].forEach((evt) => {
|
|
||||||
this.updateBtn.addEventListener(evt, () => {
|
|
||||||
this.orderModal(this.tbList.getSelectedRows()[0]._row);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// FORM 제출 클릭시
|
|
||||||
// document.querySelector("form[name=frmPrslt]").addEventListener("submit", orderPop.putData);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -551,15 +516,15 @@ Tb_order_report.init();
|
||||||
* @Overview 모달 행 추가 함수
|
* @Overview 모달 행 추가 함수
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function addFormRow() {
|
// function addFormRow() {
|
||||||
document.querySelector(".add-row-container").innerHTML += `
|
// document.querySelector(".add-row-container").innerHTML += `
|
||||||
<div class="input-container flexrow gap06">
|
// <div class="input-container flexrow gap06">
|
||||||
|
|
||||||
<div class="input-box flex-1">
|
// <div class="input-box flex-1">
|
||||||
<p class="input-title"></p>
|
// <p class="input-title"></p>
|
||||||
<input type="text" id="addRow" name="" class="form-control form-control-sm input-text"></input>
|
// <input type="text" id="addRow" name="" class="form-control form-control-sm input-text"></input>
|
||||||
<input type="text" id="addRow" name="" class="form-control form-control-sm input-text"></input>
|
// <input type="text" id="addRow" name="" class="form-control form-control-sm input-text"></input>
|
||||||
</div>
|
// </div>
|
||||||
|
|
||||||
</div>`;
|
// </div>`;
|
||||||
}
|
// }
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<div class="button-container">
|
<div class="button-container">
|
||||||
<div class="button-box">
|
<div class="button-box">
|
||||||
<button class="point-btn" id="filter_btn">조회</button>
|
<button class="point-btn" id="filter_btn">조회</button>
|
||||||
<button class="point-btn disabled-btn" id="put_btn">저장</button>
|
<button class="point-btn" id="put_btn">저장</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 조회 및 저장 버튼 종료 // -->
|
<!-- 조회 및 저장 버튼 종료 // -->
|
||||||
|
|
@ -113,7 +113,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<div class="table-title">
|
<div class="table-title">
|
||||||
<p class="title">
|
<p class="title">
|
||||||
생산 실적
|
생산 실적
|
||||||
<span> ※더블클릭하면 수정창이 열립니다.</span>
|
<!-- <span> ※더블클릭하면 수정창이 열립니다.</span> -->
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- 버튼 -->
|
<!-- 버튼 -->
|
||||||
|
|
@ -126,10 +126,6 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
||||||
삭제
|
삭제
|
||||||
</button>
|
</button>
|
||||||
<button class="update-btn reverse-btn disabled-btn" disabled>
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/update.php' ?>
|
|
||||||
수정
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- 버튼 종료 // -->
|
<!-- 버튼 종료 // -->
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,10 @@
|
||||||
|
|
||||||
class Tb_main_class {
|
class Tb_main_class {
|
||||||
constructor(container) {
|
constructor(container) {
|
||||||
|
let _this = this;
|
||||||
this.ajaxUrl = "./reg_plan.ajax.php";
|
this.ajaxUrl = "./reg_plan.ajax.php";
|
||||||
this.tbList = "";
|
this.tbList = "";
|
||||||
this.lastGroupId = 1;
|
_this.lastGroupId = 0;
|
||||||
this.container = document.querySelector(container);
|
this.container = document.querySelector(container);
|
||||||
this.table = this.container.querySelector(".hy-table");
|
this.table = this.container.querySelector(".hy-table");
|
||||||
// this.upBtn = this.container.querySelector(".up-btn") || "";
|
// this.upBtn = this.container.querySelector(".up-btn") || "";
|
||||||
|
|
@ -15,296 +16,101 @@ class Tb_main_class {
|
||||||
this.removeBtn = this.container.querySelector(".remove-btn");
|
this.removeBtn = this.container.querySelector(".remove-btn");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Overview 생산계획등록
|
||||||
|
* @Parameter DATABASE로부터 받은 데이터
|
||||||
|
* @function DB 데이터 가공하여 바인딩.
|
||||||
|
*/
|
||||||
manageData(data) {
|
manageData(data) {
|
||||||
// let tempGRP = new Object();
|
// console.log(data);
|
||||||
// let tempQTY = new Object();
|
let _this = this;
|
||||||
let tempArr = new Array();
|
let arr = new Array();
|
||||||
|
|
||||||
// for(let key in result){
|
const result = Object.groupBy(data.data, ({ SEQ_NO }) => SEQ_NO)
|
||||||
//
|
|
||||||
// for (let i = 0; i <= result[key].length-1; i++) {
|
|
||||||
// let temp = result[key][i];
|
|
||||||
// let tempGRP = {};
|
|
||||||
// tempGRP['WRK_TEAM'] = temp.WRK_TEAM // 설비팀
|
|
||||||
// tempGRP['PLAN_FACLT_CD'] = temp.PLAN_FACLT_CD // 설비 코드
|
|
||||||
// tempGRP['PLAN_SEQ'] = temp.PLAN_SEQ // group id로 쓸 변수
|
|
||||||
// let date = temp.PLAN_DT.date.slice(0, 10);
|
|
||||||
// console.log(tempGRP['PLAN_SEQ']);
|
|
||||||
//
|
|
||||||
// if (temp?.AM_PLAN_QTY !== null) {
|
|
||||||
// tempGRP[`AM_PLAN_QTY_${date}`] = temp.ITEM_GRP
|
|
||||||
// }
|
|
||||||
// if (temp?.PM_PLAN_QTY !== null) {
|
|
||||||
// tempGRP[`PM_PLAN_QTY_${date}`] = temp.ITEM_GRP
|
|
||||||
// }
|
|
||||||
// if (temp?.NI_PLAN_QTY !== null) {
|
|
||||||
// tempGRP[`NI_PLAN_QTY_${date}`] = temp.ITEM_GRP
|
|
||||||
// }
|
|
||||||
// tempGRP['SEPER_ID'] = 'GRP';
|
|
||||||
// tempGRP['SEPER'] = '그룹';
|
|
||||||
// tempArr.push(tempGRP);
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const newObj2 = {};
|
|
||||||
// for (let i = 0; i < data.data.length; i++) {
|
|
||||||
// let temp = data.data[i]
|
|
||||||
// // console.log(temp);
|
|
||||||
// let tempGRP = {};
|
|
||||||
// let num = 0;
|
|
||||||
// let date = temp.PLAN_DT.date.slice(0, 10);
|
|
||||||
// tempGRP['WRK_TEAM'] = temp.WRK_TEAM
|
|
||||||
// tempGRP['PLAN_FACLT_CD'] = temp.PLAN_FACLT_CD
|
|
||||||
// tempGRP['PLAN_SEQ'] = temp.PLAN_SEQ
|
|
||||||
// tempGRP['DATE'] = date
|
|
||||||
// // if (temp?.AM_PLAN_QTY !== null) {
|
|
||||||
// // tempQTY[`AM_PLAN_QTY_${date}`] = temp.AM_PLAN_QTY
|
|
||||||
// // }
|
|
||||||
// // if (temp?.PM_PLAN_QTY !== null) {
|
|
||||||
// // tempQTY[`PM_PLAN_QTY_${date}`] = temp.PM_PLAN_QTY
|
|
||||||
// // }
|
|
||||||
// // if (temp?.NI_PLAN_QTY !== null) {
|
|
||||||
// // tempQTY[`NI_PLAN_QTY_${date}`] = temp.NI_PLAN_QTY
|
|
||||||
// // }
|
|
||||||
// if (temp?.AM_PLAN_QTY !== null) {
|
|
||||||
// tempGRP[`AM_PLAN_QTY`] = temp.AM_PLAN_QTY
|
|
||||||
// }
|
|
||||||
// if (temp?.PM_PLAN_QTY !== null) {
|
|
||||||
// tempGRP[`PM_PLAN_QTY`] = temp.PM_PLAN_QTY
|
|
||||||
// }
|
|
||||||
// // if (temp?.NI_PLAN_QTY !== null) {
|
|
||||||
// tempGRP[`NI_PLAN_QTY`] = temp.NI_PLAN_QTY
|
|
||||||
// // }
|
|
||||||
// tempGRP['SEPER_ID'] = 'PLAN';
|
|
||||||
// tempGRP['SEPER'] = '계획';
|
|
||||||
// console.log(tempGRP);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// tempArr2.push(tempGRP);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// console.log(mergeObj(tempArr[0], tempArr[1], tempArr[2]));
|
|
||||||
for (let i = 0; i < data.data.length; i++) {
|
|
||||||
let temp = data.data[i];
|
|
||||||
// console.log(temp);
|
|
||||||
let tempQTY = {};
|
|
||||||
let date = temp.PLAN_DT.date.slice(0, 10);
|
|
||||||
tempQTY["WRK_TEAM"] = temp.WRK_TEAM;
|
|
||||||
tempQTY["PLAN_FACLT_CD"] = temp.PLAN_FACLT_CD;
|
|
||||||
tempQTY["PLAN_SEQ"] = temp.PLAN_SEQ;
|
|
||||||
tempQTY["DATE"] = date;
|
|
||||||
// if (temp?.AM_PLAN_QTY !== null) {
|
|
||||||
// tempQTY[`AM_PLAN_QTY_${date}`] = temp.AM_PLAN_QTY
|
|
||||||
// }
|
|
||||||
// if (temp?.PM_PLAN_QTY !== null) {
|
|
||||||
// tempQTY[`PM_PLAN_QTY_${date}`] = temp.PM_PLAN_QTY
|
|
||||||
// }
|
|
||||||
// if (temp?.NI_PLAN_QTY !== null) {
|
|
||||||
// tempQTY[`NI_PLAN_QTY_${date}`] = temp.NI_PLAN_QTY
|
|
||||||
// }
|
|
||||||
if (temp?.AM_PLAN_QTY !== null) {
|
|
||||||
tempQTY[`AM_PLAN_QTY`] = temp.ITEM_GRP;
|
|
||||||
}
|
|
||||||
if (temp?.PM_PLAN_QTY !== null) {
|
|
||||||
tempQTY[`PM_PLAN_QTY`] = temp.ITEM_GRP;
|
|
||||||
}
|
|
||||||
if (temp?.NI_PLAN_QTY !== null) {
|
|
||||||
tempQTY[`NI_PLAN_QTY`] = temp.ITEM_GRP;
|
|
||||||
}
|
|
||||||
tempQTY["SEPER_ID"] = "GRP";
|
|
||||||
tempQTY["SEPER"] = "그룹";
|
|
||||||
|
|
||||||
// console.log(temp);
|
for(let i=0; i<=Object.values(result).length; i++){
|
||||||
let tempGRP = {};
|
// console.log(Object.values(result)[]);
|
||||||
|
let makingITEM = Object.values(result)[i]?.map(function(rst){
|
||||||
|
let tempITEM ={};
|
||||||
|
let date = rst.PLAN_DT.date.slice(0, 10);
|
||||||
|
let arr = new Array();
|
||||||
|
tempITEM['SEQ_NO'] = rst.SEQ_NO
|
||||||
|
tempITEM['PLAN_FACLT_CD'] = rst.PLAN_FACLT_CD
|
||||||
|
tempITEM['WRK_TEAM'] = rst.WRK_TEAM
|
||||||
|
tempITEM['SEPER'] = "그룹"
|
||||||
|
tempITEM[`AM_PLAN_QTY_${date}`] = rst.AMITEM
|
||||||
|
tempITEM[`PM_PLAN_QTY_${date}`] = rst.PMITEM
|
||||||
|
tempITEM[`NI_PLAN_QTY_${date}`] = rst.NIITEM
|
||||||
|
_this.lastGroupId = parseInt(rst.SEQ_NO);
|
||||||
|
return tempITEM;
|
||||||
|
})
|
||||||
|
|
||||||
tempGRP["WRK_TEAM"] = temp.WRK_TEAM;
|
let makingQTY = Object.values(result)[i]?.map(function(rst){
|
||||||
tempGRP["PLAN_FACLT_CD"] = temp.PLAN_FACLT_CD;
|
let tempQTY ={};
|
||||||
tempGRP["PLAN_SEQ"] = temp.PLAN_SEQ;
|
let date = rst.PLAN_DT.date.slice(0, 10);
|
||||||
tempGRP["DATE"] = date;
|
let arr = new Array();
|
||||||
// if (temp?.AM_PLAN_QTY !== null) {
|
tempQTY['SEQ_NO'] = rst.SEQ_NO
|
||||||
// tempQTY[`AM_PLAN_QTY_${date}`] = temp.AM_PLAN_QTY
|
tempQTY['SEPER'] = "계획"
|
||||||
// }
|
tempQTY['PLAN_FACLT_CD'] = rst.PLAN_FACLT_CD
|
||||||
// if (temp?.PM_PLAN_QTY !== null) {
|
tempQTY['WRK_TEAM'] = rst.WRK_TEAM
|
||||||
// tempQTY[`PM_PLAN_QTY_${date}`] = temp.PM_PLAN_QTY
|
tempQTY[`AM_PLAN_QTY_${date}`] = rst.AMQTY
|
||||||
// }
|
tempQTY[`PM_PLAN_QTY_${date}`] = rst.PMQTY
|
||||||
// if (temp?.NI_PLAN_QTY !== null) {
|
tempQTY[`NI_PLAN_QTY_${date}`] = rst.NIQTY
|
||||||
// tempQTY[`NI_PLAN_QTY_${date}`] = temp.NI_PLAN_QTY
|
_this.lastGroupId = parseInt(rst.SEQ_NO);
|
||||||
// }
|
return tempQTY;
|
||||||
if (temp?.AM_PLAN_QTY !== null) {
|
})
|
||||||
tempGRP[`AM_PLAN_QTY`] = temp.AM_PLAN_QTY;
|
|
||||||
}
|
let makingPRD = Object.values(result)[i]?.map(function(rst){
|
||||||
if (temp?.PM_PLAN_QTY !== null) {
|
let tempPRD ={};
|
||||||
tempGRP[`PM_PLAN_QTY`] = temp.PM_PLAN_QTY;
|
let date = rst.PLAN_DT.date.slice(0, 10);
|
||||||
}
|
let arr = new Array();
|
||||||
if (temp?.NI_PLAN_QTY !== null) {
|
tempPRD['SEQ_NO'] = rst.SEQ_NO
|
||||||
tempGRP[`NI_PLAN_QTY`] = temp.NI_PLAN_QTY;
|
tempPRD['SEPER'] = "실적"
|
||||||
}
|
tempPRD['PLAN_FACLT_CD'] = rst.PLAN_FACLT_CD
|
||||||
tempGRP["SEPER_ID"] = "PLAN";
|
tempPRD['WRK_TEAM'] = rst.WRK_TEAM
|
||||||
tempGRP["SEPER"] = "계획";
|
tempPRD[`AM_PLAN_QTY_${date}`] = rst.AMPRD
|
||||||
// console.log(tempGRP);
|
tempPRD[`PM_PLAN_QTY_${date}`] = rst.PMPRD
|
||||||
|
tempPRD[`NI_PLAN_QTY_${date}`] = rst.NIPRD
|
||||||
|
_this.lastGroupId = parseInt(rst.SEQ_NO);
|
||||||
|
return tempPRD;
|
||||||
|
})
|
||||||
|
|
||||||
|
const sumObjItem = {};
|
||||||
|
const sumObjQty = {};
|
||||||
|
const sumObjPrd = {};
|
||||||
|
|
||||||
|
|
||||||
|
if(makingITEM !==undefined){
|
||||||
|
makingITEM.forEach(obj => {
|
||||||
|
Object.keys(obj).forEach(key => {
|
||||||
|
sumObjItem[key] = obj[key];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
makingQTY.forEach(obj => {
|
||||||
|
Object.keys(obj).forEach(key => {
|
||||||
|
sumObjQty[key] = obj[key];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
makingPRD.forEach(obj => {
|
||||||
|
Object.keys(obj).forEach(key => {
|
||||||
|
sumObjPrd[key] = obj[key];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
arr.push(sumObjItem);
|
||||||
|
arr.push(sumObjQty);
|
||||||
|
arr.push(sumObjPrd);
|
||||||
|
}
|
||||||
|
|
||||||
tempArr.push(tempQTY);
|
|
||||||
tempArr.push(tempGRP);
|
|
||||||
}
|
}
|
||||||
// console.log(tempArr);
|
|
||||||
let makingData = Object.groupBy(tempArr, ({ SEPER_ID }) => SEPER_ID);
|
|
||||||
|
|
||||||
const objects = [
|
return arr;
|
||||||
{ id: 1, value: 10 },
|
|
||||||
{ id: 2, value: 20 },
|
|
||||||
{ id: 1, value: 30 },
|
|
||||||
{ id: 3, value: 40 },
|
|
||||||
];
|
|
||||||
|
|
||||||
const mergedObjects3 = [];
|
|
||||||
|
|
||||||
makingData["PLAN"].map((obj) => {
|
|
||||||
const existingObjIndex = mergedObjects3.findIndex(
|
|
||||||
(item) => item.PLAN_SEQ === obj.PLAN_SEQ
|
|
||||||
);
|
|
||||||
if (existingObjIndex !== -1) {
|
|
||||||
if (obj.AM_PLAN_QTY !== undefined) {
|
|
||||||
mergedObjects3[existingObjIndex].AM_PLAN_QTY = obj.AM_PLAN_QTY;
|
|
||||||
}
|
|
||||||
if (obj.PM_PLAN_QTY !== undefined) {
|
|
||||||
mergedObjects3[existingObjIndex].PM_PLAN_QTY = obj.PM_PLAN_QTY;
|
|
||||||
}
|
|
||||||
if (obj.NI_PLAN_QTY !== undefined) {
|
|
||||||
mergedObjects3[existingObjIndex].NI_PLAN_QTY = obj.NI_PLAN_QTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
// mergedObjects3[existingObjIndex].AM_PLAN_QTY += obj.AM_PLAN_QTY;
|
|
||||||
// mergedObjects3[existingObjIndex].PM_PLAN_QTY += obj.PM_PLAN_QTY;
|
|
||||||
// mergedObjects3[existingObjIndex].NI_PLAN_QTY += obj.NI_PLAN_QTY;
|
|
||||||
} else {
|
|
||||||
mergedObjects3.push({ ...obj });
|
|
||||||
}
|
|
||||||
console.log(obj);
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(mergedObjects3);
|
|
||||||
|
|
||||||
const mergedObjects4 = [];
|
|
||||||
makingData["GRP"].map((obj) => {
|
|
||||||
const existingObjIndex = mergedObjects4.findIndex(
|
|
||||||
(item) => item.PLAN_SEQ === obj.PLAN_SEQ
|
|
||||||
);
|
|
||||||
if (existingObjIndex !== -1) {
|
|
||||||
// let temp_PM = 'PM_PLAN_QTY_'+obj.DATE
|
|
||||||
// let temp_NI = 'NI_PLAN_QTY_'+obj.DATE
|
|
||||||
// let temp_AM = 'AM_PLAN_QTY_'+obj.DATE
|
|
||||||
|
|
||||||
if (obj.AM_PLAN_QTY !== undefined) {
|
|
||||||
mergedObjects4[existingObjIndex].AM_PLAN_QTY = obj.AM_PLAN_QTY;
|
|
||||||
}
|
|
||||||
if (obj.PM_PLAN_QTY !== undefined) {
|
|
||||||
mergedObjects4[existingObjIndex].PM_PLAN_QTY = obj.PM_PLAN_QTY;
|
|
||||||
}
|
|
||||||
if (obj.NI_PLAN_QTY !== undefined) {
|
|
||||||
mergedObjects4[existingObjIndex].NI_PLAN_QTY = obj.NI_PLAN_QTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
// mergedObjects3[existingObjIndex].AM_PLAN_QTY += obj.AM_PLAN_QTY;
|
|
||||||
// mergedObjects3[existingObjIndex].PM_PLAN_QTY += obj.PM_PLAN_QTY;
|
|
||||||
// mergedObjects3[existingObjIndex].NI_PLAN_QTY += obj.NI_PLAN_QTY;
|
|
||||||
} else {
|
|
||||||
mergedObjects4.push({ ...obj });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
console.log(mergedObjects4);
|
|
||||||
|
|
||||||
// const mergedObjects2 = makingData['GRP'].reduce((acc, obj) => {
|
|
||||||
// const existingObj = acc.find(item => item.PLAN_SEQ === obj.PLAN_SEQ);
|
|
||||||
// let temp_PM = 'PM_PLAN_QTY_'+obj.DATE
|
|
||||||
// let temp_NI = 'NI_PLAN_QTY_'+obj.DATE
|
|
||||||
// let temp_AM = 'AM_PLAN_QTY_'+obj.DATE
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// if (existingObj!== undefined) {
|
|
||||||
//
|
|
||||||
// if(existingObj[temp_AM]!== undefined){
|
|
||||||
// existingObj[temp_AM] = obj.AM_PLAN_QTY;
|
|
||||||
// }
|
|
||||||
// if(obj.PM_PLAN_QTY !== undefined){
|
|
||||||
// existingObj[temp_PM]= obj.PM_PLAN_QTY;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// if(obj.NI_PLAN_QTY !== undefined){
|
|
||||||
// existingObj[temp_NI]= obj.NI_PLAN_QTY;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
// acc.push({ ...obj });
|
|
||||||
// }
|
|
||||||
// return acc;
|
|
||||||
// }, []);
|
|
||||||
//
|
|
||||||
// // console.log(mergedObjects2);
|
|
||||||
//
|
|
||||||
// const mergedObjects = makingData['PLAN'].reduce((acc, obj) => {
|
|
||||||
// const existingObj = acc.find(item => item.PLAN_SEQ === obj.PLAN_SEQ);
|
|
||||||
// let temp_AM = 'AM_PLAN_QTY_'+obj.DATE
|
|
||||||
// let temp_PM = 'PM_PLAN_QTY_'+obj.DATE
|
|
||||||
// let temp_NI = 'NI_PLAN_QTY_'+obj.DATE
|
|
||||||
// // existingObj[temp_AM] = 1;
|
|
||||||
// if(existingObj !== undefined ){
|
|
||||||
// // console.log(existingObj);
|
|
||||||
// if(obj.AM_PLAN_QTY !== undefined){
|
|
||||||
//
|
|
||||||
// // console.log(obj.AM_PLAN_QTY);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // console.log(existingObj[temp_AM]);
|
|
||||||
// if (existingObj !== undefined ) {
|
|
||||||
//
|
|
||||||
// if(obj.AM_PLAN_QTY !== undefined){
|
|
||||||
// // console.log('asdf');
|
|
||||||
// existingObj[temp_AM]= obj.AM_PLAN_QTY;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// if(obj.PM_PLAN_QTY !== undefined){
|
|
||||||
// existingObj[temp_PM]= obj.PM_PLAN_QTY;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// if(obj.NI_PLAN_QTY !== undefined){
|
|
||||||
// existingObj[temp_NI]= obj.NI_PLAN_QTY;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
// acc.push({ ...obj });
|
|
||||||
// }
|
|
||||||
// return acc;
|
|
||||||
// }, []);
|
|
||||||
//
|
|
||||||
// // doubleArr.push(mergedObjects, mergedObjects2);
|
|
||||||
//
|
|
||||||
let newArr = mergedObjects4.concat(mergedObjects3);
|
|
||||||
// let group = Object.groupBy(newArr,({PLAN_SEQ}) => PLAN_SEQ)
|
|
||||||
|
|
||||||
// console.log(Object.values(group));
|
|
||||||
|
|
||||||
return newArr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -318,7 +124,7 @@ class Tb_main_class {
|
||||||
let data = new Object();
|
let data = new Object();
|
||||||
for (let i = 0; i < arr.length; i++) {
|
for (let i = 0; i < arr.length; i++) {
|
||||||
let temp = [arr[i]];
|
let temp = [arr[i]];
|
||||||
console.log();
|
|
||||||
if (document.getElementById(arr[i]).type == "checkbox") {
|
if (document.getElementById(arr[i]).type == "checkbox") {
|
||||||
data[temp] = document.getElementById(temp).checked ? "Y" : "N";
|
data[temp] = document.getElementById(temp).checked ? "Y" : "N";
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -332,8 +138,7 @@ class Tb_main_class {
|
||||||
data: data,
|
data: data,
|
||||||
|
|
||||||
success: (data) => {
|
success: (data) => {
|
||||||
console.log(data.code);
|
|
||||||
console.table(data.data);
|
|
||||||
if (data.code) {
|
if (data.code) {
|
||||||
//DB에서 받아온 데이터 가공하는 manageData 함수 참조
|
//DB에서 받아온 데이터 가공하는 manageData 함수 참조
|
||||||
this.tbList.setData(this.manageData(data));
|
this.tbList.setData(this.manageData(data));
|
||||||
|
|
@ -363,12 +168,15 @@ class Tb_main_class {
|
||||||
* @Parameter 없음
|
* @Parameter 없음
|
||||||
*/
|
*/
|
||||||
setFilter() {
|
setFilter() {
|
||||||
|
this.tbList ="";
|
||||||
this.init();
|
this.init();
|
||||||
|
|
||||||
this.getMainList(
|
this.getMainList(
|
||||||
"getPlanList",
|
"getPlanList",
|
||||||
"team_pop",
|
"team_pop",
|
||||||
"product_pop",
|
"product_pop",
|
||||||
"sub_product_pop"
|
"sub_product_pop",
|
||||||
|
"plan_date"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -378,27 +186,31 @@ class Tb_main_class {
|
||||||
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
* @function 기본키, _STATUS_:I 값을 넣은 행 추가
|
||||||
*/
|
*/
|
||||||
addRow() {
|
addRow() {
|
||||||
|
console.log("test");
|
||||||
|
this.lastGroupId += 1;
|
||||||
|
|
||||||
// Tabulator 인스턴스에 데이터 추가
|
// Tabulator 인스턴스에 데이터 추가
|
||||||
this.tbList.addRow({
|
this.tbList.addRow({
|
||||||
groupId: this.lastGroupId + 1,
|
SEQ_NO: this.lastGroupId,
|
||||||
SEPER: "그룹",
|
SEPER: "그룹",
|
||||||
_STATUS_: "I",
|
_STATUS_: "I",
|
||||||
SEPER_ID: "GRP",
|
SEPER_ID: "GRP",
|
||||||
});
|
});
|
||||||
|
|
||||||
this.tbList.addRow({
|
this.tbList.addRow({
|
||||||
groupId: this.lastGroupId + 1,
|
SEQ_NO: this.lastGroupId,
|
||||||
SEPER: "계획",
|
SEPER: "계획",
|
||||||
_STATUS_: "I",
|
_STATUS_: "I",
|
||||||
SEPER_ID: "PLAN",
|
SEPER_ID: "PLAN",
|
||||||
});
|
});
|
||||||
|
|
||||||
this.tbList.addRow({
|
this.tbList.addRow({
|
||||||
groupId: this.lastGroupId + 1,
|
SEQ_NO: this.lastGroupId,
|
||||||
SEPER: "실적",
|
SEPER: "실적",
|
||||||
_STATUS_: "I",
|
_STATUS_: "I",
|
||||||
SEPER_ID: "RST",
|
SEPER_ID: "RST",
|
||||||
});
|
});
|
||||||
|
|
||||||
this.lastGroupId += 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -487,9 +299,78 @@ class Tb_main_class {
|
||||||
* @function _STATUS_ 값이 있는 데이터만 추려서 없으면 생성, 있으면 수정하기
|
* @function _STATUS_ 값이 있는 데이터만 추려서 없으면 생성, 있으면 수정하기
|
||||||
*/
|
*/
|
||||||
putData() {
|
putData() {
|
||||||
console.log(this.tbList.getData());
|
// let _this = this;
|
||||||
// 기본키 중복 확인 및 방지
|
console.log(this.tbList.getData().filter((row) => row._STATUS_));
|
||||||
// _STATUS_ 있는 데이터만 들고와서 PUT하기
|
// 저장 시 상태 변화 없는 row 요청 X
|
||||||
|
if (this.tbList.getData().filter((row) => row._STATUS_).length == 0) {
|
||||||
|
this.getMainList();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const blankObj = [];
|
||||||
|
const reqData = [];
|
||||||
|
|
||||||
|
this.tbList.getRows().forEach((row) => {
|
||||||
|
// console.log(row.getData('_STATUS_'))
|
||||||
|
if (row.getData()["_STATUS_"]) {
|
||||||
|
if (
|
||||||
|
Object.keys(row._row.data)
|
||||||
|
.filter((key) => key !== "_STATUS_" && key !== "USE_FLG")
|
||||||
|
.every((key) => {
|
||||||
|
const value = row._row.data[key];
|
||||||
|
return value === undefined || value === "";
|
||||||
|
})
|
||||||
|
) {
|
||||||
|
blankObj.push(row);
|
||||||
|
} else {
|
||||||
|
reqData.push(row.getData());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let postdata = {
|
||||||
|
mode: "getOrderList",
|
||||||
|
reqdata: JSON.stringify(
|
||||||
|
this.tbList.getData().filter((row) => row._STATUS_)
|
||||||
|
),
|
||||||
|
};
|
||||||
|
if (blankObj.length !== 0) {
|
||||||
|
kuls_confirm(
|
||||||
|
"비어있는 행을 무시하고 진행하시겠습니까?",
|
||||||
|
"",
|
||||||
|
() => {
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: postdata,
|
||||||
|
success: function (data) {
|
||||||
|
if (data.code) {
|
||||||
|
kuls_success("저장되었습니다.");
|
||||||
|
this.getMainList();
|
||||||
|
Tb_insp_list.getMainList();
|
||||||
|
} else {
|
||||||
|
this.tbList.getRows().forEach((row) => {
|
||||||
|
//일부 적용된 열 update 처리
|
||||||
|
if (data.data.includes(row.getData()["PLANT_CD"])) {
|
||||||
|
row.update({ _STATUS_: "U" });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
kuls_alert(data.mesg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (request, status, error) {
|
||||||
|
kuls_alert(error.message);
|
||||||
|
},
|
||||||
|
complete: function () {},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
blankObj.forEach((row) => {
|
||||||
|
row.getElement().classList.add("blank-row");
|
||||||
|
});
|
||||||
|
console.log(blankObj);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -510,7 +391,7 @@ class Tb_main_class {
|
||||||
let month = ("0" + (date.getMonth() + 1)).slice(-2); // Adding leading zero
|
let month = ("0" + (date.getMonth() + 1)).slice(-2); // Adding leading zero
|
||||||
let day = ("0" + date.getDate()).slice(-2); // Adding leading zero
|
let day = ("0" + date.getDate()).slice(-2); // Adding leading zero
|
||||||
let formattedDate = `${month}월 ${day}일`;
|
let formattedDate = `${month}월 ${day}일`;
|
||||||
console.log(formattedDate);
|
|
||||||
columns.push({
|
columns.push({
|
||||||
title: formattedDate,
|
title: formattedDate,
|
||||||
columns: [
|
columns: [
|
||||||
|
|
@ -521,7 +402,7 @@ class Tb_main_class {
|
||||||
editor: "input",
|
editor: "input",
|
||||||
width: 50,
|
width: 50,
|
||||||
editable: (cell) => {
|
editable: (cell) => {
|
||||||
return cell.getRow().getPosition() / 3 !== 1;
|
return cell.getRow().getPosition() % 3 !== 0;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -531,7 +412,7 @@ class Tb_main_class {
|
||||||
editor: "input",
|
editor: "input",
|
||||||
width: 50,
|
width: 50,
|
||||||
editable: (cell) => {
|
editable: (cell) => {
|
||||||
return cell.getRow().getPosition() / 3 !== 1;
|
return cell.getRow().getPosition() % 3 !== 0;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -541,7 +422,7 @@ class Tb_main_class {
|
||||||
width: 50,
|
width: 50,
|
||||||
editor: "input",
|
editor: "input",
|
||||||
editable: (cell) => {
|
editable: (cell) => {
|
||||||
return cell.getRow().getPosition() / 3 !== 1;
|
return cell.getRow().getPosition() % 3 !== 0;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
@ -556,17 +437,18 @@ class Tb_main_class {
|
||||||
* @Parameter 없음
|
* @Parameter 없음
|
||||||
*/
|
*/
|
||||||
init() {
|
init() {
|
||||||
|
let fields = "";
|
||||||
// field 정의
|
// field 정의
|
||||||
const fields = [
|
fields = [
|
||||||
{ field: "id", title: "id", width: 100, visible: false },
|
{field: "SEQ_NO", title: "id", width: 100, visible: false},
|
||||||
{ field: "WRK_TEAM", title: "팀", width: 100, editor: "input" },
|
{field: "WRK_TEAM", title: "팀", width: 100, editor: "input"},
|
||||||
{ field: "PLAN_FACLT_CD", title: "설비", width: 100, editor: "input" },
|
{field: "PLAN_FACLT_CD", title: "설비", width: 100, editor: "input"},
|
||||||
{ field: "SEPER", title: "구분", width: 100 },
|
{field: "SEPER", title: "구분", width: 100},
|
||||||
// 날짜 필드 동적으로 넣을것 오늘부터 7일까지
|
// 날짜 필드 동적으로 넣을것 오늘부터 7일까지
|
||||||
...this.getDate(),
|
...this.getDate(),
|
||||||
];
|
];
|
||||||
|
let commonFieldData = "";
|
||||||
const commonFieldData = {
|
commonFieldData = {
|
||||||
headerSort: false,
|
headerSort: false,
|
||||||
vertAlign: "middle",
|
vertAlign: "middle",
|
||||||
hozAlign: "center",
|
hozAlign: "center",
|
||||||
|
|
@ -574,7 +456,7 @@ class Tb_main_class {
|
||||||
headerHozAlign: "center", //헤더 정렬
|
headerHozAlign: "center", //헤더 정렬
|
||||||
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
|
headerSortTristate: true, //데이터 정렬 => 정/역/초기화
|
||||||
};
|
};
|
||||||
|
this.tbList = "";
|
||||||
this.tbList = new Tabulator(this.table, {
|
this.tbList = new Tabulator(this.table, {
|
||||||
layout: "fitColumns",
|
layout: "fitColumns",
|
||||||
// data: [
|
// data: [
|
||||||
|
|
@ -583,11 +465,12 @@ class Tb_main_class {
|
||||||
// { groupId: this.lastGroupId, SEPER: "실적" },
|
// { groupId: this.lastGroupId, SEPER: "실적" },
|
||||||
// ], //기본 데이터
|
// ], //기본 데이터
|
||||||
columns: fields, //컬럼 설정
|
columns: fields, //컬럼 설정
|
||||||
groupBy: "PLAN_SEQ",
|
groupBy: "SEQ_NO",
|
||||||
columnDefaults: commonFieldData,
|
columnDefaults: commonFieldData,
|
||||||
groupStartOpen: true,
|
groupStartOpen: true,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
init2(){
|
||||||
// 데이터 불러오기
|
// 데이터 불러오기
|
||||||
this.tbList.on("tableBuilt", () => {
|
this.tbList.on("tableBuilt", () => {
|
||||||
this.getMainList(
|
this.getMainList(
|
||||||
|
|
@ -614,7 +497,8 @@ class Tb_main_class {
|
||||||
// 추가
|
// 추가
|
||||||
["click", "keypress"].forEach((evt) => {
|
["click", "keypress"].forEach((evt) => {
|
||||||
this.addBtn.addEventListener(evt, () => {
|
this.addBtn.addEventListener(evt, () => {
|
||||||
this.addRow();
|
console.log("test");
|
||||||
|
this.addRow && this.addRow();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// 삭제
|
// 삭제
|
||||||
|
|
@ -629,6 +513,8 @@ class Tb_main_class {
|
||||||
const filterBtn = document.querySelector("#filter_btn");
|
const filterBtn = document.querySelector("#filter_btn");
|
||||||
filterBtn.addEventListener(evt, () => {
|
filterBtn.addEventListener(evt, () => {
|
||||||
// setFilter 또는 setData
|
// setFilter 또는 setData
|
||||||
|
this.init();
|
||||||
|
|
||||||
this.setFilter();
|
this.setFilter();
|
||||||
// this.getMainList("getPlanList","team_pop","product_pop","sub_product_pop");
|
// this.getMainList("getPlanList","team_pop","product_pop","sub_product_pop");
|
||||||
});
|
});
|
||||||
|
|
@ -644,3 +530,4 @@ class Tb_main_class {
|
||||||
}
|
}
|
||||||
const Tb_production_plan = new Tb_main_class("#main_table");
|
const Tb_production_plan = new Tb_main_class("#main_table");
|
||||||
Tb_production_plan.init();
|
Tb_production_plan.init();
|
||||||
|
Tb_production_plan.init2();
|
||||||
|
|
@ -1,2 +1,56 @@
|
||||||
<?php
|
<?php
|
||||||
$cate_id = "STS_ORDER";
|
$cate_id = "STS_ORDER";
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Overview 생산오더별 진행현황
|
||||||
|
* @History 2024-04-22 / 이원기 / 최초작성
|
||||||
|
*/
|
||||||
|
|
||||||
|
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
|
include_once _SVC_INC_PATH_ . "/auth_check.php";
|
||||||
|
include_once _HOME_INC_PATH_ . "/ajax_init.php";
|
||||||
|
|
||||||
|
if (!_notAuth("R")) {
|
||||||
|
|
||||||
|
|
||||||
|
switch ($_REQUEST['mode']) {
|
||||||
|
|
||||||
|
// 생산오더별 진행현황
|
||||||
|
case 'getStsList':
|
||||||
|
|
||||||
|
|
||||||
|
$squl = "USP_P_WO_OPER_RSLT_S40";
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
"date_st" => $_REQUEST["order_date_st"] ?: "",
|
||||||
|
// "date_st" => "2024-04-16" ?: "",
|
||||||
|
"date_ed" => $_REQUEST["order_date_ed"] ?: "",
|
||||||
|
"WO_NO" => $_REQUEST["WO_NO_P"] ?: "",
|
||||||
|
"ITEM_CD" => $_REQUEST["ITEM_CD"] ?: "",
|
||||||
|
"OP_CD" => $_REQUEST["OP_CD"] ?: "",
|
||||||
|
"FACLT_CD " => $_REQUEST["FACLT_CD_P"] ?: "",
|
||||||
|
"EMP_NO" => $_REQUEST["EMP_NO"] ?: ""
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($squl, $params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if ($rst) {
|
||||||
|
$retval['code'] = true;
|
||||||
|
while ($row = $baseObj->DB->fetch_array($rst)) {
|
||||||
|
$rows[] = $row;
|
||||||
|
};
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
} else {
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$_REQUEST['no_echo']) {
|
||||||
|
echo json_encode($retval);
|
||||||
|
// echo $retval;
|
||||||
|
}
|
||||||
|
|
@ -19,7 +19,7 @@ const VueOperStatusCode = createApp({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted(){
|
||||||
this.getCodeList();
|
this.getMainList("getStsList", "order_date_st", "order_date_ed");
|
||||||
},
|
},
|
||||||
// computed: {
|
// computed: {
|
||||||
|
|
||||||
|
|
@ -28,62 +28,99 @@ const VueOperStatusCode = createApp({
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
methods:{
|
methods:{
|
||||||
getCodeList() {
|
// tableBuild 되었을때 getManList
|
||||||
|
getMainList(mode,...test) {
|
||||||
|
const talert= window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
||||||
|
let arr = test;
|
||||||
|
// let testList = new Array();
|
||||||
|
let data = new Object();
|
||||||
|
for(let i=0; i < arr.length; i++){
|
||||||
|
let temp = [arr[i]]
|
||||||
|
console.log();
|
||||||
|
if(document.getElementById(arr[i])?.type !== "checkbox"){
|
||||||
|
data[temp] = document.getElementById(temp)?.value
|
||||||
|
}else{
|
||||||
|
data[temp] = document.getElementById(temp)?.checked?"Y":"N";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data.mode = mode
|
||||||
|
// let USEFLAG = document.getElementById("USE_FLG").checked?"Y":"N"; //사용여부
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: data,
|
||||||
|
|
||||||
|
success: (data) => {
|
||||||
|
if(data.code) {
|
||||||
|
console.log(data.data);
|
||||||
|
this.getCodeList(data.data)
|
||||||
|
}else{
|
||||||
|
kuls_alert(data.mesg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: (req, status, err) => {
|
||||||
|
kuls_alert(err.message);
|
||||||
|
},
|
||||||
|
complete: () => {
|
||||||
|
window.clearTimeout(talert);
|
||||||
|
|
||||||
|
// this.setFilter();
|
||||||
|
// this.tbList.getRows().forEach(row=>{
|
||||||
|
// row.getCell("WO_NO").getElement().addEventListener("click",(e)=>{
|
||||||
|
// this.rowClick(e,row);
|
||||||
|
// })
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
getCodeList(temp) {
|
||||||
// 임의의 데이터 직접 입력 [데이터 이렇게 php로 전처리...]
|
// 임의의 데이터 직접 입력 [데이터 이렇게 php로 전처리...]
|
||||||
|
|
||||||
|
console.log(temp);
|
||||||
|
|
||||||
|
// let temp = [
|
||||||
let temp = [
|
// {생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P00000', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// // ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// // ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// // ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
|
//
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
//
|
||||||
|
//
|
||||||
|
// ];
|
||||||
];
|
|
||||||
let realTemp = [];
|
let realTemp = [];
|
||||||
console.log(Object.values(Object.groupBy(temp,( {생산오더} )=>생산오더)));
|
console.log(Object.values(Object.groupBy(temp,( {WO_NO} )=>WO_NO)));
|
||||||
let group = Object.values(Object.groupBy(temp,( {생산오더} )=>생산오더));
|
let group = Object.values(Object.groupBy(temp,( {WO_NO,WO_SEQ} )=>WO_NO && WO_SEQ));
|
||||||
|
|
||||||
for(let i = 0; i < group.length; i++){
|
for(let i = 0; i < group.length; i++){
|
||||||
// delete group[i][0].계획수량;
|
|
||||||
|
|
||||||
// delete group[i][0].실적수량;
|
|
||||||
// delete group[i][0].투입시간;
|
|
||||||
// delete group[i][0].종료시간;
|
|
||||||
// delete group[i][0].예상종료시간;
|
|
||||||
// delete group[i][0].설비;
|
|
||||||
// delete group[i][0].작업자;
|
|
||||||
|
|
||||||
|
|
||||||
group[i][0].공정 = group[i].map(function(element){
|
group[i][0].OP_CD = group[i].map(function(element){
|
||||||
return {
|
return {
|
||||||
공정명: element.공정 ,
|
OP_CD: element?.OP_CD ,
|
||||||
계획수량: element.계획수량,
|
계획수량: element?.계획수량,
|
||||||
실적수량 : element.실적수량,
|
PRD_QTY : element?.PRD_QTY,
|
||||||
투입시간:element.투입시간,
|
ST_TM:element?.ST_TM,
|
||||||
종료시간 : element.종료시간,
|
ED_TM : element?.ED_TM,
|
||||||
예상종료시간 : element.예상종료시간 ,
|
예상종료시간 : element?.예상종료시간 ,
|
||||||
설비: element.설비,
|
FACLT_CD: element?.FACLT_CD,
|
||||||
작업자: element.작업자 }
|
EMP_NM: element?.EMP_NM }
|
||||||
|
|
||||||
});
|
});
|
||||||
console.log(group[i][0]);
|
console.log(group[i][0]);
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<!-- 조회 및 저장 버튼 -->
|
<!-- 조회 및 저장 버튼 -->
|
||||||
<div class="button-container">
|
<div class="button-container">
|
||||||
<div class="button-box">
|
<div class="button-box">
|
||||||
<button class="point-btn" id="filter_btn" @click="getCodeList()">조회</button>
|
<button class="point-btn" id="filter_btn" @click="this.getMainList('getStsList', 'order_date_st', 'order_date_ed')">조회</button>
|
||||||
<button class="point-btn disabled-btn" id="put_btn" disabled>저장</button>
|
<button class="point-btn disabled-btn" id="put_btn" disabled>저장</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -156,29 +156,29 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<tbody>
|
<tbody>
|
||||||
<template v-for="(code, idx) in codeList">
|
<template v-for="(code, idx) in codeList">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="5">{{code.생산오더}}<br>{{code.등록일}}</td>
|
<td rowspan="5">{{code.WO_NO}}<br>{{code.ORD_DT.date}}</td>
|
||||||
<td rowspan="5">{{code.품목}}<br>{{code.도면번호}}<br>{{code.업체명}}</td>
|
<td rowspan="5">{{code.ITEM_CD}}<br>{{code.DRAW_NO}}<br>{{code.BP_CD}}</td>
|
||||||
<td rowspan="5">{{code.납기일}}</td>
|
<td rowspan="5">{{code.DLVY_REQ_DT.date}}</td>
|
||||||
<td rowspan="5">{{code.작업순서}}</td>
|
<td rowspan="5">{{code.WO_SEQ}}</td>
|
||||||
<td rowspan="5">{{code.완료}}</td>
|
<td rowspan="5">{{code.완료}}</td>
|
||||||
<td colspan="2" v-for="(process, index) in code.공정" :key="`process-${index}`">{{ process?.공정명 }}</td>
|
<td colspan="2" v-for="index in 10" :key="`process-${index-1}`">{{ code.OP_CD[index-1]?.OP_CD }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="n in 20" :key="`plan-${n}`">
|
<td v-for="n in 20" :key="`plan-${n}`">
|
||||||
{{ n % 2 === 0 ? code['공정'][n/2-1]?.실적수량 : code['공정'][(n-1)/2]?.계획수량 }}
|
{{ n % 2 === 0 ? code['OP_CD'][n/2-1]?.PRD_QTY : code['OP_CD'][(n-1)/2]?.PLAN_QTY }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="n in 20" :key="`tm-${n}`">
|
<td v-for="n in 20" :key="`tm-${n}`">
|
||||||
{{ n % 2 === 0 ? code['공정'][n/2-1]?.종료시간 : code['공정'][(n-1)/2]?.투입시간 }}
|
{{ n % 2 === 0 ? code['OP_CD'][n/2-1]?.ED_TM : code['OP_CD'][(n-1)/2]?.ST_TM }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" v-for="(process, index) in code.공정" :key="`pre-${index}`">{{ process?.예상종료시간 }}</td>
|
<td colspan="2" v-for="index in 10" :key="`pre-${index}`">{{ code.OP_CD[index-1]?.예상종료시간 }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="n in 20" :key="`fa-${n}`">
|
<td v-for="n in 20" :key="`fa-${n}`">
|
||||||
{{ n % 2 === 0 ? code['공정'][n/2-1]?.작업자 : code['공정'][(n-1)/2]?.설비 }}
|
{{ n % 2 === 0 ? code['OP_CD'][n/2-1]?.EMP_NM : code['OP_CD'][(n-1)/2]?.FACLT_CD }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header flexrow form-box">
|
||||||
|
|
||||||
|
<div class="flexcol gap10">
|
||||||
|
<div class="input-container flexrow gap06">
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="" style="width:80px;">작업일</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="">시간</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="input-container flexrow gap06">
|
||||||
|
<div class="input-box flex-1 flexrow">
|
||||||
|
<label for="" style="width:80px;">등록가능수량</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="">수량</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="input-container flexrow flexend flex-1">
|
||||||
|
<div class="input-box flexrow flex-1">
|
||||||
|
<label for="" style="width:80px;">비가동사유</label>
|
||||||
|
|
||||||
|
<div class="round-tab-box" style="width:calc(100% - 100px);">
|
||||||
|
<button type="button" class="tab-btn left-round">작업종료</button>
|
||||||
|
<button type="button" class="tab-btn">품목교체</button>
|
||||||
|
<button type="button" class="tab-btn">설비고장</button>
|
||||||
|
<button type="button" class="tab-btn right-round">자체결품</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="button" class="add-btn basic-btn">추가</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box flexcol flexbetween" style="height:calc(100% - 160px);">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="height-93">
|
||||||
|
<div class="hy-table" id="isDef_table"></div>
|
||||||
|
</div>
|
||||||
|
<div class="table-title">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header form-box">
|
||||||
|
<div class="input-container flexrow gap06">
|
||||||
|
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="" style="width:80px;">품목</label>
|
||||||
|
<input v-model="formData.ITEM_CD" type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="">공정</label>
|
||||||
|
<input v-model="formData.OP_CD" type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box flexcol flexbetween" style="height: calc(100% - 80px);">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="height-93">
|
||||||
|
<div class="hy-table" id="isDefHst_table"></div>
|
||||||
|
</div>
|
||||||
|
<div class="table-title">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box height-full flexcol flexbetween">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="height-93">
|
||||||
|
<div class="hy-table" id="isFacility_table"></div>
|
||||||
|
</div>
|
||||||
|
<div class="table-title">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box height-full flexcol flexbetween">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="height-half">
|
||||||
|
<div class="hy-table" id="isFacility_table"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header form-box">
|
||||||
|
<div class="input-container flexcol gap06">
|
||||||
|
|
||||||
|
<div class="input-box flexrow flexend flex-1">
|
||||||
|
<label for="" style="width:80px;">고장등록시간</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-box flexrow flexend flex-1 flexfillstart">
|
||||||
|
<label for="" style="width:80px;">고장신고사유</label>
|
||||||
|
<textarea id="" name="" class="form-control form-control-sm"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-title" style="margin-top:10px;">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box height-full flexcol flexbetween gap10">
|
||||||
|
|
||||||
|
<ul class="flexrow tab-menu gap06">
|
||||||
|
<li id="first-tab" @click="isChangeTab('isInsp')" :class="{'on':isInspVal}">실적</li>
|
||||||
|
<li id="second-tab" @click="isChangeTab('isFile')" :class="{'on':isFileVal}">파일</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- tab container -->
|
||||||
|
<div v-if="isInspVal" class="table-box flexcol flexbetween" style="height:calc(100% - 43px);">
|
||||||
|
|
||||||
|
<div style="height:calc(100% - 112px);">
|
||||||
|
<div class="hy-table group-table groupby" id="isInsp_table"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header form-box">
|
||||||
|
|
||||||
|
<div class="input-container flexrow gap06">
|
||||||
|
|
||||||
|
<div class="input-box flex-1 flexrow">
|
||||||
|
<label for="">등록가능수량</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
<div class="input-box flex-1 flexrow flexend">
|
||||||
|
<label for="">수량</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-title" style="margin-top:10px;">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- tab container 종료 // -->
|
||||||
|
<!-- tab container -->
|
||||||
|
<div v-if="isFileVal" class="table-box flexcol flexbetween" style="height:calc(100% - 46px);">
|
||||||
|
|
||||||
|
<div style="height:calc(100% - 46px);">
|
||||||
|
<div class="hy-table" id="isInsp"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-title" style="margin-top:10px;">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- tab container 종료 // -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box height-full flexcol flexbetween">
|
||||||
|
|
||||||
|
<div style="height:calc(100% - 148px);">
|
||||||
|
<div class="hy-table" id="isNoRun_table"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header form-box">
|
||||||
|
<div class="input-container flexcol gap06">
|
||||||
|
|
||||||
|
<div class="input-box flexrow flexend flex-1">
|
||||||
|
<label for="" style="width:80px;">작업종료시간</label>
|
||||||
|
<input v-model='dateTime' type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
<div class="input-box flexrow flexend flex-1">
|
||||||
|
<label for="" style="width:80px;">비가동사유</label>
|
||||||
|
<div class="round-tab-box flexrow">
|
||||||
|
<button v-for="(vals, idx) in Object.keys(STOP_CD)" @click="STOP_CD_val = vals; this.callBack();" :class="{'left-round':idx===0, 'right-round':idx===Object.keys(STOP_CD).length-1}" type="button" class="tab-btn">{{ STOP_CD[vals] }}</button>
|
||||||
|
<!-- STOP_CD 가져오기
|
||||||
|
FOR문 으로 BTN만들기
|
||||||
|
1번째와 마지막 BTN에 다른 클래스 추가하기 -->
|
||||||
|
|
||||||
|
<!-- <button type="button" @click="STOP_CD = ''" class="tab-btn left-round">작업종료</button>
|
||||||
|
<button type="button" class="tab-btn">품목교체</button>
|
||||||
|
<button type="button" class="tab-btn">설비고장</button>
|
||||||
|
<button type="button" class="tab-btn right-round">자체결품</button> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-title" style="margin-top:10px;">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<button type="button" class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header flexrow form-box">
|
||||||
|
|
||||||
|
<div class="flexcol gap10">
|
||||||
|
<div class="input-container flexrow gap06">
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="" style="width:80px;">작업일</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="">시간</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="input-container flexrow gap06">
|
||||||
|
<div class="input-box flex-1 flexrow">
|
||||||
|
<label for="" style="width:80px;">이전공정<br>양품수량</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="">수량</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="button" class="add-btn basic-btn">추가</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box flexcol flexbetween" style="height:calc(100% - 120px);">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="height-93">
|
||||||
|
<div class="hy-table" id="isProd_table"></div>
|
||||||
|
</div>
|
||||||
|
<div class="table-title">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<div class="table-box height-full flexcol flexbetween">
|
||||||
|
|
||||||
|
|
||||||
|
<div style="height:calc(100% - 112px);">
|
||||||
|
<div class="hy-table" id="isRun_table"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header form-box">
|
||||||
|
<div class="input-container flexcol gap06">
|
||||||
|
|
||||||
|
<div class="input-box flexrow flexend flex-1">
|
||||||
|
<label for="run-time" style="width:80px;">가동시작시간</label>
|
||||||
|
<input v-model='dateTime' @change="this.callBack();" type="text" id="run-time" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-title" style="margin-top:10px;">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<button type="button" class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
<!-- 폼 헤더 -->
|
||||||
|
<div class="form-header form-box">
|
||||||
|
<div class="input-container flexrow gap06">
|
||||||
|
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="" style="width:80px;">소속</label>
|
||||||
|
<input type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-box flex-1">
|
||||||
|
<label for="">작업자</label>
|
||||||
|
<input v-model="formData.EMP_NM" type="text" id="" name="" class="form-control form-control-sm" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 폼 헤더 종료 // -->
|
||||||
|
|
||||||
|
<!-- 테이블 박스 -->
|
||||||
|
<!-- <div class="table-box flexcol flexbetween" style="height: calc(100% - 80px);"> -->
|
||||||
|
<div class="table-box flexcol flexbetween height-full" >
|
||||||
|
|
||||||
|
|
||||||
|
<div class="height-full">
|
||||||
|
<div class="hy-table groupby" id="isWorker_table"></div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="table-title">
|
||||||
|
<div class="button-box flexend">
|
||||||
|
|
||||||
|
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
확인
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
||||||
|
취소
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?php
|
||||||
|
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
|
?>
|
||||||
|
<!-- file upload popup <첨부파일 등록> -->
|
||||||
|
|
||||||
|
<!-- 첨부파일 등록 팝업 -->
|
||||||
|
<div id="popup_file_upload">
|
||||||
|
<div class="awn-popup-confirm awn-partner custom-popup">
|
||||||
|
<div class="awn-popup-title"><i class="bi bi-card-heading"></i> 작업표준서</div>
|
||||||
|
<div class="awn-popup-search mb-block btn-ksmain-inject-block">
|
||||||
|
<!-- <div class="s_exp">※ 더블클릭으로 선택/반영 합니다.</div>-->
|
||||||
|
<div class="s_fld form-inline d-block">
|
||||||
|
<!-- <label for="sgrp">오더번호: </label>
|
||||||
|
<select id="sgrp" name="sgrp" class="form-control form-select w100">
|
||||||
|
</select> -->
|
||||||
|
|
||||||
|
<!-- <label for="stxt">오더번호: </label>-->
|
||||||
|
<!-- <input type="text" class="form-control d-inline w120 align-bottom">-->
|
||||||
|
<!-- <label for="stxt">공정: </label>-->
|
||||||
|
<!-- <input type="text" name="stxt" id="stxt" class="form-control d-inline w120 align-bottom">-->
|
||||||
|
<!-- |
|
||||||
|
<button type="button" id="ptReset" class="btn btn-danger">
|
||||||
|
<i class="fa-regular fa-window-restore"></i>
|
||||||
|
초기화
|
||||||
|
</button> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="awn-popup-content" style="padding: 10px 10px;">
|
||||||
|
<div class="table-box flex-1" id="main_table">
|
||||||
|
<!-- 테이블 헤더 (제목, 추가, 삭제, 저장) -->
|
||||||
|
<div class="table-title">
|
||||||
|
<p class="tilte"></p>
|
||||||
|
|
||||||
|
<!-- 버튼 -->
|
||||||
|
<!-- <div class="button-box">-->
|
||||||
|
<!-- <button class="add-btn reverse-btn">-->
|
||||||
|
<!-- --><?php //include _SVC_INC_PATH_ . '/img/add.php' ?>
|
||||||
|
<!-- 추가-->
|
||||||
|
<!-- </button>-->
|
||||||
|
<!-- <button class="remove-btn reverse-btn">-->
|
||||||
|
<!-- --><?php //include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
||||||
|
<!-- 삭제-->
|
||||||
|
<!-- </button>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- 버튼 종료 // -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 헤더 종료 // -->
|
||||||
|
|
||||||
|
<!-- 테이블 -->
|
||||||
|
<div class="hy-table"></div>
|
||||||
|
<!-- 테이블 종료 // -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- file upload popup <첨부파일 등록> -->
|
||||||
|
|
||||||
|
<script src="/sts_order_prod/reg_prod_result.js"></script>
|
||||||
|
|
@ -0,0 +1,206 @@
|
||||||
|
<?php
|
||||||
|
$cate_id = "STS_ORDER_PROD";
|
||||||
|
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
|
include_once _SVC_INC_PATH_ ."/auth_check.php";
|
||||||
|
include_once _HOME_INC_PATH_ ."/ajax_init.php";
|
||||||
|
|
||||||
|
|
||||||
|
if( !_notAuth("R") ){/************ 권한체크*/
|
||||||
|
switch( $_REQUEST['mode'] ){
|
||||||
|
// 작업자 조회
|
||||||
|
// 설비 조회
|
||||||
|
// 양품 수량 조회
|
||||||
|
// 불량 수량 조회
|
||||||
|
// 과거 불량이력 조회
|
||||||
|
// 설비 고장등록 조회
|
||||||
|
|
||||||
|
// 가동 vs 비가동
|
||||||
|
case "getWokerInfo":
|
||||||
|
$sql = "USP_P_REG_PROD_POP_S10";
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
'WO_NO' => $_REQUEST["WO_NO"] ?: "",
|
||||||
|
'OP_SEQ' => $_REQUEST["OP_SEQ"] ?: ""
|
||||||
|
);
|
||||||
|
|
||||||
|
$rst = $baseObj->DB->exec($sql,$params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if( $rst ){
|
||||||
|
$retval['code'] = true;
|
||||||
|
while( $row = $baseObj->DB->fetch_array($rst) ){
|
||||||
|
$rows[] = $row;
|
||||||
|
}
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = "정상적으로 작동하였습니다.";
|
||||||
|
}else{
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case "getRunInfo":
|
||||||
|
|
||||||
|
$sql = "USP_P_REG_PROD_RUN_S10";
|
||||||
|
$params = array(
|
||||||
|
'WO_NO' => $_REQUEST["WO_NO"] ?: "",
|
||||||
|
'WO_SEQ' => $_REQUEST["WO_SEQ"] ?: "",
|
||||||
|
'EMP_NO' => $_REQUEST["EMP_NO"] ?: "",
|
||||||
|
);
|
||||||
|
|
||||||
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if( $rst ){
|
||||||
|
$retval['code'] = true;
|
||||||
|
while( $row = $baseObj->DB->fetch_array($rst) ){
|
||||||
|
$rows[] = $row;
|
||||||
|
}
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = "정상적으로 작동하였습니다.";
|
||||||
|
}else{
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "checkRunStatus":
|
||||||
|
|
||||||
|
$sql = "USP_P_REG_PROD_RUN_S20";
|
||||||
|
$params = array(
|
||||||
|
'WO_NO' => $_REQUEST["WO_NO"] ?: "",
|
||||||
|
'WO_SEQ' => $_REQUEST["WO_SEQ"] ?: "",
|
||||||
|
'EMP_NO' => $_REQUEST["EMP_NO"] ?: "",
|
||||||
|
);
|
||||||
|
|
||||||
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if( $rst ){
|
||||||
|
$retval['code'] = true;
|
||||||
|
while( $row = $baseObj->DB->fetch_array($rst) ){
|
||||||
|
$rows[] = $row;
|
||||||
|
}
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = "정상적으로 작동하였습니다.";
|
||||||
|
}else{
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case "putRunInfo":
|
||||||
|
if (_notAuth("W")){ break; }
|
||||||
|
|
||||||
|
$_REQUEST["reqdata"] = json_decode($_REQUEST['reqdata']);
|
||||||
|
|
||||||
|
foreach ($_REQUEST['reqdata'] as $data) {
|
||||||
|
$data = (array) $data;
|
||||||
|
|
||||||
|
if($data['_STATUS_'] == 'U'){
|
||||||
|
$sql = 'USP_P_REG_PROD_RUN_U10';
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
"FACLT_OPER_NO" => $data['FACLT_OPER_NO']?:"",
|
||||||
|
"RUNSTOP_GB" => $data['RUNSTOP_GB']?:"",
|
||||||
|
"STOP_CD" => $data['STOP_CD'] ?: "",
|
||||||
|
"OPER_ED_TM" => $data['OPER_ED_TM'] ?: "",
|
||||||
|
|
||||||
|
"MAKE_USER_ID" => $GLOBALS['_Umem']['member_id'],
|
||||||
|
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
$sql = 'USP_P_REG_PROD_RUN_I10';
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
"FACLT_CD" => $data['FACLT_CD']?:"",
|
||||||
|
"WO_NO" => $data['WO_NO']?:"",
|
||||||
|
"WO_SEQ" => $data['WO_SEQ'] ?: "",
|
||||||
|
"WORK_DT" => $data['WORK_DT']?:"",
|
||||||
|
"RUNSTOP_GB" => $data['RUNSTOP_GB']?:"",
|
||||||
|
"OPER_ST_TM" => $data['OPER_ST_TM'] ?: "",
|
||||||
|
"EMP_NO" => $data['EMP_NO'] ?: "",
|
||||||
|
|
||||||
|
"MAKE_USER_ID" => $GLOBALS['_Umem']['member_id'],
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$rst = $baseObj->DB->exec($sql, $params);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($rst && !$_REQUEST['RS_CODE']) {
|
||||||
|
$retval['code'] = true;
|
||||||
|
} else {
|
||||||
|
$retval['code'] = false;
|
||||||
|
$retval['mesg'] = $_REQUEST['RS_MSG'];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'getRoutingList':
|
||||||
|
$sql = "USP_B_ROUTING_S10";
|
||||||
|
$params = Array(
|
||||||
|
"ITEM_CD" => $_REQUEST['ITEM_CD']?:"",
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($sql,$params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if( $rst ){
|
||||||
|
while( $row = $baseObj->DB->fetch_array($rst) ){
|
||||||
|
$rows[] = $row;
|
||||||
|
};
|
||||||
|
|
||||||
|
$retval['code'] = true;
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
// print_r($retval['data']);
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
}else{
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'getDrawList':
|
||||||
|
$sql = "USP_B_ITEM_DRAW_S10";
|
||||||
|
$params = Array(
|
||||||
|
"ITEM_CD" => $_REQUEST['ITEM_CD'],
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($sql,$params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if( $rst ){
|
||||||
|
while( $row = $baseObj->DB->fetch_array($rst) ){
|
||||||
|
$rows[] = $row;
|
||||||
|
};
|
||||||
|
|
||||||
|
$retval['code'] = true;
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
}else{
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'getDefHst':
|
||||||
|
$sql = "USP_P_REG_PROD_DEF_HST_S10";
|
||||||
|
$params = Array(
|
||||||
|
"ITEM_CD" => $_REQUEST['ITEM_CD'],
|
||||||
|
"OP_CD" => $_REQUEST['OP_CD']
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($sql,$params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if( $rst ){
|
||||||
|
while( $row = $baseObj->DB->fetch_array($rst) ){
|
||||||
|
$rows[] = $row;
|
||||||
|
};
|
||||||
|
|
||||||
|
$retval['code'] = true;
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
}else{
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !$_REQUEST['no_echo'] ){
|
||||||
|
echo json_encode($retval);
|
||||||
|
}
|
||||||
|
|
@ -1,16 +1,109 @@
|
||||||
class SimpleTable {
|
class SimpleTable {
|
||||||
constructor(fields){
|
constructor(fields, getmode, putmode, formData, addData, updateData){
|
||||||
this.field = fields;
|
// ajax
|
||||||
this.ajaxUrl = './reg_prod_result.ajax.php';
|
this.ajaxUrl = './reg_prod_result.ajax.php';
|
||||||
|
this.getMode = getmode?getmode:'';
|
||||||
|
this.putMode = putmode?putmode:'';
|
||||||
|
|
||||||
|
// data
|
||||||
|
this.field = fields;
|
||||||
|
this.formData = formData;
|
||||||
|
|
||||||
|
// element
|
||||||
this.container = document.querySelector(".detail-contents");
|
this.container = document.querySelector(".detail-contents");
|
||||||
console.log(this.container)
|
|
||||||
this.table = this.container?.querySelector(".hy-table");
|
this.table = this.container?.querySelector(".hy-table");
|
||||||
|
this.addBtn = this.container?.querySelector(".add-btn");
|
||||||
|
|
||||||
|
// addCode
|
||||||
|
this.addCode = ''
|
||||||
|
|
||||||
|
// listener init
|
||||||
|
this.init(addData, updateData); // 리스너 초기화
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getMainList(){}
|
// initEventListener() {
|
||||||
addRow(){}
|
// this.callPutData = (addData, updateData, btn) => {
|
||||||
putData(){}
|
// this.putData(addData, updateData);
|
||||||
init(){
|
// if (btn === 'isRun') {
|
||||||
|
// document.querySelector("#isNoRun").disabled = false;
|
||||||
|
// document.querySelector("#isRun").disabled = true;
|
||||||
|
// this.addBtn.disabled = true;
|
||||||
|
// } else if (btn === 'isNoRun') {
|
||||||
|
// document.querySelector("#isNoRun").disabled = true;
|
||||||
|
// document.querySelector("#isRun").disabled = false;
|
||||||
|
// this.addBtn.disabled = true;
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
|
||||||
|
getMainList(){
|
||||||
|
return ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: {
|
||||||
|
mode: this.getMode,
|
||||||
|
...this.formData
|
||||||
|
},
|
||||||
|
success:( data ) => {
|
||||||
|
if( data.code ){
|
||||||
|
this.tbList.setData(data.data);
|
||||||
|
if(data.data[data.data.length-1]?.FACLT_OPER_NO){
|
||||||
|
this.addCode = data.data[data.data.length-1].FACLT_OPER_NO;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
console.log(data)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: (request, status, error)=>{
|
||||||
|
kuls_alert(error.message);
|
||||||
|
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
putData(){
|
||||||
|
const postData = {
|
||||||
|
mode : this.putMode
|
||||||
|
}
|
||||||
|
const tableData = this.tbList.getData().filter(row=>row._STATUS_)[0];
|
||||||
|
postData['reqdata'] = JSON.stringify([{...tableData, ...this.formData, FACLT_OPER_NO : this.addCode}])
|
||||||
|
|
||||||
|
console.log(this.addCode)
|
||||||
|
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: postData,
|
||||||
|
success: (data)=>{
|
||||||
|
if (data.code) {
|
||||||
|
kuls_success("저장되었습니다.");
|
||||||
|
this.getMainList();
|
||||||
|
}else{
|
||||||
|
kuls_alert(data.mesg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: (request, status, error)=>{
|
||||||
|
kuls_alert(error.message);
|
||||||
|
},
|
||||||
|
complete: () => {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
update(updateData){
|
||||||
|
if(updateData){
|
||||||
|
this.tbList.getRowFromPosition(this.tbList.getData().length).update({ FACLT_OPER_NO: this.addCode, ...updateData });
|
||||||
|
console.log(updateData)
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
init(addData, updateData){
|
||||||
|
if (this.tbList) {
|
||||||
|
this.tbList.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
const commonFieldData = {
|
const commonFieldData = {
|
||||||
headerSort: false,
|
headerSort: false,
|
||||||
vertAlign: "middle",
|
vertAlign: "middle",
|
||||||
|
|
@ -22,48 +115,50 @@ class SimpleTable {
|
||||||
|
|
||||||
this.tbList = new Tabulator(this.table, {
|
this.tbList = new Tabulator(this.table, {
|
||||||
layout:'fitColumns',
|
layout:'fitColumns',
|
||||||
data:[
|
data:[],
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
{},
|
|
||||||
],
|
|
||||||
columns: this.field,
|
columns: this.field,
|
||||||
columnDefaults: commonFieldData,
|
columnDefaults: commonFieldData,
|
||||||
selectableRows:1,
|
selectableRows:1,
|
||||||
})
|
});
|
||||||
|
|
||||||
this.tbList.on("tableBuilt", () => {
|
this.tbList.on("tableBuilt", () => {
|
||||||
this.getMainList();
|
this.getMainList().then(()=>{
|
||||||
|
if(addData){
|
||||||
|
this.tbList.addRow({...addData, _STATUS_: 'I'});
|
||||||
|
};
|
||||||
|
if(updateData){
|
||||||
|
this.tbList.getRowFromPosition(this.tbList.getData().length).update({ FACLT_OPER_NO: this.addCode, ...updateData, _STATUS_: 'U' });
|
||||||
|
console.log(updateData)
|
||||||
|
};
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
event(addData, updateData, btn){
|
||||||
|
|
||||||
|
if(this.eventHandler){
|
||||||
|
this.addBtn?.removeEventListener('click', this.eventHandler);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.eventHandler = () => {
|
||||||
|
this.putData(addData, updateData);
|
||||||
|
if (btn === 'isRun') {
|
||||||
|
document.querySelector("#isNoRun").disabled = false;
|
||||||
|
document.querySelector("#isRun").disabled = true;
|
||||||
|
this.addBtn.disabled = true;
|
||||||
|
} else if (btn === 'isNoRun') {
|
||||||
|
document.querySelector("#isNoRun").disabled = true;
|
||||||
|
document.querySelector("#isRun").disabled = false;
|
||||||
|
this.addBtn.disabled = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.addBtn?.addEventListener('click', this.eventHandler);
|
||||||
|
|
||||||
// 행선택
|
|
||||||
// 행선택 반영 및 저장
|
|
||||||
// 행추가 및 저장
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class FieldPop {
|
class FieldPop {
|
||||||
|
|
@ -74,12 +169,40 @@ class FieldPop {
|
||||||
init() {
|
init() {
|
||||||
vnLoad('', './reg_prod_result.php','', (loadHtml) => {
|
vnLoad('', './reg_prod_result.php','', (loadHtml) => {
|
||||||
this.modal = kuls_modal(loadHtml);
|
this.modal = kuls_modal(loadHtml);
|
||||||
|
ajax_json({
|
||||||
|
url: './reg_prod_result.ajax.php',
|
||||||
|
data: {
|
||||||
|
mode: 'checkRunStatus',
|
||||||
|
...this.bindingData
|
||||||
|
},
|
||||||
|
success:( data ) => {
|
||||||
|
if( data.code ){
|
||||||
|
console.log(data)
|
||||||
|
if(data.data.length>0){
|
||||||
|
const disabledList = [false, false, true, false];
|
||||||
|
this.vueform(this.bindingData, this.modal, disabledList);
|
||||||
|
}else{
|
||||||
|
const disabledList = [false, false, false, true];
|
||||||
|
this.vueform(this.bindingData, this.modal, disabledList);
|
||||||
|
}
|
||||||
|
|
||||||
this.vueform(this.bindingData, this.modal)
|
}else{
|
||||||
});
|
console.log(data)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: (request, status, error)=>{
|
||||||
|
kuls_alert(error.message);
|
||||||
|
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
vueform(bindingData, modal){
|
// checkRunStatus(){
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
|
||||||
|
vueform(bindingData, modal, disabledList){
|
||||||
return createApp({
|
return createApp({
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -89,7 +212,14 @@ class FieldPop {
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
table : {},
|
||||||
|
|
||||||
|
checkEvent : '',
|
||||||
|
|
||||||
|
callBack : function(){},
|
||||||
|
|
||||||
isComponent : {
|
isComponent : {
|
||||||
|
isDefHst : false,
|
||||||
isWorker : false,
|
isWorker : false,
|
||||||
isFacility : false,
|
isFacility : false,
|
||||||
isFacltBreak : false,
|
isFacltBreak : false,
|
||||||
|
|
@ -105,14 +235,64 @@ class FieldPop {
|
||||||
isFile: false
|
isFile: false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
tabs1: [ '작업표준서 조회', '도면 조회' ], //popup 띄우기
|
||||||
|
|
||||||
|
tabs2: [
|
||||||
|
{
|
||||||
|
id : 'isDefHst',
|
||||||
|
name : '과거불량이력 조회'
|
||||||
|
},
|
||||||
|
{ id : 'isFacltBreak',
|
||||||
|
name : '설비 고장등록'
|
||||||
|
},
|
||||||
|
{ id : 'isRun',
|
||||||
|
name : '가동'
|
||||||
|
},
|
||||||
|
{ id : 'isNoRun',
|
||||||
|
name : '비가동'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
activeTab : '',
|
||||||
|
|
||||||
|
isDisabled : disabledList,
|
||||||
|
|
||||||
|
dateTime : '00:00',
|
||||||
|
|
||||||
|
getMode : '',
|
||||||
|
|
||||||
|
putMode : '',
|
||||||
|
|
||||||
|
STOP_CD : varsSTOP_CD,
|
||||||
|
|
||||||
|
STOP_CD_val : '',
|
||||||
|
|
||||||
tableField : {
|
tableField : {
|
||||||
|
isDefHst : [
|
||||||
|
{ field: "DEF_NO", formatter:"rownum", title: "순번", width: 50},
|
||||||
|
// { field: "OP_CD", title: "", width: '23%'},
|
||||||
|
{ field: "DEF_NM", title: "불량원인", width: '23%'},
|
||||||
|
{ field: "DEF_TOT", title: "불량수량", width: '23%'},
|
||||||
|
{ field: "DEF_PRICE", title: "불량단가", width: '23%'},
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
isWorker : [
|
isWorker : [
|
||||||
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
||||||
{ field: "", title: "실적 등록 시간", minWidth: 150, width:'26%'},
|
{ field: "", title: "실적 등록 시간", minWidth: 150, width:'26%'},
|
||||||
{ field: "", title: "오더 번호", minWidth: 150, width:'25%'},
|
{ field: "WO_NO", title: "오더 번호", minWidth: 150, width:'25%'},
|
||||||
{ field: "", title: "실적 수량", minWidth: 100, width:'20%'},
|
{ field: "PRD_QTY", title: "실적 수량", minWidth: 100, width:'20%',
|
||||||
{ field: "", title: "달성 금액", minWidth: 100, width:'20%'}
|
bottomCalc: "sum",
|
||||||
|
bottomCalcFormatter:"money",
|
||||||
|
bottomCalcFormatterParams:{ decimal:".", precision:0 }
|
||||||
|
},
|
||||||
|
{ field: "", title: "달성 금액", minWidth: 100, width:'20%',
|
||||||
|
bottomCalc: "sum",
|
||||||
|
bottomCalcFormatter:"money",
|
||||||
|
bottomCalcFormatterParams:{ decimal:".", precision:0 }
|
||||||
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
isFacility : [
|
isFacility : [
|
||||||
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
||||||
{ field: "", title: "설비코드", minWidth: 80, width:'14%'},
|
{ field: "", title: "설비코드", minWidth: 80, width:'14%'},
|
||||||
|
|
@ -129,20 +309,20 @@ class FieldPop {
|
||||||
{ field: "", title: "작업자", minWidth: 100, width:'20%'}
|
{ field: "", title: "작업자", minWidth: 100, width:'20%'}
|
||||||
],
|
],
|
||||||
isRun : [
|
isRun : [
|
||||||
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
{ field:"FACLT_OPER_NO", formatter:"rownum", title: "순번", width: 50},
|
||||||
{ field: "", title: "생산 오더", minWidth: 100, width:'18%',},
|
{ field: "WO_NO", title: "생산 오더", minWidth: 100, width:'18%',},
|
||||||
{ field: "", title: "구분", minWidth: 80, width:'15%',},
|
{ field: "RUNSTOP_GB", title: "구분", minWidth: 80, width:'15%',},
|
||||||
{ field: "", title: "비가동 사유", minWidth: 100, width:'18%',},
|
{ field: "STOP_CD", title: "비가동 사유", minWidth: 100, width:'18%',},
|
||||||
{ field: "", title: "시작시간", minWidth: 120, width:'20%',},
|
{ field: "OPER_ST_TM", title: "시작시간", minWidth: 120, width:'20%',},
|
||||||
{ field: "", title: "종료시간", minWidth: 120, width:'20%',}
|
{ field: "OPER_ED_TM", title: "종료시간", minWidth: 120, width:'20%',}
|
||||||
],
|
],
|
||||||
isNoRun : [
|
isNoRun : [
|
||||||
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
{ field:"FACLT_OPER_NO", formatter:"rownum", title: "순번", width: 50},
|
||||||
{ field: "", title: "생산 오더", minWidth: 100, width:'18%',},
|
{ field: "WO_NO", title: "생산 오더", minWidth: 100, width:'18%',},
|
||||||
{ field: "", title: "구분", minWidth: 80, width:'15%',},
|
{ field: "RUNSTOP_GB", title: "구분", minWidth: 80, width:'15%',},
|
||||||
{ field: "", title: "비가동 사유", minWidth: 100, width:'18%',},
|
{ field: "STOP_CD", title: "비가동 사유", minWidth: 100, width:'18%',},
|
||||||
{ field: "", title: "시작시간", minWidth: 120, width:'20%',},
|
{ field: "OPER_ST_TM", title: "시작시간", minWidth: 120, width:'20%',},
|
||||||
{ field: "", title: "종료시간", minWidth: 120, width:'20%',}
|
{ field: "OPER_ED_TM", title: "종료시간", minWidth: 120, width:'20%',}
|
||||||
],
|
],
|
||||||
isProd : [
|
isProd : [
|
||||||
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
{ field: "", formatter:"rownum", title: "순번", width: 50},
|
||||||
|
|
@ -171,7 +351,13 @@ class FieldPop {
|
||||||
{ field: "", title: "1", width: 50},
|
{ field: "", title: "1", width: 50},
|
||||||
{ field: "", title: "2", width: 50},
|
{ field: "", title: "2", width: 50},
|
||||||
{ field: "", title: "3", width: 50},
|
{ field: "", title: "3", width: 50},
|
||||||
|
{ field: "", title: "4", width: 50},
|
||||||
|
{ field: "", title: "5", width: 50},
|
||||||
|
{ field: "", title: "6", width: 50},
|
||||||
|
{ field: "", title: "7", width: 50},
|
||||||
|
{ field: "", title: "8", width: 50},
|
||||||
|
{ field: "", title: "9", width: 50},
|
||||||
|
{ field: "", title: "10", width: 50},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
@ -188,6 +374,7 @@ class FieldPop {
|
||||||
|
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.showComponent('isWorker');
|
||||||
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -205,37 +392,191 @@ class FieldPop {
|
||||||
modal.delete();
|
modal.delete();
|
||||||
},
|
},
|
||||||
|
|
||||||
callTable(com){
|
callTable(com, addData=false, updateData=false, btn=false ){
|
||||||
|
console.log("callTable")
|
||||||
|
|
||||||
this.$nextTick(()=>{
|
return this.$nextTick(()=>{
|
||||||
console.log(com)
|
const table = new SimpleTable(this.tableField[com], this.getMode, this.putMode, this.formData, addData, updateData);
|
||||||
|
|
||||||
const table = new SimpleTable(this.tableField[com]);
|
if(this.checkEvent !== com){
|
||||||
|
table.event(addData, updateData, btn);
|
||||||
table.init();
|
this.checkEvent = com;
|
||||||
|
}
|
||||||
|
return table;
|
||||||
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// 클릭시 컴포넌트 생성 및 삭제로 페이지 레이아웃 변경
|
// 클릭시 컴포넌트 생성 및 삭제로 페이지 레이아웃 변경
|
||||||
showComponent(com) {
|
showComponent(com, tab) {
|
||||||
|
this.activeTab = tab;
|
||||||
|
let table = '';
|
||||||
|
|
||||||
Object.keys(this.isComponent).map((key)=>{
|
Object.keys(this.isComponent).map((key)=>{
|
||||||
this.isComponent[key] = com == key ? true : false;
|
this.isComponent[key] = com == key ? true : false;
|
||||||
});
|
});
|
||||||
|
|
||||||
if(com=='isInsp'){
|
switch(com){
|
||||||
this.isTab = {
|
case 'isWorker':
|
||||||
isInsp: true,
|
this.getMode = 'getWokerInfo';
|
||||||
isFile: false
|
this.putMode = '';
|
||||||
}
|
|
||||||
};
|
this.callTable(com);
|
||||||
this.callTable(com);
|
break;
|
||||||
|
case 'isInsp':
|
||||||
|
this.isTab = {
|
||||||
|
isInsp: true,
|
||||||
|
isFile: false
|
||||||
|
}
|
||||||
|
this.callTable(com);
|
||||||
|
break;
|
||||||
|
case 'isRun':
|
||||||
|
const stTime = new Date();
|
||||||
|
this.dateTime = stTime.getHours() + ":"
|
||||||
|
+ ( stTime.getMinutes()<10 ? '0' + stTime.getMinutes() : stTime.getMinutes() ) + ":"
|
||||||
|
+ ( stTime.getSeconds()<10 ? '0' + stTime.getSeconds() : stTime.getSeconds() );
|
||||||
|
|
||||||
|
this.getMode = 'getRunInfo';
|
||||||
|
this.putMode = 'putRunInfo';
|
||||||
|
|
||||||
|
table = this.callTable(com,{
|
||||||
|
WO_NO: this.formData.WO_NO,
|
||||||
|
RUNSTOP_GB: 'R',
|
||||||
|
OPER_ST_TM : this.dateTime,
|
||||||
|
},false,'isRun').then(table=>{
|
||||||
|
const tb = table;
|
||||||
|
this.callBack = ()=>{
|
||||||
|
tb.update({
|
||||||
|
WO_NO: this.formData.WO_NO,
|
||||||
|
RUNSTOP_GB: 'R',
|
||||||
|
OPER_ST_TM : this.dateTime,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'isNoRun':
|
||||||
|
const edTime = new Date();
|
||||||
|
this.dateTime = edTime.getHours() + ":"
|
||||||
|
+ ( edTime.getMinutes()<10 ? '0' + edTime.getMinutes() : edTime.getMinutes() ) + ":"
|
||||||
|
+ ( edTime.getSeconds()<10 ? '0' + edTime.getSeconds() : edTime.getSeconds() );
|
||||||
|
|
||||||
|
this.getMode = 'getRunInfo';
|
||||||
|
this.putMode = 'putRunInfo';
|
||||||
|
|
||||||
|
|
||||||
|
this.callTable(com, false, {
|
||||||
|
STOP_CD: this.STOP_CD_val,
|
||||||
|
RUNSTOP_GB: 'S',
|
||||||
|
OPER_ED_TM : this.dateTime,
|
||||||
|
}, 'isNoRun').then(table=>{
|
||||||
|
this.callBack = ()=>{
|
||||||
|
const tb = table;
|
||||||
|
tb.update({
|
||||||
|
STOP_CD: this.STOP_CD_val,
|
||||||
|
RUNSTOP_GB: 'S',
|
||||||
|
OPER_ED_TM : this.dateTime,
|
||||||
|
})
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'isDefHst':
|
||||||
|
this.getMode = 'getDefHst';
|
||||||
|
this.putMode = '';
|
||||||
|
|
||||||
|
this.callTable(com,{
|
||||||
|
ITEM_CD : this.formData.ITEM_CD,
|
||||||
|
OP_CD : this.formData.OP_CD,
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.callTable(com);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
getFileUrl(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;
|
||||||
|
},
|
||||||
|
popDrawSTD(text){
|
||||||
|
|
||||||
|
const item_cd = document.getElementById("ITEM_CD").value;
|
||||||
|
if(text === '작업표준서 조회'){
|
||||||
|
// const wo_no = document.getElementById("WO_NO").value;
|
||||||
|
vnLoad("", "./sts_order_pop_util.inc.php", "", (loadHtml) => {
|
||||||
|
this.modal = kuls_modal(loadHtml);
|
||||||
|
|
||||||
|
const draw_std = new Tb_draw_std_class("#sub_table", item_cd);
|
||||||
|
draw_std.init();
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
let _this = this;
|
||||||
|
// let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
||||||
|
|
||||||
|
ajax_json({
|
||||||
|
url: './reg_prod_result.ajax.php',
|
||||||
|
data: { mode : "getDrawList", ITEM_CD : item_cd},
|
||||||
|
success: (data) => {
|
||||||
|
console.log(data.data[0]);
|
||||||
|
const drawData = data.data[0]
|
||||||
|
// _this.getFileUrl(
|
||||||
|
// drawData.DRAW_NO,
|
||||||
|
// drawData.SID,
|
||||||
|
// drawData.FILE_ID,
|
||||||
|
// drawData.FILE_NM,
|
||||||
|
// true
|
||||||
|
// );
|
||||||
|
|
||||||
|
pop_filedown(
|
||||||
|
_this.getFileUrl(
|
||||||
|
drawData.DRAW_NO,
|
||||||
|
drawData.SID,
|
||||||
|
drawData.FILE_ID,
|
||||||
|
drawData.FILE_NM,
|
||||||
|
), drawData.FILE_NM.split(".").pop()
|
||||||
|
);
|
||||||
|
},
|
||||||
|
error: (req, status, err) => {
|
||||||
|
kuls_alert(err.message);
|
||||||
|
},
|
||||||
|
complete: () => {
|
||||||
|
// window.clearTimeout(talert);
|
||||||
|
// this.getMainList();
|
||||||
|
// this.tbList.clearAlert();
|
||||||
|
// this.setFilter();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
// 클릭시 탭메뉴 활성화
|
// 클릭시 탭메뉴 활성화
|
||||||
isChangeTab(com) {
|
isChangeTab(com) {
|
||||||
Object.keys(this.isTab).map((key)=>{
|
Object.keys(this.isTab).map( (key) => {
|
||||||
this.isTab[key] = com == key ? true : false;
|
this.isTab[key] = com == key ? true : false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -256,3 +597,135 @@ class FieldPop {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Tb_draw_std_class {
|
||||||
|
constructor(container,item_cd) {
|
||||||
|
this.ajaxUrl = "./reg_prod_result.ajax.php";
|
||||||
|
this.container = document.querySelector(container);
|
||||||
|
|
||||||
|
this.item_cd = item_cd;
|
||||||
|
this.table = this.container.querySelector(".hy-table");
|
||||||
|
this.addBtn = this.container.querySelector(".add-btn") || "";
|
||||||
|
this.removeBtn = this.container.querySelector(".remove-btn") || "";
|
||||||
|
|
||||||
|
console.log(this.container);
|
||||||
|
}
|
||||||
|
|
||||||
|
getMainList(){
|
||||||
|
let _this = this;
|
||||||
|
let talert = window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: { mode: "getRoutingList", ITEM_CD :this.item_cd},
|
||||||
|
success: (data) => {
|
||||||
|
// console.log(data.data);
|
||||||
|
this.tbList.setData(data.data);
|
||||||
|
},
|
||||||
|
error: (req, status, err) => {
|
||||||
|
kuls_alert(err.message);
|
||||||
|
},
|
||||||
|
complete: () => {
|
||||||
|
window.clearTimeout(talert);
|
||||||
|
// this.tbList.clearAlert();
|
||||||
|
// this.setFilter();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
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>";
|
||||||
|
|
||||||
|
};
|
||||||
|
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>";
|
||||||
|
|
||||||
|
};
|
||||||
|
init(){
|
||||||
|
let _this = this;
|
||||||
|
const fields = [
|
||||||
|
|
||||||
|
{ formatter: "rownum", title: "NO", width: 50 },
|
||||||
|
{ field: "OP_CD", title: "공정코드", width: 100 },
|
||||||
|
{ field: "OP_NM", title: "공정명", width: 150 },
|
||||||
|
{ title: "작업 표준서", cssClass:"width-230", columns:[
|
||||||
|
{ field: "SID", visible:false},
|
||||||
|
{ field: "FILE_ID", visible:false},
|
||||||
|
{ field:"FILE_NM", width:100, 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:100, 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: true,
|
||||||
|
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>", //정렬 아이콘
|
||||||
|
// validationMode: "highlight",
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Overview 테이블 만들어지면 데이터 불러오기
|
||||||
|
* @Parameter 없음
|
||||||
|
*/
|
||||||
|
this.tbList.on("tableBuilt", () => {
|
||||||
|
this.getMainList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,25 +13,26 @@ include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
<!-- form 시작 -->
|
<!-- form 시작 -->
|
||||||
<form name="frmWorkData" method="post" class="flexcol gap10">
|
<form name="frmWorkData" method="post" class="flexcol gap10">
|
||||||
<!-- form button-container -->
|
<!-- form button-container -->
|
||||||
<div class="form-button-container flexrow flexbetween">
|
<div class="form-button-container flexrow flexbetween gap10">
|
||||||
<div class="form-button-box flexrow gap06">
|
<!-- <div class="form-button-box flexrow gap06 flex-3">
|
||||||
<button class="form-button close-btn" type="button" @click="close">닫기</button>
|
</div>
|
||||||
<button class="form-button point-btn" type="button" @click="showDefect">과거불량이력 조회</button>
|
<div class="form-button-box flexrow gap06 flex-5">
|
||||||
<button class="form-button point-btn" type="button" @click="showWrkDocs">작업표준서 조회</button>
|
<button type="button" v-for="(tab, idx) in tabs2" :key="idx" :class="{ on : activeTab === tab }" @click="showComponent(com2[idx], tab)" >{{ tab }}</button>
|
||||||
<button class="form-button point-btn" type="button" @click="showDraw">도면 조회</button>
|
</div> -->
|
||||||
|
|
||||||
|
<div class="form-button-box flexrow gap06 flex-3 min-width-572">
|
||||||
|
<button type="button" v-for="(tab, idx) in tabs1" :key="idx" :class="{ on : activeTab === tab}" @click="popDrawSTD(`${tab}`)" >{{ tab }}</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-button-box flexrow gap06">
|
<div class="form-button-box flexrow gap06 flex-5 flexend">
|
||||||
<button class="form-button point-btn" type="button" @click="showComponent('isFacltBreak')">설비 고장등록</button>
|
<button type="button" v-for="(tab, idx) in tabs2" :key="idx" :disabled="isDisabled[idx]" :id="tab.id" :class="{ on : activeTab === tab.name }" @click="showComponent(tab.id, tab.name)" >{{ tab.name }}</button>
|
||||||
<button class="form-button run-btn" type="button" @click="showComponent('isRun')">가동</button>
|
|
||||||
<button class="form-button norun-btn" type="button" @click="showComponent('isNoRun')">비가동</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- form 내용 -->
|
<!-- form 내용 -->
|
||||||
<div class="form-contents flexrow gap10">
|
<div class="form-contents flexrow gap10">
|
||||||
<div class="info-container flex-1 flexcol flexbetween gap10">
|
<div class="info-container flex-3 flexcol flexbetween gap10 min-width-572">
|
||||||
|
|
||||||
<div class="form-box flexcol gap10">
|
<div class="form-box flexcol gap10 flexcenter flex-4">
|
||||||
|
|
||||||
<div class="input-container flexrow gap06">
|
<div class="input-container flexrow gap06">
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
|
|
@ -67,23 +68,25 @@ include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-container flexrow gap06">
|
<div class="input-container flexrow gap06">
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1" @click="showComponent('isWorker')">
|
||||||
<label for="EMP_NO">작업자</label>
|
<label for="EMP_NM">작업자</label>
|
||||||
<input v-model="formData.EMP_NO" @click="showComponent('isWorker')" type="text" id="EMP_NO" name="EMP_NO"
|
<input v-model="formData.EMP_NM" :class="{on : isComponent['isWorker']}" type="text" id="EMP_NM" name="EMP_NM"
|
||||||
class="form-control form-control-sm" readonly />
|
class="form-control form-control-sm" readonly />
|
||||||
|
<span><i class="fa-solid fa-arrow-pointer"></i></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-box flexcol gap10">
|
<div class="form-box flexcol gap10 flexcenter flex-2">
|
||||||
|
|
||||||
<div class="input-container flexrow gap06">
|
<div class="input-container flexrow gap06">
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
<label for="WO_NO">설비</label>
|
<label for="WO_NO">설비</label>
|
||||||
<input v-model="formData.FACLT_CD" @click="showComponent('isFacility')" type="text" id="WO_NO" name="WO_NO"
|
<input v-model="formData.FACLT_CD" @click="showComponent('isFacility')" :class="{on : isComponent['isFacility']}" type="text" id="WO_NO" name="WO_NO"
|
||||||
class="form-control form-control-sm" readonly />
|
class="form-control form-control-sm" readonly />
|
||||||
|
<span><i class="fa-solid fa-arrow-pointer"></i></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
<label for="">비가동시간</label>
|
<label for="">비가동시간</label>
|
||||||
|
|
@ -97,14 +100,14 @@ include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
<input type="text" id="WO_NO" name="WO_NO" class="form-control form-control-sm" readonly />
|
<input type="text" id="WO_NO" name="WO_NO" class="form-control form-control-sm" readonly />
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
<label for="">작업완료</label>
|
<label for="">작업완료시간</label>
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" readonly />
|
<input type="text" id="" name="" class="form-control form-control-sm" readonly />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-box flexcol gap10">
|
<div class="form-box flexcol gap10 flexcenter flex-2">
|
||||||
|
|
||||||
<div class="input-container flexrow gap06">
|
<div class="input-container flexrow gap06">
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
|
|
@ -120,19 +123,21 @@ include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
<div class="input-container flexrow gap06">
|
<div class="input-container flexrow gap06">
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
<label for="WO_NO">양품수량</label>
|
<label for="WO_NO">양품수량</label>
|
||||||
<input @click="showComponent('isProd')" type="text" id="WO_NO" name="WO_NO"
|
<input @click="showComponent('isProd')" :class="{on : isComponent['isProd']}" type="text" id="WO_NO" name="WO_NO"
|
||||||
class="form-control form-control-sm" readonly />
|
class="form-control form-control-sm" readonly />
|
||||||
|
<span><i class="fa-solid fa-arrow-pointer"></i></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
<label for="">불량수량</label>
|
<label for="">불량수량</label>
|
||||||
<input @click="showComponent('isDef')" type="text" id="" name="" class="form-control form-control-sm"
|
<input @click="showComponent('isDef')" :class="{on : isComponent['isDef']}" type="text" id="" name="" class="form-control form-control-sm"
|
||||||
readonly />
|
readonly />
|
||||||
|
<span><i class="fa-solid fa-arrow-pointer"></i></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-box flexcol gap10">
|
<div class="form-box flexcol gap10 flexcenter flex-1">
|
||||||
|
|
||||||
<div class="input-container flexrow gap06">
|
<div class="input-container flexrow gap06">
|
||||||
<div class="input-box flex-1">
|
<div class="input-box flex-1">
|
||||||
|
|
@ -143,6 +148,7 @@ include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
<label for="">검사등록</label>
|
<label for="">검사등록</label>
|
||||||
<input @click="showComponent('isInsp')" type="text" id="" name="" class="form-control form-control-sm"
|
<input @click="showComponent('isInsp')" type="text" id="" name="" class="form-control form-control-sm"
|
||||||
readonly />
|
readonly />
|
||||||
|
<span><i class="fa-solid fa-arrow-pointer"></i></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -151,433 +157,41 @@ include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="detail-container flex-1 flexcol">
|
<div class="detail-container flex-5 flexcol">
|
||||||
|
<div class="detail-contents height-full flexcol flexbetween gap10" v-if="isComponent['isDefHst']">
|
||||||
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isDefHst.php' ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="detail-contents height-full flexcol flexbetween gap10" v-if="isComponent['isWorker']">
|
<div class="detail-contents height-full flexcol flexbetween gap10" v-if="isComponent['isWorker']">
|
||||||
<!-- 폼 헤더 -->
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isWorker.php' ?>
|
||||||
<div class="form-header form-box">
|
|
||||||
<div class="input-container flexrow gap06">
|
|
||||||
|
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="" style="width:80px;">소속</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="">작업자</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 폼 헤더 종료 // -->
|
|
||||||
|
|
||||||
<!-- 테이블 박스 -->
|
|
||||||
<div class="table-box flexcol flexbetween" style="height: calc(100% - 80px);">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="height-89">
|
|
||||||
<div class="hy-table" id="isWorker"></div>
|
|
||||||
</div>
|
|
||||||
<div class="table-title">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="detail-contents flexcol gap10" v-if="isComponent['isFacility']">
|
<div class="detail-contents flexcol gap10" v-if="isComponent['isFacility']">
|
||||||
<!-- 테이블 박스 -->
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isFacility.php' ?>
|
||||||
<div class="table-box height-full flexcol flexbetween">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="height-89">
|
|
||||||
<div class="hy-table" id="isFacility"></div>
|
|
||||||
</div>
|
|
||||||
<div class="table-title">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="detail-contents flexcol gap10" v-if="isComponent['isFacltBreak']">
|
<div class="detail-contents flexcol gap10" v-if="isComponent['isFacltBreak']">
|
||||||
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isFacltBreak.php' ?>
|
||||||
<!-- 테이블 박스 -->
|
|
||||||
<div class="table-box height-full flexcol flexbetween">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="height-half">
|
|
||||||
<div class="hy-table" id="isFacility"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 폼 헤더 -->
|
|
||||||
<div class="form-header form-box">
|
|
||||||
<div class="input-container flexcol gap06">
|
|
||||||
|
|
||||||
<div class="input-box flexrow flexend flex-1">
|
|
||||||
<label for="" style="width:80px;">고장등록시간</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="input-box flexrow flexend flex-1 flexrow">
|
|
||||||
<label for="" style="width:80px;">고장신고사유</label>
|
|
||||||
<textarea id="" name="" class="form-control form-control-sm"></textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="table-title" style="margin-top:10px;">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 폼 헤더 종료 // -->
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="detail-contents flexcol gap10" v-if="isComponent['isRun']">
|
<div class="detail-contents flexcol gap10" v-if="isComponent['isRun']">
|
||||||
<!-- 테이블 박스 -->
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isRun.php' ?>
|
||||||
<div class="table-box height-full flexcol flexbetween">
|
|
||||||
|
|
||||||
|
|
||||||
<div style="height:calc(100% - 112px);">
|
|
||||||
<div class="hy-table" id="isRun"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 폼 헤더 -->
|
|
||||||
<div class="form-header form-box">
|
|
||||||
<div class="input-container flexcol gap06">
|
|
||||||
|
|
||||||
<div class="input-box flexrow flexend flex-1">
|
|
||||||
<label for="" style="width:80px;">가동시작시간</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="table-title" style="margin-top:10px;">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 폼 헤더 종료 // -->
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="detail-contents flexcol gap10" v-if="isComponent['isNoRun']">
|
<div class="detail-contents flexcol gap10" v-if="isComponent['isNoRun']">
|
||||||
<!-- 테이블 박스 -->
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isNoRun.php' ?>
|
||||||
<div class="table-box height-full flexcol flexbetween">
|
|
||||||
|
|
||||||
<div style="height:calc(100% - 148px);">
|
|
||||||
<div class="hy-table" id="isRun"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 폼 헤더 -->
|
|
||||||
<div class="form-header form-box">
|
|
||||||
<div class="input-container flexcol gap06">
|
|
||||||
|
|
||||||
<div class="input-box flexrow flexend flex-1">
|
|
||||||
<label for="" style="width:80px;">가동시작시간</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
<div class="input-box flexrow flexend flex-1">
|
|
||||||
<label for="" style="width:80px;">비가동사유</label>
|
|
||||||
<div class="round-tab-box">
|
|
||||||
<button type="button" class="tab-btn left-round">작업종료</button>
|
|
||||||
<button type="button" class="tab-btn">품목교체</button>
|
|
||||||
<button type="button" class="tab-btn">설비고장</button>
|
|
||||||
<button type="button" class="tab-btn right-round">자체결품</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="table-title" style="margin-top:10px;">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 폼 헤더 종료 // -->
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="detail-contents flexcol gap10" v-if="isComponent['isProd']">
|
<div class="detail-contents flexcol gap10" v-if="isComponent['isProd']">
|
||||||
<!-- 폼 헤더 -->
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isProd.php' ?>
|
||||||
<div class="form-header flexrow form-box">
|
|
||||||
|
|
||||||
<div class="flexcol gap10">
|
|
||||||
<div class="input-container flexrow gap06">
|
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="" style="width:80px;">작업일</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="">시간</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="input-container flexrow gap06">
|
|
||||||
<div class="input-box flex-1 flexrow">
|
|
||||||
<label for="" style="width:80px;">이전공정<br>양품수량</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="">수량</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button type="button" class="add-btn basic-btn">추가</button>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 폼 헤더 종료 // -->
|
|
||||||
|
|
||||||
<!-- 테이블 박스 -->
|
|
||||||
<div class="table-box flexcol flexbetween" style="height:calc(100% - 120px);">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="height-89">
|
|
||||||
<div class="hy-table" id="isProd"></div>
|
|
||||||
</div>
|
|
||||||
<div class="table-title">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="detail-contents flexcol gap10" v-if="isComponent['isDef']"><!-- 테이블 박스 -->
|
|
||||||
<!-- 폼 헤더 -->
|
|
||||||
<div class="form-header flexrow form-box">
|
|
||||||
|
|
||||||
<div class="flexcol gap10">
|
<div class="detail-contents flexcol gap10" v-if="isComponent['isDef']">
|
||||||
<div class="input-container flexrow gap06">
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isDef.php' ?>
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="" style="width:80px;">작업일</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="">시간</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="input-container flexrow gap06">
|
|
||||||
<div class="input-box flex-1 flexrow">
|
|
||||||
<label for="" style="width:80px;">등록가능수량</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
<div class="input-box flex-1">
|
|
||||||
<label for="">수량</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="input-container flexrow flexend flex-1">
|
|
||||||
<div class="input-box flexrow flex-1">
|
|
||||||
<label for="" style="width:80px;">비가동사유</label>
|
|
||||||
|
|
||||||
<div class="round-tab-box" style="width:calc(100% - 100px);">
|
|
||||||
<button type="button" class="tab-btn left-round">작업종료</button>
|
|
||||||
<button type="button" class="tab-btn">품목교체</button>
|
|
||||||
<button type="button" class="tab-btn">설비고장</button>
|
|
||||||
<button type="button" class="tab-btn right-round">자체결품</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button type="button" class="add-btn basic-btn">추가</button>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 폼 헤더 종료 // -->
|
|
||||||
|
|
||||||
<!-- 테이블 박스 -->
|
|
||||||
<div class="table-box flexcol flexbetween" style="height:calc(100% - 160px);">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="height-89">
|
|
||||||
<div class="hy-table" id="isDef"></div>
|
|
||||||
</div>
|
|
||||||
<div class="table-title">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="detail-contents flexcol gap10" v-if="isComponent['isInsp']">
|
<div class="detail-contents flexcol gap10" v-if="isComponent['isInsp']">
|
||||||
<!-- 테이블 박스 -->
|
<?php include _SVC_PATH_ . '/site/sts_order_prod/popComponent/isInsp.php' ?>
|
||||||
<div class="table-box height-full flexcol flexbetween gap10">
|
|
||||||
|
|
||||||
<ul class="flexrow tab-menu gap06">
|
|
||||||
<li id="first-tab" @click="isChangeTab('isInsp')" :class="{'on':isInspVal}">실적</li>
|
|
||||||
<li id="second-tab" @click="isChangeTab('isFile')" :class="{'on':isFileVal}">파일</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<!-- tab container -->
|
|
||||||
<div v-if="isInspVal" class="table-box flexcol flexbetween" style="height:calc(100% - 43px);">
|
|
||||||
|
|
||||||
<div style="height:calc(100% - 112px);">
|
|
||||||
<div class="hy-table group-table groupby" id="isInsp"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 폼 헤더 -->
|
|
||||||
<div class="form-header form-box">
|
|
||||||
|
|
||||||
<div class="input-container flexrow gap06">
|
|
||||||
|
|
||||||
<div class="input-box flex-1 flexrow">
|
|
||||||
<label for="" >등록가능수량</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
<div class="input-box flex-1 flexrow flexend">
|
|
||||||
<label for="">수량</label>
|
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="table-title" style="margin-top:10px;">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 폼 헤더 종료 // -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- tab container 종료 // -->
|
|
||||||
<!-- tab container -->
|
|
||||||
<div v-if="isFileVal" class="table-box flexcol flexbetween" style="height:calc(100% - 43px);">
|
|
||||||
|
|
||||||
<div style="height:calc(100% - 43px);">
|
|
||||||
<div class="hy-table" id="isInsp"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="table-title" style="margin-top:10px;">
|
|
||||||
<div class="button-box flexend">
|
|
||||||
|
|
||||||
<div class="add-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/add.php' ?>
|
|
||||||
선택 확인
|
|
||||||
</div>
|
|
||||||
<div class="remove-btn reverse-btn flexrow flexfillcenter gap06">
|
|
||||||
<?php include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
|
||||||
선택 취소
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- tab container 종료 // -->
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<!-- 테이블 박스 종료 // -->
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?php
|
||||||
|
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
|
?>
|
||||||
|
<!-- file upload popup <첨부파일 등록> -->
|
||||||
|
|
||||||
|
<!-- 작업표준서 조회 팝업 -->
|
||||||
|
<div id="popup_file_upload">
|
||||||
|
<div class="awn-popup-confirm awn-partner custom-popup">
|
||||||
|
<div class="awn-popup-title"><i class="bi bi-card-heading"></i> 작업표준서</div>
|
||||||
|
<div class="awn-popup-search mb-block btn-ksmain-inject-block">
|
||||||
|
<!-- <div class="s_exp">※ 더블클릭으로 선택/반영 합니다.</div>-->
|
||||||
|
<div class="s_fld form-inline d-block">
|
||||||
|
<!-- <label for="sgrp">오더번호: </label>
|
||||||
|
<select id="sgrp" name="sgrp" class="form-control form-select w100">
|
||||||
|
</select> -->
|
||||||
|
|
||||||
|
<!-- <label for="stxt">오더번호: </label>-->
|
||||||
|
<!-- <input type="text" class="form-control d-inline w120 align-bottom">-->
|
||||||
|
<!-- <label for="stxt">공정: </label>-->
|
||||||
|
<!-- <input type="text" name="stxt" id="stxt" class="form-control d-inline w120 align-bottom">-->
|
||||||
|
<!-- |
|
||||||
|
<button type="button" id="ptReset" class="btn btn-danger">
|
||||||
|
<i class="fa-regular fa-window-restore"></i>
|
||||||
|
초기화
|
||||||
|
</button> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="awn-popup-content" style="padding: 10px 10px;">
|
||||||
|
<div class="table-box flex-1" id="sub_table">
|
||||||
|
<!-- 테이블 헤더 (제목, 추가, 삭제, 저장) -->
|
||||||
|
<div class="table-title">
|
||||||
|
<p class="tilte"></p>
|
||||||
|
|
||||||
|
<!-- 버튼 -->
|
||||||
|
<!-- <div class="button-box">-->
|
||||||
|
<!-- <button class="add-btn reverse-btn">-->
|
||||||
|
<!-- --><?php //include _SVC_INC_PATH_ . '/img/add.php' ?>
|
||||||
|
<!-- 추가-->
|
||||||
|
<!-- </button>-->
|
||||||
|
<!-- <button class="remove-btn reverse-btn">-->
|
||||||
|
<!-- --><?php //include _SVC_INC_PATH_ . '/img/delete.php' ?>
|
||||||
|
<!-- 삭제-->
|
||||||
|
<!-- </button>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- 버튼 종료 // -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 헤더 종료 // -->
|
||||||
|
|
||||||
|
<!-- 테이블 -->
|
||||||
|
<div class="hy-table"></div>
|
||||||
|
<!-- 테이블 종료 // -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 테이블 박스 종료 // -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- file upload popup <첨부파일 등록> -->
|
||||||
|
|
||||||
|
<script src="./reg_prod_result.js"></script>
|
||||||
|
|
@ -31,30 +31,36 @@ if( !_notAuth("R") ){/************ 권한체크*/
|
||||||
$retval['code'] = false;
|
$retval['code'] = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "getOrderList":
|
// 생산오더별 진행현황
|
||||||
$retval['code'] = true;
|
case 'getStsList':
|
||||||
// $sql = "USP_B_OPERATION_S10";
|
|
||||||
|
|
||||||
// $params = array(
|
|
||||||
// "OP_NM" => "",
|
|
||||||
// "USE_FLG" => "Y"
|
|
||||||
// );
|
|
||||||
|
|
||||||
// $rst = $baseObj->DB->exec($sql,$params);
|
$squl = "USP_P_WO_OPER_RSLT_S40";
|
||||||
|
|
||||||
// $rows = array();
|
$params = array(
|
||||||
// if( $rst ){
|
"date_st" => $_REQUEST["order_date_st"] ?: "2024-04-01",
|
||||||
// $retval['code'] = true;
|
// "date_st" => "2024-04-16" ?: "",
|
||||||
// while( $row = $baseObj->DB->fetch_array($rst) ){
|
"date_ed" => $_REQUEST["order_date_ed"] ?: "2024-05-31",
|
||||||
// // $row['OP_CD_OLD'] = $row['OP_CD'];
|
"WO_NO" => $_REQUEST["P_WO_NO"] ?: "",
|
||||||
|
"ITEM_CD" => $_REQUEST["ITEM_CD"] ?: "",
|
||||||
|
"OP_CD" => $_REQUEST["OP_CD"] ?: "",
|
||||||
|
"FACLT_CD " => $_REQUEST["FACLT_CD_P"] ?: "",
|
||||||
|
"EMP_NO" => $_REQUEST["EMP_NO"] ?: ""
|
||||||
|
);
|
||||||
|
$rst = $baseObj->DB->exec($squl, $params);
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
if ($rst) {
|
||||||
|
$retval['code'] = true;
|
||||||
|
while ($row = $baseObj->DB->fetch_array($rst)) {
|
||||||
|
$rows[] = $row;
|
||||||
|
};
|
||||||
|
$retval['data'] = $rows;
|
||||||
|
$retval['mesg'] = '정상 동작 되었습니다.';
|
||||||
|
} else {
|
||||||
|
$retval['code'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
// $rows[] = $row;
|
|
||||||
// }
|
|
||||||
// $retval['data'] = $rows;
|
|
||||||
// $retval['mesg'] = "정상적으로 작동하였습니다.";
|
|
||||||
// }else{
|
|
||||||
// $retval['code'] = false;
|
|
||||||
// }
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Tb_oper_class {
|
class Tb_oper_class {
|
||||||
constructor(container){
|
constructor(container){
|
||||||
this.ajaxUrl = "./sts_order_prod.ajax.php";
|
this.ajaxUrl = "./sts_order_prod.ajax.php";
|
||||||
|
|
@ -220,13 +221,13 @@ class Tb_oper_class {
|
||||||
const VueOperStatusCode = createApp({
|
const VueOperStatusCode = createApp({
|
||||||
data(){
|
data(){
|
||||||
return {
|
return {
|
||||||
ajaxUrl: './sts_oper_prod.ajax.php',
|
ajaxUrl: './sts_order_prod.ajax.php',
|
||||||
codeList: [],
|
codeList: [],
|
||||||
isHover: {}
|
isHover: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted(){
|
mounted(){
|
||||||
this.getCodeList();
|
this.getMainList("getStsList", "P_WO_NO");
|
||||||
},
|
},
|
||||||
// computed: {
|
// computed: {
|
||||||
|
|
||||||
|
|
@ -235,61 +236,116 @@ const VueOperStatusCode = createApp({
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
methods:{
|
methods:{
|
||||||
initData(group){
|
|
||||||
for(let i = 0; i < group.length; i++){
|
|
||||||
|
|
||||||
finalDataList = []
|
// tableBuild 되었을때 getManList
|
||||||
for(let j=0;j<10;j++){
|
getMainList(mode,...test) {
|
||||||
const operData = group[i][j];
|
const talert= window.setTimeout(()=> { this.tbList.alert("Loading ...") }, 1000);
|
||||||
// console.log(operData)
|
let arr = test;
|
||||||
if(operData){
|
// let testList = new Array();
|
||||||
finalDataList.push(
|
let data = new Object();
|
||||||
{
|
for(let i=0; i < arr.length; i++){
|
||||||
공정명: operData.공정 ,
|
let temp = [arr[i]]
|
||||||
계획수량: operData.계획수량,
|
console.log();
|
||||||
실적수량 : operData.실적수량,
|
if(document.getElementById(arr[i])?.type !== "checkbox"){
|
||||||
투입시간:operData.투입시간,
|
data[temp] = document.getElementById(temp)?.value
|
||||||
종료시간 : operData.종료시간,
|
}else{
|
||||||
예상종료시간 : operData.예상종료시간 ,
|
data[temp] = document.getElementById(temp)?.checked?"Y":"N";
|
||||||
설비: operData.설비,
|
}
|
||||||
작업자: operData.작업자
|
}
|
||||||
}
|
data.mode = mode
|
||||||
)
|
// let USEFLAG = document.getElementById("USE_FLG").checked?"Y":"N"; //사용여부
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: data,
|
||||||
|
|
||||||
|
success: (data) => {
|
||||||
|
if(data.code) {
|
||||||
|
console.log(data.data);
|
||||||
|
this.getCodeList(data.data)
|
||||||
}else{
|
}else{
|
||||||
finalDataList.push({})
|
kuls_alert(data.mesg);
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
error: (req, status, err) => {
|
||||||
|
kuls_alert(err.message);
|
||||||
|
},
|
||||||
|
complete: () => {
|
||||||
|
window.clearTimeout(talert);
|
||||||
|
|
||||||
group[i][0].공정 = finalDataList
|
// this.setFilter();
|
||||||
|
// this.tbList.getRows().forEach(row=>{
|
||||||
|
// row.getCell("WO_NO").getElement().addEventListener("click",(e)=>{
|
||||||
|
// this.rowClick(e,row);
|
||||||
|
// })
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
getCodeList(temp) {
|
||||||
|
console.log(temp)
|
||||||
|
|
||||||
this.codeList.push(group[i][0]);
|
|
||||||
for(let i=0; i<this.codeList.length; i++){
|
let realTemp = [];
|
||||||
this.isHover[i] = []
|
console.log(Object.values(Object.groupBy(temp,( {WO_NO} )=>WO_NO)));
|
||||||
}
|
let group = Object.values(Object.groupBy(temp,( {WO_NO,WO_SEQ} )=>WO_NO && WO_SEQ));
|
||||||
|
|
||||||
|
for(let i = 0; i < group.length; i++) {
|
||||||
|
|
||||||
|
|
||||||
|
group[i][0].OP_CD = group[i].map(function (element) {
|
||||||
|
return {
|
||||||
|
OP_CD: element?.OP_CD,
|
||||||
|
OP_SEQ: element?.OP_SEQ,
|
||||||
|
계획수량: element?.계획수량,
|
||||||
|
PRD_QTY: element?.PRD_QTY,
|
||||||
|
ST_TM: element?.ST_TM,
|
||||||
|
ED_TM: element?.ED_TM,
|
||||||
|
EMP_NO: element?.WRK_EMP_NO,
|
||||||
|
예상종료시간: element?.예상종료시간,
|
||||||
|
FACLT_CD: element?.FACLT_CD,
|
||||||
|
EMP_NM: element?.EMP_NM
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
console.log(group[i][0]);
|
||||||
|
realTemp.push(group[i][0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
|
||||||
getCodeList() {
|
|
||||||
// 임의의 데이터 직접 입력 [데이터 이렇게 php로 전처리...]
|
// 임의의 데이터 직접 입력 [데이터 이렇게 php로 전처리...]
|
||||||
let temp = [
|
// let temp = [
|
||||||
{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// {생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
// ,{생산오더: 'P15998', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'최창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 1, 공정 : '소재', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 2, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 4, 공정 : 'G', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 3, 공정 : 'F', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 5, 공정 : 'H', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
// ,{생산오더: 'P15968', 등록일: '2023.01.02', 품목:'PT01105', 도면번호:'P9900021580/000', 업체명:'현대로보틱스', 판매오더수량:"(20)", 납기일:'2023.01.27', 작업순서: 1, 공정순서 : 6, 공정 : 'M', 계획수량 : 20, 실적수량 : 20, 투입시간: '01.27 15:00', 종료시간 :'01.27 15:00', 예상종료시간 :'01.27 18:00', 설비:'L5', 작업자 :'이창희'}
|
||||||
];
|
// ];
|
||||||
|
|
||||||
const group = Object.values(Object.groupBy(temp, ({생산오더}) => 생산오더))
|
// const group = Object.values(Object.groupBy(temp, ({WO_NO}) => WO_NO))
|
||||||
console.log(group);
|
|
||||||
this.initData(group);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this.codeList = realTemp;
|
||||||
|
|
||||||
|
|
||||||
|
for(let i=0; i<this.codeList.length; i++){
|
||||||
|
this.isHover[i] = []
|
||||||
|
}
|
||||||
|
|
||||||
// 실제 데이터 입력함수
|
// 실제 데이터 입력함수
|
||||||
// ajax_json({
|
// ajax_json({
|
||||||
|
|
@ -306,20 +362,23 @@ const VueOperStatusCode = createApp({
|
||||||
// kuls_alert(err.message);
|
// kuls_alert(err.message);
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
|
return this.codeList;
|
||||||
},
|
},
|
||||||
|
|
||||||
openPop(data, idx) {
|
openPop(data, idx) {
|
||||||
const process = data['공정'][idx]
|
const process = data['OP_CD'][idx]
|
||||||
const bindingData = {
|
const bindingData = {
|
||||||
WO_NO: data['생산오더'],
|
WO_NO: data['WO_NO'],
|
||||||
|
WO_SEQ: data['WO_SEQ'],
|
||||||
// 상태: data[상태],
|
// 상태: data[상태],
|
||||||
DRAW_NO: data['도면번호'],
|
DRAW_NO: data['DRAW_NO'],
|
||||||
ITEM_CD: data['품목'],
|
ITEM_CD: data['ITEM_CD'],
|
||||||
OP_CD: process['공정명'],
|
OP_SEQ: process['OP_SEQ'],
|
||||||
EMP_NO: process['작업자'],
|
OP_CD: process['OP_CD'],
|
||||||
FACLT_CD: process['설비'],
|
EMP_NO: process['EMP_NO'],
|
||||||
종료시간: process['종료시간'],
|
FACLT_CD: process['FACLT_CD'],
|
||||||
실적수량: process['실적수량'],
|
ED_TM: process['ED_TM'],
|
||||||
|
PRD_QTY: process['PRD_QTY'],
|
||||||
}
|
}
|
||||||
console.log(bindingData)
|
console.log(bindingData)
|
||||||
const pop = new FieldPop(bindingData);
|
const pop = new FieldPop(bindingData);
|
||||||
|
|
@ -490,7 +549,7 @@ class Tb_order_class {
|
||||||
|
|
||||||
// 데이터 불러오기
|
// 데이터 불러오기
|
||||||
this.tbList.on("tableBuilt", () => {
|
this.tbList.on("tableBuilt", () => {
|
||||||
this.getMainList();
|
// this.getMainList();
|
||||||
});
|
});
|
||||||
// // row 클릭 시에
|
// // row 클릭 시에
|
||||||
// this.tbList.on("rowClick", (e, tgt) => {
|
// this.tbList.on("rowClick", (e, tgt) => {
|
||||||
|
|
@ -522,7 +581,7 @@ class Tb_order_class {
|
||||||
["click", "keypress"].forEach((evt) => {
|
["click", "keypress"].forEach((evt) => {
|
||||||
const filterBtn = document.querySelector("#filter_btn");
|
const filterBtn = document.querySelector("#filter_btn");
|
||||||
filterBtn.addEventListener(evt, () => {
|
filterBtn.addEventListener(evt, () => {
|
||||||
this.getMainList();
|
// this.getMainList();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// // 저장
|
// // 저장
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<label for="">생산오더</label>
|
<label for="">생산오더</label>
|
||||||
<div>
|
<div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<input type="text" id="">
|
<input type="text" id="P_WO_NO">
|
||||||
<?php // include _SVC_INC_PATH_ . '/img/popupIcon.php' ?>
|
<?php // include _SVC_INC_PATH_ . '/img/popupIcon.php' ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<!-- 조회 및 저장 버튼 -->
|
<!-- 조회 및 저장 버튼 -->
|
||||||
<div class="button-container">
|
<div class="button-container">
|
||||||
<div class="button-box">
|
<div class="button-box">
|
||||||
<button class="point-btn" id="filter_btn" @click="getCodeList()">조회</button>
|
<button class="point-btn" id="filter_btn" @click="getMainList('getStsList', 'P_WO_NO')">조회</button>
|
||||||
<button class="point-btn disabled-btn" id="put_btn" disabled>저장</button>
|
<button class="point-btn disabled-btn" id="put_btn" disabled>저장</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -143,33 +143,34 @@ include_once _SVC_INC_PATH_ . "/header.php";
|
||||||
<tbody>
|
<tbody>
|
||||||
<template v-for="(code, idx) in codeList">
|
<template v-for="(code, idx) in codeList">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="5">{{code.생산오더}}<br>{{code.등록일}}</td>
|
<td rowspan="5">{{code.WO_NO}}<br>{{code.등록일}}</td>
|
||||||
<td rowspan="5">{{code.품목}}<br>{{code.도면번호}}<br>{{code.업체명}}</td>
|
<td rowspan="5">{{code.ITEM_CD}}<br>{{code.DRAW_NO}}<br>{{code.BP_CD}}</td>
|
||||||
<td rowspan="5">{{code.판매오더수량}}</td>
|
<td rowspan="5">{{code.판매오더수량}}</td>
|
||||||
<td rowspan="5">{{code.납기일}}</td>
|
<td rowspan="5">{{code.DLVY_REQ_DT}}</td>
|
||||||
<td rowspan="5">{{code.작업순서}}</td>
|
<td rowspan="5">{{code.WO_SEQ}}</td>
|
||||||
<td rowspan="5">{{code.완료}}</td>
|
<td rowspan="5">{{code.완료}}</td>
|
||||||
<td colspan="2" v-for="(process, index) in code.공정" :key="`process-${index}`" @click="openPop(code, index)" @mouseenter="isHover[idx][index] = true" @mouseleave="isHover[idx][index] = false" :class="{'on':isHover[idx][index]}">
|
<td colspan="2" v-for="index in 10" :key="`process-${index-1}`" @click="openPop(code, index-1)" @mouseenter="isHover[idx][index-1] = true" @mouseleave="isHover[idx][index-1] = false" :class="{'on':isHover[idx][index-1] }">
|
||||||
{{ process.공정명 }}
|
{{ code.OP_CD[index-1]?.OP_CD }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="n in 20" :key="`plan-${n}`" @click="openPop(code['공정'][Math.round(n / 2)-1])" @mouseenter="isHover[idx][Math.round(n / 2)-1] = true" @mouseleave="isHover[idx][Math.round(n / 2)-1] = false" :class="{'on':isHover[idx][Math.round(n / 2)-1]}">
|
<td v-for="n in 20" :key="`plan-${n}`" @click="openPop(code, Math.round(n / 2)-1)" @mouseenter="isHover[idx][Math.round(n / 2)-1] = true" @mouseleave="isHover[idx][Math.round(n / 2)-1] = false" :class="{'on':isHover[idx][Math.round(n / 2)-1]}">
|
||||||
{{ n % 2 === 0 ? code['공정'][n/2-1].실적수량 : code['공정'][(n-1)/2].계획수량 }}
|
{{ n % 2 === 0 ? code['OP_CD'][n/2-1]?.PRD_QTY : code['OP_CD'][(n-1)/2]?.PLAN_QTY }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="n in 20" :key="`tm-${n}`" @click="openPop(code['공정'][Math.round(n / 2)-1])" @mouseenter="isHover[idx][Math.round(n / 2)-1] = true" @mouseleave="isHover[idx][Math.round(n / 2)-1] = false" :class="{'on':isHover[idx][Math.round(n / 2)-1]}">
|
<td v-for="n in 20" :key="`tm-${n}`" @click="openPop(code, Math.round(n / 2)-1)" @mouseenter="isHover[idx][Math.round(n / 2)-1] = true" @mouseleave="isHover[idx][Math.round(n / 2)-1] = false" :class="{'on':isHover[idx][Math.round(n / 2)-1]}">
|
||||||
{{ n % 2 === 0 ? code['공정'][n/2-1].종료시간 : code['공정'][(n-1)/2].투입시간 }}
|
{{ n % 2 === 0 ? code['OP_CD'][n/2-1]?.ED_TM : code['OP_CD'][(n-1)/2]?.ST_TM }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" v-for="(process, index) in code.공정" :key="`pre-${index}`" @click="openPop(process)" @mouseenter="isHover[idx][index] = true" @mouseleave="isHover[idx][index] = false" :class="{'on':isHover[idx][index]}">{{ process.예상종료시간 }}
|
<td colspan="2" v-for="index in 10" :key="`pre-${index}`" @click="openPop(code, index-1)" @mouseenter="isHover[idx][index-1] = true" @mouseleave="isHover[idx][index-1] = false" :class="{'on':isHover[idx][index-1]}">
|
||||||
|
{{ code.OP_CD[index-1]?.예상종료시간 }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td v-for="n in 20" :key="`fa-${n}`" @click="openPop(code['공정'][Math.round(n / 2)-1])" @mouseenter="isHover[idx][Math.round(n / 2)-1] = true" @mouseleave="isHover[idx][Math.round(n / 2)-1] = false" :class="{'on':isHover[idx][Math.round(n / 2)-1]}">
|
<td v-for="n in 20" :key="`fa-${n}`" @click="openPop(code, Math.round(n / 2)-1)" @mouseenter="isHover[idx][Math.round(n / 2)-1] = true" @mouseleave="isHover[idx][Math.round(n / 2)-1] = false" :class="{'on':isHover[idx][Math.round(n / 2)-1]}">
|
||||||
{{ n % 2 === 0 ? code['공정'][n/2-1].작업자 : code['공정'][(n-1)/2].설비 }}
|
{{ n % 2 === 0 ? code['OP_CD'][n/2-1]?.EMP_NM : code['OP_CD'][(n-1)/2]?.FACLT_CD }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue