Files
sam-kd/lot/list_sheet.php

1124 lines
39 KiB
PHP
Raw Normal View History

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
if (!isset($_SESSION["level"]) || $_SESSION["level"] > 5) {
sleep(1);
header("Location:" . $WebSite . "login/login_form.php");
exit;
}
include $_SERVER['DOCUMENT_ROOT'] . '/load_header.php';
$title_message = '절곡품 재고생산 작업일지 및 중간검사성적서';
?>
<link href="css/style.css" rel="stylesheet">
<title> <?=$title_message?> </title>
<style>
#specailTable th, #specailTable td {
padding: 3px!important;
}
#specailTable2 th, #specailTable2 td {
padding: 3px!important;
}
.specailTable th, .specailTable td {
padding: 2px!important;
}
</style>
</head>
<body>
<?php
$header = isset($_REQUEST['header']) ? $_REQUEST['header'] : '';
if ($header === 'header')
require_once($_SERVER['DOCUMENT_ROOT'] . '/myheader.php');
function checkNull($strtmp) {
return ($strtmp !== null && trim($strtmp) !== '');
}
// 필터링 값 가져오기
$search = isset($_REQUEST['search']) ? $_REQUEST['search'] : '';
$prodNameSelect = isset($_REQUEST['prodNameSelect']) ? $_REQUEST['prodNameSelect'] : '';
$specNameSelect = isset($_REQUEST['specNameSelect']) ? $_REQUEST['specNameSelect'] : '';
$slengthNameSelect = isset($_REQUEST['slengthNameSelect']) ? $_REQUEST['slengthNameSelect'] : '';
$mode = isset($_REQUEST["mode"]) ? $_REQUEST["mode"] : '';
$tablename = 'lot';
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
$pdo = db_connect();
$order = " ORDER BY reg_date DESC ";
// 기본 SQL 쿼리
$sql = "SELECT * FROM " . $DB . "." . $tablename . " WHERE is_deleted IS NULL ";
// 필터 조건을 동적으로 추가
$whereClause = [];
if (checkNull($search)) {
$whereClause[] = "search_tag LIKE '%$search%'";
}
if (checkNull($prodNameSelect)) {
$whereClause[] = "prod = '$prodNameSelect'";
}
if (checkNull($specNameSelect)) {
$whereClause[] = "spec = '$specNameSelect'";
}
if (checkNull($slengthNameSelect)) {
$whereClause[] = "slength = '$slengthNameSelect'";
}
// 추가된 where 조건이 있을 경우 SQL 쿼리에 반영
if (!empty($whereClause)) {
$sql .= " AND " . implode(' AND ', $whereClause);
}
$sql .= $order;
try {
$stmh = $pdo->query($sql);
$total_row = $stmh->rowCount();
// 품목명을 매핑하는 배열
$prodNames = [
'R' => '가이드레일(벽면형)',
'S' => '가이드레일(측면형)',
'G' => '연기차단재',
'B' => '하단마감재(스크린)',
'T' => '하단마감재(철재)',
'L' => 'L - Bar',
'C' => '케이스'
];
// 종류명을 매핑하는 배열
$specNames = [
'I' => '화이바원단',
'S' => 'SUS(마감)',
'U' => 'SUS(마감)2',
'E' => 'EGI(마감)',
'A' => '스크린용',
'D' => 'D형',
'C' => 'C형',
'M' => '본체',
'T' => '본체(철재)',
'B' => '후면코너부',
'L' => '린텔부',
'P' => '점검구',
'F' => '전면부'
];
// 모양&길이를 매핑하는 배열
$slengthNames = [
'53' => 'W50 × 3000',
'54' => 'W50 × 4000',
'83' => 'W80 × 3000',
'84' => 'W80 × 4000',
'12' => '1219',
'24' => '2438',
'30' => '3000',
'35' => '3500',
'40' => '4000',
'41' => '4150',
'42' => '4200',
'43' => '4300'
];
?>
<form id="board_form" name="board_form" method="post" enctype="multipart/form-data">
<input type="hidden" id="mode" name="mode" value="<?=$mode?>">
<input type="hidden" id="num" name="num">
<input type="hidden" id="tablename" name="tablename" value="<?=$tablename?>">
<input type="hidden" id="header" name="header" value="<?=$header?>">
<!-- 모달 2: myModal -->
<div id="myModal" class="modal" tabindex="-1" data-bs-backdrop="static">
<div class="modal-content" style="width:800px; z-index: 1050;"> <!-- z-index로 순서 조정 -->
<div class="modal-header">
<span class="modal-title">절곡품 생산 LOT </span>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<div class="custom-card"></div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="card justify-content-center text-center mt-1 mb-5">
<div class="card-header">
<div class="d-flex justify-content-center align-items-center">
<span class="text-center fs-5"> <?=$title_message?> </span>
<button type="button" class="btn btn-dark btn-sm mx-2" onclick='location.reload();' > <i class="bi bi-arrow-clockwise"></i> </button>
</div>
</div>
<div class="card-body">
<?php include $_SERVER['DOCUMENT_ROOT'] . '/lot/lotTable.php'; ?>
<div class="container mt-2 mb-4">
<div class="d-flex justify-content-center align-items-center">
<?= $total_row ?> &nbsp;
<!-- 품목명 select box -->
<div class="inputWrap30">
<select id="prodNameSelect" name="prodNameSelect" class="form-select w-auto mx-1" style="font-size:0.7rem; height:32px;" >
<option value="">품목명 선택</option>
<?php foreach($prodNames as $key => $value) { ?>
<option value="<?= $key ?>" <?= ($prodNameSelect == $key) ? 'selected' : '' ?>><?= $value ?></option>
<?php } ?>
</select>
</div>
&nbsp;
<!-- 종류명 select box -->
<div class="inputWrap30">
<select id="specNameSelect" name="specNameSelect" class="form-select w-auto mx-1" style="font-size:0.7rem; height:32px;" >
<option value="">종류명 선택</option>
<?php foreach($specNames as $key => $value) { ?>
<option value="<?= $key ?>" <?= ($specNameSelect == $key) ? 'selected' : '' ?>><?= $value ?></option>
<?php } ?>
</select>
</div>
&nbsp;
<!-- 모양&길이 select box -->
<div class="inputWrap30">
<select id="slengthNameSelect" name="slengthNameSelect" class="form-select w-auto mx-1" style="font-size:0.7rem; height:32px;" >
<option value="">모양&길이 선택</option>
<?php foreach($slengthNames as $key => $value) { ?>
<option value="<?= $key ?>" <?= ($slengthNameSelect == $key) ? 'selected' : '' ?>><?= $value ?></option>
<?php } ?>
</select>
</div>
&nbsp;
<!-- 기존 검색 input -->
<div class="inputWrap30">
<input type="text" id="search" class="form-control text-start" style="width:150px;" name="search" value="<?= $search ?>" autocomplete="off" onKeyPress="if (event.keyCode==13){ enter(); }">
<button class="btnClear"></button>
</div>
&nbsp;&nbsp;
<button class="btn btn-outline-dark btn-sm" type="button" id="searchBtn"> <i class="bi bi-search"></i> </button> &nbsp;&nbsp;&nbsp;&nbsp;
</div>
<style>
#specailTable th, #specailTable td {
padding: 3px!important;
}
#specailTable2 th, #specailTable2 td {
padding: 3px!important;
}
</style>
<div class="table-responsive">
<table class="table table-hover" id="myTable">
<thead class="table-primary">
<th class="text-center" style="width:50px;" >번호</th>
<th class="text-center" style="width:100px;" >등록일</th>
<th class="text-center" style="width:100px;" >원자재 LOT</th>
<th class="text-center" style="width:100px;" >원단 LOT</th>
<th class="text-center" style="width:120px;" >생산 LOT</th>
<th class="text-center" style="width:60px;" > 판정 </th>
<th class="text-center" style="width:250px;" >품목명</th>
<th class="text-center" style="width:250px;" >종류</th>
<th class="text-center" style="width:200px;" >모양&길이</th>
<th class="text-center" style="width:50px;" >수량</th>
<th class="text-center" style="width:80px;" >작성</th>
<th class="text-center" style="width:150px;" >비고</th>
</thead>
<tbody>
<?php
$start_num = $total_row;
while($row = $stmh->fetch(PDO::FETCH_ASSOC)) {
include '_row.php';
// 품목명, 종류, 모양&길이에 대한 친절한 표시를 준비
$prodDisplay = isset($prodNames[$prod]) ? "{$prod}({$prodNames[$prod]})" : $prod;
$specDisplay = isset($specNames[$spec]) ? "{$spec}({$specNames[$spec]})" : $spec;
$slengthDisplay = isset($slengthNames[$slength]) ? "{$slength}({$slengthNames[$slength]})" : $slength;
// JSON을 배열로 디코딩
$iListArray = json_decode($recordsheet, true);
// print_r($iListArray);
// resultJudgement 값을 찾기 위한 루프
$resultJudgement = null;
foreach ($iListArray as $item) {
// 배열에서 inputValue가 존재하는지 확인
if (isset($item['inputValue']) && is_array($item['inputValue'])) {
// inputValue의 마지막 값이 resultJudgement일 가능성 체크
$resultJudgement = end($item['inputValue']);
break; // 값을 찾으면 루프 종료
}
}
?>
<tr onclick="loadFormSheet('update', '<?=$num?>');" data-num="<?=$num?>">
<td class="text-center"> <?= $start_num ?></td>
<td class="text-center"> <?= $reg_date ?></td>
<td class="text-center text-primary"> <?= $rawLot ?></td>
<td class="text-center text-primary"> <?= $fabric_lot ?></td>
<td class="text-center fw-bold text-success"><?= $lot_number ?></td>
<?php
// resultJudgement 값이 "합격"이면 text-dark, 아니면 text-danger로 설정
$class = ($resultJudgement === '합격') ? 'text-dark' : 'text-danger';
?>
<td class="text-center fw-bold resultJudgement <?= $class ?>"><?= $resultJudgement ?></td>
<td class="text-center"> <?= $prodDisplay ?></td>
<td class="text-center"> <?= $specDisplay ?></td>
<td class="text-center"> <?= $slengthDisplay ?></td>
<td class="text-center"> <?= $surang ?></td>
<td class="text-center"> <?= $author ?></td>
<td class="text-start"> <?= $remark ?></td>
</tr>
<?php
$start_num--;
}
} catch (PDOException $Exception) {
print "오류: ".$Exception->getMessage();
}
?>
</tbody>
</table>
</div>
</div>
</div>
</form>
<script>
var loader = document.getElementById('loadingOverlay');
if(loader)
loader.style.display = 'none';
var dataTable; // DataTables 인스턴스 전역 변수
var bendinglotPageNumber; // 현재 페이지 번호 저장을 위한 전역 변수
$(document).ready(function() {
// DataTables 초기 설정
dataTable = $('#myTable').DataTable({
"paging": true,
"ordering": true,
"searching": false,
"pageLength": 100,
"lengthMenu": [100, 200, 500, 1000],
"language": {
"lengthMenu": "Show _MENU_ entries"
},
"order": [[1, 'desc']] // 출고예정기준 내림정렬
});
// 페이지 번호 복원 (초기 로드 시)
var savedPageNumber = getCookie('bendinglotPageNumber');
if (savedPageNumber) {
dataTable.page(parseInt(savedPageNumber) - 1).draw(false);
}
// 페이지 변경 이벤트 리스너
dataTable.on('page.dt', function() {
var bendinglotPageNumber = dataTable.page.info().page + 1;
setCookie('bendinglotPageNumber', bendinglotPageNumber, 10); // 쿠키에 페이지 번호 저장
});
// 페이지 길이 셀렉트 박스 변경 이벤트 처리
$('#myTable_length select').on('change', function() {
var selectedValue = $(this).val();
dataTable.page.len(selectedValue).draw(); // 페이지 길이 변경 (DataTable 파괴 및 재초기화 없이)
// 변경 후 현재 페이지 번호 복원
savedPageNumber = getCookie('bendinglotPageNumber');
if (savedPageNumber) {
dataTable.page(parseInt(savedPageNumber) - 1).draw(false);
}
});
});
function restorePageNumber() {
var savedPageNumber = getCookie('bendinglotPageNumber');
// if (savedPageNumber) {
// dataTable.page(parseInt(savedPageNumber) - 1).draw('page');
// }
location.reload(true);
}
$(document).ready(function() {
$("#searchBtn").on("click", function() {
$("#board_form").submit();
});
});
var selectedRow;
function loadFormSheet(mode, num = null) {
if (num == null) {
$("#mode").val('insert');
} else {
$("#mode").val('modify');
$("#num").val(num);
}
// 클릭된 행을 저장
selectedRow = $(`tr[data-num="${num}"]`);
var url = "write_sheet.php?num=" + num ;
customPopup(url, '성적서', 800, 900);
// $.ajax({
// type: "POST",
// url: "fetch_modal.php",
// data: { mode: mode, num: num },
// dataType: "html",
// success: function(response) {
// $(".modal-body .custom-card").html(response);
// $("#myModal").show();
// // 품목별 선택 가능한 종류 목록 설정
// const options = {
// 'G': ['I'], // 연기차단재 - 화이바원단
// 'B': ['S', 'E'], // 하단마감재(스크린) - SUS, EGI
// 'T': ['S', 'E'], // 하단마감재(철재) - SUS, EGI
// 'L': ['A'], // L - Bar - 스크린용
// 'R': ['S', 'D', 'C', 'M', 'E'], // 가이드레일 - SUS, D형, C형, 본체, EGI
// 'S': ['S', 'D', 'C', 'M', 'E', 'U'], // 가이드레일 - SUS, D형, C형, 본체
// 'C': ['B', 'L', 'P', 'F'] // 케이스 - 후면코너부, 린텔부, 점검구, 전면부
// };
// // 품목명 매핑
// const prodCodeMap = {
// 'G': 'G', // 연기차단재
// 'B': 'B', // 하단마감재(스크린)
// 'T': 'T', // 하단마감재(철재)
// 'L': 'L', // L - Bar
// 'R': 'R', // 가이드레일(벽면형)
// 'S': 'S', // 가이드레일(측면형)
// 'C': 'C' // 케이스
// };
// // 종류명을 매핑하는 배열 (화면에 표시될 한글명)
// const specNames = {
// 'I': '화이바원단',
// 'S': 'SUS(마감)',
// 'U': 'SUS(마감)2',
// 'E': 'EGI(마감)',
// 'A': '스크린용', // 스크린용
// 'D': 'D형',
// 'C': 'C형',
// 'M': '본체',
// 'B': '후면코너부',
// 'L': '린텔부',
// 'P': '점검구',
// 'F': '전면부'
// };
// // 종류 코드 매핑 (LOT 번호에 사용할 코드)
// const specCodeMap = {
// 'I': 'I', // 화이바원단
// 'S': 'S', // SUS(마감)
// 'U': 'U', // SUS(마감)2
// 'E': 'E', // EGI(마감)
// 'A': 'A', // 스크린용
// 'D': 'D', // D형
// 'C': 'C', // C형
// 'M': 'M', // 본체
// 'B': 'B', // 후면코너부
// 'L': 'L', // 린텔부
// 'P': 'P', // 점검구
// 'F': 'F' // 전면부
// };
// // 모양&길이를 매핑하는 배열
// const slengthOptions = {
// '연기차단재': [
// { value: '53', text: 'W50 × 3000' },
// { value: '54', text: 'W50 × 4000' },
// { value: '83', text: 'W80 × 3000' },
// { value: '84', text: 'W80 × 4000' }
// ],
// '기타': [
// { value: '12', text: '1219' },
// { value: '24', text: '2438' },
// { value: '30', text: '3000' },
// { value: '35', text: '3500' },
// { value: '40', text: '4000' },
// { value: '42', text: '4200' },
// { value: '43', text: '4300' }
// ]
// };
// const prodSelect = document.getElementById('prod');
// const specSelect = document.getElementById('spec');
// const slengthSelect = document.getElementById('slength');
// const lotNumberInput = document.getElementById('lot_number');
// const regDate = document.getElementById('reg_date').value;
// // 날짜 코드를 생성하는 함수
// function getDateCode(dateString) {
// const date = new Date(dateString);
// if (isNaN(date.getTime())) return ''; // 유효하지 않은 날짜 처리
// const year = date.getFullYear().toString().slice(-1); // 연도의 마지막 숫자
// const month = date.getMonth() + 1; // 월
// const day = date.getDate(); // 일
// const monthCode = month >= 10 ? String.fromCharCode(55 + month) : month.toString(); // 월을 A, B, C로 변환
// return `${year}${monthCode}${day.toString().padStart(2, '0')}`;
// }
// // LOT 번호 업데이트 함수
// function updateLotNumber() {
// const selectedProd = prodSelect.value;
// const selectedSpec = specSelect.value;
// const selectedSlength = slengthSelect.value;
// const prodCode = prodCodeMap[selectedProd] || '';
// const specCode = specCodeMap[selectedSpec] || '';
// const slengthCode = selectedProd === 'G'
// ? slengthOptions['연기차단재'].find(option => option.value === selectedSlength)?.value
// : slengthOptions['기타'].find(option => option.value === selectedSlength)?.value;
// const dateCode = getDateCode(regDate);
// if (prodCode && specCode && slengthCode && dateCode) {
// lotNumberInput.value = `${prodCode}${specCode}${dateCode}-${slengthCode}`;
// } else {
// lotNumberInput.value = '';
// }
// }
// // 품목 변경 시
// $(document).on('change', '#prod', function() {
// const selectedProd = this.value;
// const specOptions = options[selectedProd] || [];
// // 종류 select의 옵션 초기화
// specSelect.innerHTML = '<option value="" disabled>종류 선택</option>';
// // 종류 select에 해당하는 품목의 옵션 추가 (화면에 한글 표시)
// specOptions.forEach(function(spec) {
// const optionText = specNames[spec] || '종류 없음'; // 한글명 표시
// specSelect.innerHTML += '<option value="' + spec + '">' + optionText + '</option>';
// });
// // 모양&길이 select 초기화 및 옵션 추가
// const slengthOptionsToAdd = (selectedProd === 'G') ? slengthOptions['연기차단재'] : slengthOptions['기타'];
// slengthSelect.innerHTML = '<option value="" disabled>모양&길이 선택</option>';
// slengthOptionsToAdd.forEach(function(option) {
// slengthSelect.innerHTML += '<option value="' + option.value + '">' + option.text + '</option>';
// });
// updateLotNumber(); // LOT 번호 업데이트
// });
// // 종류 변경 시 LOT 번호 업데이트
// $(document).on('change', '#spec', function() {
// updateLotNumber();
// });
// // 모양 & 길이 선택 시 LOT 번호 업데이트
// $(document).on('change', '#slength', function() {
// updateLotNumber();
// });
// // 날짜 코드를 생성하는 함수
// function getDateCode(dateString) {
// const date = new Date(dateString);
// if (isNaN(date.getTime())) return ''; // 날짜가 유효하지 않으면 빈 값 반환
// const year = date.getFullYear().toString().slice(-1); // 연도의 마지막 숫자
// const month = date.getMonth() + 1; // 월 (0부터 시작하므로 1을 더함)
// const day = date.getDate(); // 일
// // 월을 A, B, C로 변환 (10월=A, 11월=B, 12월=C)
// const monthCode = month >= 10 ? String.fromCharCode(55 + month) : month.toString();
// // 4자리 날짜 코드 (년도 마지막 숫자 + 월 코드 + 일)
// return `${year}${monthCode}${day.toString().padStart(2, '0')}`;
// }
// // 품목 및 종류에 따른 재질 정보
// const materialMap = {
// 'G': { 'I': '화이바원단' },
// 'B': { 'S': 'SUS 1.2T', 'E': 'EGI 1.55T' },
// 'L': { 'A': 'EGI 1.55T' },
// 'R': { 'S': 'SUS 1.2T', 'D': 'EGI 1.55T', 'C': 'EGI 1.55T', 'M': 'EGI 1.55T', 'E': 'EGI 1.55T' },
// 'S': { 'S': 'SUS 1.2T', 'U': 'SUS 1.2T', 'D': 'EGI 1.55T', 'C': 'EGI 1.55T', 'M': 'EGI 1.55T', 'E': 'EGI 1.55T' },
// 'C': { 'B': 'EGI 1.55T', 'L': 'EGI 1.55T', 'P': 'EGI 1.55T', 'F': 'EGI 1.55T' }
// };
// // 품목과 종류가 선택될 때 재질을 결정하는 함수
// function updateMaterial() {
// const prod = $('#prod').val(); // 품목 선택 값
// const spec = $('#spec').val(); // 종류 선택 값
// // 재질 결정
// if (materialMap[prod] && materialMap[prod][spec]) {
// const material = materialMap[prod][spec];
// $('#rawLot').attr('data-searchRaw', material); // 재질을 data-searchRaw에 추가
// console.log('재질: ' + material);
// } else {
// $('#rawLot').attr('data-searchRaw', ''); // 해당 조합이 없으면 빈 값
// console.log('재질 정보 없음');
// }
// }
// // 품목과 종류가 변경될 때마다 재질 업데이트
// $('#prod, #spec').on('change', function() {
// updateMaterial();
// });
// updateMaterial();
// // 모달을 호출할 때 tr 요소를 저장하는 변수
// $(document).on('click', '.lotnumInput', function() {
// selectedRow = $(this).closest('tr'); // 클릭된 행(tr)을 저장
// const prod =$('select[name="prod"]').val(); // 해당 행에서 'prod'의 선택값
// const spec =$('select[name="spec"]').val(); // 해당 행에서 'spec'의 선택값
// console.log("선택된 품목:", prod);
// console.log("선택된 종류:", spec);
// // 재질을 결정하는 함수 호출
// const material = getMaterial(prod, spec);
// // 결정된 재질을 #rawLot input 요소의 data-searchRaw 속성에 추가
// $('#rawLot').attr('data-searchRaw', material);
// // console.log('raw Material', material);
// $.ajax({
// type: 'POST',
// url: 'fetch_lot.php',
// data: { item_name: material },
// dataType: 'html',
// success: function(data) {
// $('#lotModal .modal-body').html(data); // 모달 바디에 데이터 로드
// setTimeout(function() {
// $('#lotModal').modal('show'); // 모달 띄우기
// }, 500);
// },
// error: function(xhr, status, error) {
// console.error("AJAX Request Failed:", status, error);
// console.error("Response:", xhr.responseText);
// }
// });
// });
// $(document).on('click', '.lotnumInput_fabric', function() {
// selectedRow = $(this).closest('tr'); // 클릭된 행(tr)을 저장
// // 재질을 결정하는 함수 호출
// const material = '화이바원단';
// $.ajax({
// type: 'POST',
// url: 'fetch_lot_fabric.php',
// data: { item_name: material },
// dataType: 'html',
// success: function(data) {
// $('#lotModal_fabric .modal-body').html(data); // 모달 바디에 데이터 로드
// setTimeout(function() {
// $('#lotModal_fabric').modal('show'); // 모달 띄우기
// }, 500);
// },
// error: function(xhr, status, error) {
// console.error("AJAX Request Failed:", status, error);
// console.error("Response:", xhr.responseText);
// }
// });
// });
// $("#closeBtn").on("click", function() {
// $("#myModal").hide();
// });
// let isSaving = false;
// $("#saveBtn").on("click", function() {
// if (isSaving) return;
// isSaving = true;
// var header = $("#header").val();
// var formData = $("#board_form").serialize(); // 파일전송은 안된다. serialize의 단점
// $.ajax({
// url: "insert.php",
// type: "post",
// data: formData,
// success: function(response) {
// Toastify({
// text: "저장완료",
// duration: 3000,
// close: true,
// gravity: "top",
// position: "center",
// backgroundColor: "#4fbe87",
// }).showToast();
// setTimeout(function() {
// $("#myModal").hide();
// location.reload();
// isSaving = false;
// }, 1000);
// },
// error: function(jqxhr, status, error) {
// console.log(jqxhr, status, error);
// isSaving = false;
// }
// });
// });
// $("#deleteBtn").on("click", function() {
// var level = '<?= $_SESSION["level"] ?>';
// if (level !== '1') {
// Swal.fire({
// title: '삭제불가',
// text: "관리자만 삭제 가능합니다.",
// icon: 'error',
// confirmButtonText: '확인'
// });
// return;
// }
// Swal.fire({
// title: '자료 삭제',
// text: "삭제는 신중! 정말 삭제하시겠습니까?",
// icon: 'warning',
// showCancelButton: true,
// confirmButtonColor: '#3085d6',
// cancelButtonColor: '#d33',
// confirmButtonText: '삭제',
// cancelButtonText: '취소'
// }).then((result) => {
// if (result.isConfirmed) {
// $("#mode").val('delete');
// var formData = $("#board_form").serialize();
// $.ajax({
// url: "insert.php",
// type: "post",
// data: formData,
// success: function(response) {
// Toastify({
// text: "파일 삭제완료",
// duration: 2000,
// close: true,
// gravity: "top",
// position: "center",
// style: {
// background: "linear-gradient(to right, #00b09b, #96c93d)"
// },
// }).showToast();
// $("#myModal").hide();
// location.reload();
// },
// error: function(jqxhr, status, error) {
// console.log(jqxhr, status, error);
// }
// });
// }
// });
// });
// },
// error: function(jqxhr, status, error) {
// console.log("AJAX Error: ", status, error);
// }
// });
}
// 팝업 창 닫기 시 데이터를 전달하고 열 갱신
function closePopupAndUpdateRow(updatedData) {
if (selectedRow) {
// selectedRow.find('.text-center.text-primary').eq(0).text(updatedData.rawLot);
// selectedRow.find('.text-center.text-primary').eq(1).text(updatedData.fabric_lot);
// selectedRow.find('.fw-bold.text-success').text(updatedData.lot_number);
selectedRow.find('.resultJudgement').text(updatedData.resultJudgement);
// // 추가적으로 다른 필드도 업데이트 필요 시 설정
// selectedRow.find('.text-center').eq(1).text(updatedData.reg_date);
// selectedRow.find('.text-center').eq(6).text(updatedData.prodDisplay);
// selectedRow.find('.text-center').eq(7).text(updatedData.specDisplay);
// selectedRow.find('.text-center').eq(8).text(updatedData.slengthDisplay);
// selectedRow.find('.text-center').eq(9).text(updatedData.surang);
// selectedRow.find('.text-center').eq(10).text(updatedData.author);
// selectedRow.find('.text-start').eq(0).text(updatedData.remark);
}
}
// 모달에서 선택한 로트 번호를 적용
function selectLotNumber(lotNumber) {
if (selectedRow) {
selectedRow.find('input.lotnumInput').val(lotNumber); // 선택된 로트 번호 적용
$('#lotModal').modal('hide');
} else {
console.error('selectedRow is undefined or null.');
}
}
// 모달에서 선택한 로트 번호를 적용
function selectLotNumber_fabric(lotNumber) {
if (selectedRow) {
selectedRow.find('input.lotnumInput_fabric').val(lotNumber); // 선택된 로트 번호 적용
$('#lotModal_fabric').modal('hide');
} else {
console.error('selectedRow is undefined or null.');
}
}
$(document).on('click', '.nullBtn', function() {
selectLotNumber('');
});
$(document).on('click', '.cancelBtn', function() {
$('#lotModal').modal('hide');
});
$(document).on('click', '.nullBtn_fabric', function() {
selectLotNumber_fabric('');
});
$(document).on('click', '.cancelBtn_fabric', function() {
$('#lotModal_fabric').modal('hide');
});
$(document).on('click', '.lot-done-btn', function(e) {
// 이벤트 전파를 막아 모달이 닫히는 것을 방지
e.stopPropagation();
const num = $(this).data('num');
const tablename = $(this).data('tablename');
console.log('num', num);
console.log('tablename', tablename);
Swal.fire({
title: '로트 소진 처리',
text: '해당 로트를 소진 처리하시겠습니까?',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: '예, 처리합니다',
cancelButtonText: '취소'
}).then((result) => {
if (result.isConfirmed) {
// 사용자가 '예'를 선택한 경우에만 AJAX 요청 수행
$.ajax({
url: 'update_lotdone.php',
type: 'POST',
data: {
num: num,
tablename: tablename,
mode: 'update',
lotDone: '소진'
},
dataType: 'json',
success: function(response) {
console.log(response);
if (response && response.success) {
Swal.fire({
title: '처리 완료',
text: '소진 처리되었습니다.',
icon: 'success',
confirmButtonText: '확인'
}).then(() => {
// 모달이 존재할 때만 닫기
if ($('#lotModal').hasClass('show')) {
$('#lotModal').modal('hide');
}
reloadModalContent();
});
} else {
Swal.fire({
title: '오류',
text: '소진 처리 중 오류가 발생했습니다.',
icon: 'error',
confirmButtonText: '확인'
});
}
},
error: function(xhr, status, error) {
console.error('AJAX Error:', status, error);
Swal.fire({
title: 'AJAX 오류',
text: '요청 중 오류가 발생했습니다.',
icon: 'error',
confirmButtonText: '확인'
});
}
});
}
});
});
$(document).on('click', '.lot-done-fabric-btn', function(e) {
// 이벤트 전파를 막아 모달이 닫히는 것을 방지
e.stopPropagation();
const num = $(this).data('num');
const tablename = $(this).data('tablename');
console.log('num', num);
console.log('tablename', tablename);
Swal.fire({
title: '로트 소진 처리',
text: '해당 로트를 소진 처리하시겠습니까?',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: '예, 처리합니다',
cancelButtonText: '취소'
}).then((result) => {
if (result.isConfirmed) {
// 사용자가 '예'를 선택한 경우에만 AJAX 요청 수행
$.ajax({
url: 'update_lotdone.php',
type: 'POST',
data: {
num: num,
tablename: tablename,
mode: 'update',
lotDone: '소진'
},
dataType: 'json',
success: function(response) {
console.log(response);
if (response && response.success) {
Swal.fire({
title: '처리 완료',
text: '소진 처리되었습니다.',
icon: 'success',
confirmButtonText: '확인'
}).then(() => {
// 모달이 존재할 때만 닫기
if ($('#lotModal_fabric').hasClass('show')) {
$('#lotModal_fabric').modal('hide');
}
reloadModalContent_fabric();
});
} else {
Swal.fire({
title: '오류',
text: '소진 처리 중 오류가 발생했습니다.',
icon: 'error',
confirmButtonText: '확인'
});
}
},
error: function(xhr, status, error) {
console.error('AJAX Error:', status, error);
Swal.fire({
title: 'AJAX 오류',
text: '요청 중 오류가 발생했습니다.',
icon: 'error',
confirmButtonText: '확인'
});
}
});
}
});
});
function reloadModalContent_fabric() {
selectedRow = $(this).closest('tr'); // 클릭된 행(tr)을 저장
const material = '화이바원단';
$.ajax({
type: 'POST',
url: 'fetch_lot_fabric.php',
data: { item_name: material },
dataType: 'html',
success: function(data) {
$('#lotModal_fabric .modal-body').html(data); // 모달 바디에 데이터 로드
setTimeout(function() {
$('#lotModal_fabric').modal('show'); // 모달 띄우기
}, 500);
},
error: function(xhr, status, error) {
console.error("AJAX Request Failed:", status, error);
console.error("Response:", xhr.responseText);
}
});
}
// 모달 내용 새로고침 함수
function reloadModalContent() {
selectedRow = $(this).closest('tr'); // 클릭된 행(tr)을 저장
const prod =$('select[name="prod"]').val(); // 해당 행에서 'prod'의 선택값
const spec =$('select[name="spec"]').val(); // 해당 행에서 'spec'의 선택값
console.log("선택된 품목:", prod);
console.log("선택된 종류:", spec);
// 재질을 결정하는 함수 호출
const material = getMaterial(prod, spec);
// 결정된 재질을 #rawLot input 요소의 data-searchRaw 속성에 추가
$('#rawLot').attr('data-searchRaw', material);
console.log('raw Material', material);
$.ajax({
type: 'POST',
url: 'fetch_lot.php',
data: { item_name: material },
dataType: 'html',
success: function(data) {
$('#lotModal .modal-body').html(data); // 모달 바디에 데이터 로드
setTimeout(function() {
$('#lotModal').modal('show'); // 모달 띄우기
}, 500);
},
error: function(xhr, status, error) {
console.error("AJAX Request Failed:", status, error);
console.error("Response:", xhr.responseText);
}
});
}
// 품목과 종류에 따른 재질 결정 함수
function getMaterial(prod, spec) {
let material = '';
// prod 및 spec 값을 코드로 해석하여 재질 결정
if (prod === 'G' && spec === 'I') { // 연기차단재 + 화이버원단
material = '화이바원단';
} else if (prod === 'B' && spec === 'S' || prod === 'T' && spec === 'S' ) { // 하단마감재(스크린) + SUS
material = 'SUS 1.2T';
} else if (prod === 'B' && spec === 'E' || prod === 'T' && spec === 'E' ) { // 하단마감재(스크린) + EGI
material = 'EGI 1.55T';
} else if (prod === 'L' && spec === 'A') { // L - Bar + 스크린용
material = 'EGI 1.55T';
} else if ((prod === 'R' || prod === 'S') && (spec === 'S' || spec === 'U')) { // 가이드레일 + SUS 마감재
material = 'SUS 1.2T';
} else if ( (prod === 'R' || prod === 'S') && (spec === 'D' || spec === 'C' || spec === 'M' || spec === 'E')) { // 가이드레일 + D형, C형, 본체, EGI
material = 'EGI 1.55T';
} else if (prod === 'C' && (spec === 'B' || spec === 'L' || spec === 'P' || spec === 'F')) { // 케이스 + 후면코너부, 린텔부, 점검구, 전면부
material = 'EGI 1.55T';
}
return material;
}
$(document).ready(function(){
var modal = document.getElementById("myModal");
var span = document.getElementsByClassName("close")[0];
span.onclick = function() {
modal.style.display = "none";
}
$(".close").on("click", function() {
$("#myModal").hide();
});
$("#newBtn").on("click", function() {
loadFormSheet('insert');
});
$("#searchBtn").on("click", function() {
$("#board_form").submit();
});
// upload
$("#uploadBtn").on("click", function() {
popupCenter('uploadgrid.php' , '업로드', 1800, 800);
});
});
function enter() {
$("#board_form").submit();
}
function inputNumberFormat(obj) {
obj.value = obj.value.replace(/[^0-9]/g, '');
let value = obj.value.replace(/,/g, '');
obj.value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
$(document).on("keypress", "input", function(event) {
return event.keyCode != 13;
});
$(document).ready(function(){
// 방문기록 남김
var title_message = '<?php echo $title_message ; ?>';
saveMenuLog(title_message);
});
$(document).ready(function() {
// Toggle button for bendTable
$("#bendTableToggle").on("click", function() {
var showListSheet = getCookie("showListSheet");
var bendTable = $("#item_Table");
if (showListSheet === "show") {
bendTable.css("display", "none");
setCookie("showListSheet", "hide", 10);
} else {
bendTable.css("display", "block");
setCookie("showListSheet", "show", 10);
}
});
// Check the cookie value on page load and set the table visibility
var showListSheet = getCookie("showListSheet");
var bendTable = $("#item_Table");
if (showListSheet === "show") {
bendTable.css("display", "block");
} else {
bendTable.css("display", "none");
}
});
$(document).on('shown.bs.modal', '#lotModal', function() {
$('#myModal').css('z-index', 1040); // 기존 모달 뒤로 보내기
$(this).css('z-index', 1050); // 새 모달을 맨 위로
});
$(document).on('hidden.bs.modal', '#lotModal', function() {
$('#myModal').css('z-index', 1050); // 기존 모달을 다시 위로
});
$(document).on('shown.bs.modal', '#lotModal_fabric', function() {
$('#myModal').css('z-index', 1040); // 기존 모달 뒤로 보내기
$(this).css('z-index', 1050); // 새 모달을 맨 위로
});
$(document).on('hidden.bs.modal', '#lotModal_fabric', function() {
$('#myModal').css('z-index', 1050); // 기존 모달을 다시 위로
});
</script>
</body>
</html>