forked from HANYANG/HANYANG_MES
feat: 가동 비가동 활성화 비활성화
This commit is contained in:
parent
366cef22cd
commit
7314c3994d
|
|
@ -128,16 +128,16 @@ button {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
.disabled-btn {
|
.disabled-btn, button[disabled] {
|
||||||
background-color: rgba(255, 255, 255, 0.973);
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
color: #dddddd;
|
color: #dddddd !important;
|
||||||
border-color: #e9e9e9;
|
border-color: #e9e9e9 !important;
|
||||||
cursor: default;
|
cursor: default !important;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: rgba(255, 255, 255, 0.973);
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
color: #dddddd;
|
color: #dddddd !important;
|
||||||
border-color: #e9e9e9;
|
border-color: #e9e9e9 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,16 +102,16 @@ button {
|
||||||
color: #cf5b5b;
|
color: #cf5b5b;
|
||||||
}
|
}
|
||||||
|
|
||||||
.disabled-btn {
|
.disabled-btn, button[disabled] {
|
||||||
background-color: rgba(255, 255, 255, 0.973);
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
color: #dddddd;
|
color: #dddddd !important;
|
||||||
border-color: #e9e9e9;
|
border-color: #e9e9e9 !important;
|
||||||
cursor: default;
|
cursor: default !important;
|
||||||
}
|
}
|
||||||
.disabled-btn:hover {
|
.disabled-btn:hover, button[disabled]:hover {
|
||||||
background-color: rgba(255, 255, 255, 0.973);
|
background-color: rgba(255, 255, 255, 0.973) !important;
|
||||||
color: #dddddd;
|
color: #dddddd !important;
|
||||||
border-color: #e9e9e9;
|
border-color: #e9e9e9 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-btn {
|
.tab-btn {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -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") || "";
|
||||||
|
|
@ -16,14 +17,14 @@ class Tb_main_class {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Overview 생산계획등록
|
||||||
|
* @Parameter DATABASE로부터 받은 데이터
|
||||||
|
* @function DB 데이터 가공하여 바인딩.
|
||||||
|
*/
|
||||||
manageData(data) {
|
manageData(data) {
|
||||||
// console.log(data);
|
// console.log(data);
|
||||||
|
let _this = this;
|
||||||
let arr = new Array();
|
let arr = new Array();
|
||||||
|
|
||||||
const result = Object.groupBy(data.data, ({ SEQ_NO }) => SEQ_NO)
|
const result = Object.groupBy(data.data, ({ SEQ_NO }) => SEQ_NO)
|
||||||
|
|
@ -43,6 +44,7 @@ class Tb_main_class {
|
||||||
tempITEM[`AM_PLAN_QTY_${date}`] = rst.AMITEM
|
tempITEM[`AM_PLAN_QTY_${date}`] = rst.AMITEM
|
||||||
tempITEM[`PM_PLAN_QTY_${date}`] = rst.PMITEM
|
tempITEM[`PM_PLAN_QTY_${date}`] = rst.PMITEM
|
||||||
tempITEM[`NI_PLAN_QTY_${date}`] = rst.NIITEM
|
tempITEM[`NI_PLAN_QTY_${date}`] = rst.NIITEM
|
||||||
|
_this.lastGroupId = parseInt(rst.SEQ_NO);
|
||||||
return tempITEM;
|
return tempITEM;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -52,11 +54,12 @@ class Tb_main_class {
|
||||||
let arr = new Array();
|
let arr = new Array();
|
||||||
tempQTY['SEQ_NO'] = rst.SEQ_NO
|
tempQTY['SEQ_NO'] = rst.SEQ_NO
|
||||||
tempQTY['SEPER'] = "계획"
|
tempQTY['SEPER'] = "계획"
|
||||||
tempQTY['PLAN_FACLT_CD'] = rst.PLAN_FACLT_CD
|
tempQTY['PLAN_FACLT_CD'] = rst.PLAN_FACLT_CD
|
||||||
tempQTY['WRK_TEAM'] = rst.WRK_TEAM
|
tempQTY['WRK_TEAM'] = rst.WRK_TEAM
|
||||||
tempQTY[`AM_PLAN_QTY_${date}`] = rst.AMQTY
|
tempQTY[`AM_PLAN_QTY_${date}`] = rst.AMQTY
|
||||||
tempQTY[`PM_PLAN_QTY_${date}`] = rst.PMQTY
|
tempQTY[`PM_PLAN_QTY_${date}`] = rst.PMQTY
|
||||||
tempQTY[`NI_PLAN_QTY_${date}`] = rst.NIQTY
|
tempQTY[`NI_PLAN_QTY_${date}`] = rst.NIQTY
|
||||||
|
_this.lastGroupId = parseInt(rst.SEQ_NO);
|
||||||
return tempQTY;
|
return tempQTY;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -71,6 +74,7 @@ class Tb_main_class {
|
||||||
tempPRD[`AM_PLAN_QTY_${date}`] = rst.AMPRD
|
tempPRD[`AM_PLAN_QTY_${date}`] = rst.AMPRD
|
||||||
tempPRD[`PM_PLAN_QTY_${date}`] = rst.PMPRD
|
tempPRD[`PM_PLAN_QTY_${date}`] = rst.PMPRD
|
||||||
tempPRD[`NI_PLAN_QTY_${date}`] = rst.NIPRD
|
tempPRD[`NI_PLAN_QTY_${date}`] = rst.NIPRD
|
||||||
|
_this.lastGroupId = parseInt(rst.SEQ_NO);
|
||||||
return tempPRD;
|
return tempPRD;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -164,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"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -179,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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -288,9 +299,78 @@ class Tb_main_class {
|
||||||
* @function _STATUS_ 값이 있는 데이터만 추려서 없으면 생성, 있으면 수정하기
|
* @function _STATUS_ 값이 있는 데이터만 추려서 없으면 생성, 있으면 수정하기
|
||||||
*/
|
*/
|
||||||
putData() {
|
putData() {
|
||||||
|
// let _this = this;
|
||||||
|
console.log(this.tbList.getData().filter((row) => row._STATUS_));
|
||||||
|
// 저장 시 상태 변화 없는 row 요청 X
|
||||||
|
if (this.tbList.getData().filter((row) => row._STATUS_).length == 0) {
|
||||||
|
this.getMainList();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// 기본키 중복 확인 및 방지
|
const blankObj = [];
|
||||||
// _STATUS_ 있는 데이터만 들고와서 PUT하기
|
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);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -357,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",
|
||||||
|
|
@ -375,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: [
|
||||||
|
|
@ -415,7 +496,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();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// 삭제
|
// 삭제
|
||||||
|
|
@ -430,6 +512,7 @@ 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.getDate();
|
||||||
this.setFilter();
|
this.setFilter();
|
||||||
// this.getMainList("getPlanList","team_pop","product_pop","sub_product_pop");
|
// this.getMainList("getPlanList","team_pop","product_pop","sub_product_pop");
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@
|
||||||
<div class="input-container flexcol gap06">
|
<div class="input-container flexcol gap06">
|
||||||
|
|
||||||
<div class="input-box flexrow flexend flex-1">
|
<div class="input-box flexrow flexend flex-1">
|
||||||
<label for="" style="width:80px;">가동시작시간</label>
|
<label for="run-time" style="width:80px;">가동시작시간</label>
|
||||||
<input type="text" id="" name="" class="form-control form-control-sm" />
|
<input v-model='dateTime' type="text" id="run-time" name="" class="form-control form-control-sm" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,12 @@ if( !_notAuth("R") ){/************ 권한체크*/
|
||||||
// 설비 고장등록 조회
|
// 설비 고장등록 조회
|
||||||
|
|
||||||
// 가동 vs 비가동
|
// 가동 vs 비가동
|
||||||
case "":
|
case "getWokerInfo":
|
||||||
$sql = "";
|
$sql = "USP_P_REG_PROD_RESULT_S10";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
|
'WO_NO' => $_REQUEST["WO_NO"] ?: "",
|
||||||
|
'OP_SEQ' => $_REQUEST["OP_SEQ"] ?: ""
|
||||||
);
|
);
|
||||||
|
|
||||||
$rst = $baseObj->DB->exec($sql,$params);
|
$rst = $baseObj->DB->exec($sql,$params);
|
||||||
|
|
@ -38,8 +40,84 @@ if( !_notAuth("R") ){/************ 권한체크*/
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case "o":
|
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;
|
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_CD" => $data['DEPT_CD']?:"",
|
||||||
|
// "WO_NO" => $data['DEPT_NM']?:"",
|
||||||
|
// "WO_SEQ" => $data['BIZ_AREA_CD'] ?: "",
|
||||||
|
// "WORK_DT" => $data['PAR_DEPT_CD']?:"",
|
||||||
|
// "RUNSTOP_GB" => $data['EMP_NO']?:"",
|
||||||
|
// "STOP_CD" => $data['USE_FLG'] ?: "",
|
||||||
|
// "OPER_ST_TM" => $data['USE_FLG'] ?: "",
|
||||||
|
// "EMP_NO" => $data['USE_FLG'] ?: "",
|
||||||
|
|
||||||
|
// "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']?:"",
|
||||||
|
"STOP_CD" => $data['STOP_CD'] ?: "",
|
||||||
|
"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;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,70 @@
|
||||||
class SimpleTable {
|
class SimpleTable {
|
||||||
constructor(fields, getmode, putmode){
|
constructor(fields, getmode, putmode, formData){
|
||||||
this.field = fields;
|
// ajax
|
||||||
this.ajaxUrl = './reg_prod_result.ajax.php';
|
this.ajaxUrl = './reg_prod_result.ajax.php';
|
||||||
this.getmode = getmode?getmode:'';
|
this.getMode = getmode?getmode:'';
|
||||||
this.putmode = putmode?putmode:'';
|
this.putMode = putmode?putmode:'';
|
||||||
|
|
||||||
|
// data
|
||||||
|
this.field = fields;
|
||||||
|
this.formData = formData;
|
||||||
|
|
||||||
|
// element
|
||||||
this.container = document.querySelector(".detail-contents");
|
this.container = document.querySelector(".detail-contents");
|
||||||
this.table = this.container?.querySelector(".hy-table");
|
this.table = this.container?.querySelector(".hy-table");
|
||||||
|
this.addBtn = this.container?.querySelector(".add-btn");
|
||||||
}
|
}
|
||||||
|
|
||||||
getMainList(){
|
getMainList(){
|
||||||
// ajax_json({
|
return ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: {
|
||||||
|
mode: this.getMode,
|
||||||
|
...this.formData
|
||||||
|
},
|
||||||
|
success:( data ) => {
|
||||||
|
if( data.code ){
|
||||||
|
this.tbList.setData(data.data);
|
||||||
|
}else{
|
||||||
|
console.log(data)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: (request, status, error)=>{
|
||||||
|
kuls_alert(error.message);
|
||||||
|
|
||||||
// })
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
addRow(){}
|
// addRow(data){
|
||||||
putData(){
|
// this.tbList.addRow({...data})
|
||||||
// ajax_json({})
|
// }
|
||||||
|
putData(addData, updateData){
|
||||||
|
const postData = {
|
||||||
|
mode : this.putMode,
|
||||||
|
reqdata : JSON.stringify([{...this.formData, ...addData}])
|
||||||
|
};
|
||||||
|
|
||||||
|
ajax_json({
|
||||||
|
url: this.ajaxUrl,
|
||||||
|
data: postData,
|
||||||
|
success: (data)=>{
|
||||||
|
if (data.code) {
|
||||||
|
kuls_success("저장되었습니다.");
|
||||||
|
this.getMainList();
|
||||||
|
}else{
|
||||||
|
kuls_alert(data.mesg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (request, status, error) {
|
||||||
|
kuls_alert(error.message);
|
||||||
|
},
|
||||||
|
complete: function () {
|
||||||
|
pop
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
init(){
|
init(addData, updateData){
|
||||||
const commonFieldData = {
|
const commonFieldData = {
|
||||||
headerSort: false,
|
headerSort: false,
|
||||||
vertAlign: "middle",
|
vertAlign: "middle",
|
||||||
|
|
@ -62,7 +109,18 @@ class SimpleTable {
|
||||||
})
|
})
|
||||||
|
|
||||||
this.tbList.on("tableBuilt", () => {
|
this.tbList.on("tableBuilt", () => {
|
||||||
this.getMainList();
|
this.getMainList().then(()=>{
|
||||||
|
if(addData){
|
||||||
|
this.tbList.addRow({...addData});
|
||||||
|
};
|
||||||
|
if(updateData){
|
||||||
|
this.tbList.update(updateData);
|
||||||
|
};
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
this.addBtn?.addEventListener('click', ()=>{
|
||||||
|
this.putData(addData,false);
|
||||||
})
|
})
|
||||||
|
|
||||||
// 행선택
|
// 행선택
|
||||||
|
|
@ -115,10 +173,32 @@ class FieldPop {
|
||||||
|
|
||||||
tabs1: [ '작업표준서 조회', '도면 조회' ], //popup 띄우기
|
tabs1: [ '작업표준서 조회', '도면 조회' ], //popup 띄우기
|
||||||
|
|
||||||
tabs2: [{ isDefHst : '과거불량이력 조회' }, { isFacltBreak : '설비 고장등록' }, {isRun : '가동'}, {isNoRun : '비가동'} ],
|
tabs2: [
|
||||||
|
{
|
||||||
|
id : 'isDefHst',
|
||||||
|
name : '과거불량이력 조회'
|
||||||
|
},
|
||||||
|
{ id : 'isFacltBreak',
|
||||||
|
name : '설비 고장등록'
|
||||||
|
},
|
||||||
|
{ id : 'isRun',
|
||||||
|
name : '가동'
|
||||||
|
},
|
||||||
|
{ id : 'isNoRun',
|
||||||
|
name : '비가동'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
activeTab : '',
|
activeTab : '',
|
||||||
|
|
||||||
|
isDisabled : [false, false, false, true],
|
||||||
|
|
||||||
|
dateTime : '00:00',
|
||||||
|
|
||||||
|
getMode : '',
|
||||||
|
|
||||||
|
putMode : '',
|
||||||
|
|
||||||
tableField : {
|
tableField : {
|
||||||
isDefHst : [
|
isDefHst : [
|
||||||
{ field: "DEF_NO", formatter:"rownum", title: "순번", width: 50},
|
{ field: "DEF_NO", formatter:"rownum", title: "순번", width: 50},
|
||||||
|
|
@ -161,12 +241,12 @@ 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: "", formatter:"rownum", title: "순번", width: 50},
|
||||||
|
|
@ -244,16 +324,16 @@ class FieldPop {
|
||||||
modal.delete();
|
modal.delete();
|
||||||
},
|
},
|
||||||
|
|
||||||
callTable(com){
|
callTable(com, addData=false, updateData=false ){
|
||||||
|
|
||||||
this.$nextTick(()=>{
|
this.$nextTick(()=>{
|
||||||
// 여기서 mode 명 동적으로 정의할것 (com을 사용)
|
|
||||||
const getmode = '';
|
|
||||||
const putmode = '';
|
|
||||||
|
|
||||||
const table = new SimpleTable(this.tableField[com], getmode, putmode);
|
|
||||||
|
|
||||||
table.init();
|
|
||||||
|
const table = new SimpleTable(this.tableField[com], this.getMode, this.putMode, this.formData);
|
||||||
|
|
||||||
|
table.init(addData, updateData);
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
@ -266,19 +346,51 @@ class FieldPop {
|
||||||
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 now = new Date();
|
||||||
|
this.dateTime = now.getHours() + ":"
|
||||||
|
+ ( now.getMinutes()<10 ? '0' + now.getMinutes() : now.getMinutes() ) + ":"
|
||||||
|
+ ( now.getSeconds()<10 ? '0' + now.getSeconds() : now.getSeconds() );
|
||||||
|
|
||||||
|
this.getMode = 'getRunInfo';
|
||||||
|
this.putMode = 'putRunInfo';
|
||||||
|
|
||||||
|
this.callTable(com,{
|
||||||
|
WO_NO: this.formData.WO_NO,
|
||||||
|
RUNSTOP_GB: 'R',
|
||||||
|
OPER_ST_TM : this.dateTime,
|
||||||
|
_STATUS_ : 'I'
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.callTable(com);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 클릭시 탭메뉴 활성화
|
// 클릭시 탭메뉴 활성화
|
||||||
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;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
|
||||||
<button type="button" v-for="(tab, idx) in tabs1" :key="idx" :class="{ on : activeTab === tab}" @click="activeTab === tab" >{{ tab }}</button>
|
<button type="button" v-for="(tab, idx) in tabs1" :key="idx" :class="{ on : activeTab === tab}" @click="activeTab === tab" >{{ tab }}</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-button-box flexrow gap06 flex-5 flexend">
|
<div class="form-button-box flexrow gap06 flex-5 flexend">
|
||||||
<button type="button" v-for="(tab, idx) in tabs2" :key="idx" :class="{ on : activeTab === tab[Object.keys(tab)[0]] }" @click="showComponent(Object.keys(tab)[0], tab[Object.keys(tab)[0]])" >{{ tab[Object.keys(tab)[0]] }}</button>
|
<button type="button" v-for="(tab, idx) in tabs2" :key="idx" :disabled="isDisabled[idx]" :class="{ on : activeTab === tab.name }" @click="showComponent(tab.id, tab.name)" >{{ tab.name }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -236,42 +236,6 @@ const VueOperStatusCode = createApp({
|
||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
methods:{
|
methods:{
|
||||||
initData(group){
|
|
||||||
for(let i = 0; i < group.length; i++){
|
|
||||||
|
|
||||||
finalDataList = []
|
|
||||||
for(let j=0;j<10;j++){
|
|
||||||
const operData = group[i][j];
|
|
||||||
// console.log(operData)
|
|
||||||
if(operData){
|
|
||||||
finalDataList.push(
|
|
||||||
{
|
|
||||||
OP_CD: operData.OP_CD ,
|
|
||||||
PLAN_QTY: operData.PLAN_QTY,
|
|
||||||
PRD_QTY : operData.PRD_QTY,
|
|
||||||
ST_TM:operData.ST_TM,
|
|
||||||
ED_TM : operData.ED_TM,
|
|
||||||
예상종료시간 : operData.예상종료시간 ,
|
|
||||||
FACLT_CD: operData.FACLT_CD,
|
|
||||||
EMP_NM: operData.EMP_NM
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}else{
|
|
||||||
finalDataList.push({})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
group[i][0].공정 = finalDataList
|
|
||||||
|
|
||||||
this.codeList.push(group[i][0]);
|
|
||||||
for(let i=0; i<this.codeList.length; i++){
|
|
||||||
this.isHover[i] = []
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// tableBuild 되었을때 getManList
|
// tableBuild 되었을때 getManList
|
||||||
getMainList(mode,...test) {
|
getMainList(mode,...test) {
|
||||||
|
|
@ -332,10 +296,12 @@ const VueOperStatusCode = createApp({
|
||||||
group[i][0].OP_CD = group[i].map(function (element) {
|
group[i][0].OP_CD = group[i].map(function (element) {
|
||||||
return {
|
return {
|
||||||
OP_CD: element?.OP_CD,
|
OP_CD: element?.OP_CD,
|
||||||
|
OP_SEQ: element?.OP_SEQ,
|
||||||
계획수량: element?.계획수량,
|
계획수량: element?.계획수량,
|
||||||
PRD_QTY: element?.PRD_QTY,
|
PRD_QTY: element?.PRD_QTY,
|
||||||
ST_TM: element?.ST_TM,
|
ST_TM: element?.ST_TM,
|
||||||
ED_TM: element?.ED_TM,
|
ED_TM: element?.ED_TM,
|
||||||
|
EMP_NO: element?.WRK_EMP_NO,
|
||||||
예상종료시간: element?.예상종료시간,
|
예상종료시간: element?.예상종료시간,
|
||||||
FACLT_CD: element?.FACLT_CD,
|
FACLT_CD: element?.FACLT_CD,
|
||||||
EMP_NM: element?.EMP_NM
|
EMP_NM: element?.EMP_NM
|
||||||
|
|
@ -374,10 +340,12 @@ const VueOperStatusCode = createApp({
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.codeList = realTemp
|
this.codeList = realTemp;
|
||||||
|
|
||||||
|
|
||||||
this.initData(group);
|
for(let i=0; i<this.codeList.length; i++){
|
||||||
|
this.isHover[i] = []
|
||||||
|
}
|
||||||
|
|
||||||
// 실제 데이터 입력함수
|
// 실제 데이터 입력함수
|
||||||
// ajax_json({
|
// ajax_json({
|
||||||
|
|
@ -401,9 +369,11 @@ const VueOperStatusCode = createApp({
|
||||||
const process = data['OP_CD'][idx]
|
const process = data['OP_CD'][idx]
|
||||||
const bindingData = {
|
const bindingData = {
|
||||||
WO_NO: data['WO_NO'],
|
WO_NO: data['WO_NO'],
|
||||||
|
WO_SEQ: data['WO_SEQ'],
|
||||||
// 상태: data[상태],
|
// 상태: data[상태],
|
||||||
DRAW_NO: data['DRAW_NO'],
|
DRAW_NO: data['DRAW_NO'],
|
||||||
ITEM_CD: data['ITEM_CD'],
|
ITEM_CD: data['ITEM_CD'],
|
||||||
|
OP_SEQ: process['OP_SEQ'],
|
||||||
OP_CD: process['OP_CD'],
|
OP_CD: process['OP_CD'],
|
||||||
EMP_NO: process['EMP_NO'],
|
EMP_NO: process['EMP_NO'],
|
||||||
FACLT_CD: process['FACLT_CD'],
|
FACLT_CD: process['FACLT_CD'],
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue