초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경 - DB 연결 하드코딩 → .env 기반으로 변경 - MySQL strict mode DATE 오류 수정
This commit is contained in:
21
lift/_request.php
Normal file
21
lift/_request.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
$num = isset($_REQUEST['num']) && $_REQUEST['num'] !== '' ? $_REQUEST['num'] : NULL;
|
||||
$vehicle_number = isset($_REQUEST['vehicle_number']) && $_REQUEST['vehicle_number'] !== '' ? $_REQUEST['vehicle_number'] : NULL;
|
||||
$vehicle_type = isset($_REQUEST['vehicle_type']) && $_REQUEST['vehicle_type'] !== '' ? $_REQUEST['vehicle_type'] : NULL;
|
||||
$responsible_person = isset($_REQUEST['responsible_person']) && $_REQUEST['responsible_person'] !== '' ? $_REQUEST['responsible_person'] : NULL;
|
||||
$assistant = isset($_REQUEST['assistant']) && $_REQUEST['assistant'] !== '' ? $_REQUEST['assistant'] : NULL;
|
||||
$insurance = isset($_REQUEST['insurance']) && $_REQUEST['insurance'] !== '' ? $_REQUEST['insurance'] : NULL;
|
||||
$insurance_contact = isset($_REQUEST['insurance_contact']) && $_REQUEST['insurance_contact'] !== '' ? $_REQUEST['insurance_contact'] : NULL; // 추가: 보험사 연락처
|
||||
$total_distance_km = isset($_REQUEST['total_distance_km']) && $_REQUEST['total_distance_km'] !== '' ? $_REQUEST['total_distance_km'] : NULL;
|
||||
$manufacturing_date = isset($_REQUEST['manufacturing_date']) && $_REQUEST['manufacturing_date'] !== '' ? $_REQUEST['manufacturing_date'] : NULL;
|
||||
$purchase_date = isset($_REQUEST['purchase_date']) && $_REQUEST['purchase_date'] !== '' ? $_REQUEST['purchase_date'] : NULL;
|
||||
$purchase_type = isset($_REQUEST['purchase_type']) && $_REQUEST['purchase_type'] !== '' ? $_REQUEST['purchase_type'] : NULL; // 추가: 구매 유형
|
||||
$engine_oil_change_data = isset($_REQUEST['engine_oil_change_data']) && $_REQUEST['engine_oil_change_data'] !== '' ? $_REQUEST['engine_oil_change_data'] : NULL;
|
||||
$engine_oil_change_cycle = isset($_REQUEST['engine_oil_change_cycle']) && $_REQUEST['engine_oil_change_cycle'] !== '' ? $_REQUEST['engine_oil_change_cycle'] : NULL; // 추가: 엔진오일 교환주기
|
||||
$maintenance_data = isset($_REQUEST['maintenance_data']) && $_REQUEST['maintenance_data'] !== '' ? $_REQUEST['maintenance_data'] : NULL;
|
||||
$note = isset($_REQUEST['note']) && $_REQUEST['note'] !== '' ? $_REQUEST['note'] : NULL;
|
||||
$update_log = isset($_REQUEST['update_log']) && $_REQUEST['update_log'] !== '' ? $_REQUEST['update_log'] : NULL;
|
||||
$is_deleted = isset($_REQUEST['is_deleted']) && $_REQUEST['is_deleted'] !== '' ? $_REQUEST['is_deleted'] : NULL;
|
||||
$searchtag = isset($_REQUEST['searchtag']) && $_REQUEST['searchtag'] !== '' ? $_REQUEST['searchtag'] : NULL;
|
||||
$KMrecordDate = isset($_REQUEST['KMrecordDate']) && $_REQUEST['KMrecordDate'] !== '' ? $_REQUEST['KMrecordDate'] : NULL;
|
||||
?>
|
||||
22
lift/_row.php
Normal file
22
lift/_row.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
// $row에서 가져오는 데이터
|
||||
$num = isset($row['num']) ? $row['num'] : '';
|
||||
$vehicle_number = isset($row['vehicle_number']) ? $row['vehicle_number'] : '';
|
||||
$vehicle_type = isset($row['vehicle_type']) ? $row['vehicle_type'] : '';
|
||||
$responsible_person = isset($row['responsible_person']) ? $row['responsible_person'] : '';
|
||||
$assistant = isset($row['assistant']) ? $row['assistant'] : '';
|
||||
$insurance = isset($row['insurance']) ? $row['insurance'] : '';
|
||||
$insurance_contact = isset($row['insurance_contact']) ? $row['insurance_contact'] : ''; // 추가: 보험사 연락처
|
||||
$total_distance_km = isset($row['total_distance_km']) ? $row['total_distance_km'] : '';
|
||||
$manufacturing_date = isset($row['manufacturing_date']) ? $row['manufacturing_date'] : '';
|
||||
$purchase_date = isset($row['purchase_date']) ? $row['purchase_date'] : '';
|
||||
$purchase_type = isset($row['purchase_type']) ? $row['purchase_type'] : ''; // 추가: 구매 유형
|
||||
$engine_oil_change_data = isset($row['engine_oil_change_data']) ? $row['engine_oil_change_data'] : '';
|
||||
$engine_oil_change_cycle = isset($row['engine_oil_change_cycle']) ? $row['engine_oil_change_cycle'] : ''; // 추가: 엔진오일 교환주기
|
||||
$maintenance_data = isset($row['maintenance_data']) ? $row['maintenance_data'] : '';
|
||||
$is_deleted = isset($row['is_deleted']) ? $row['is_deleted'] : '';
|
||||
$searchtag = isset($row['searchtag']) ? $row['searchtag'] : '';
|
||||
$update_log = isset($row['update_log']) ? $row['update_log'] : '';
|
||||
$note = isset($row['note']) ? $row['note'] : '';
|
||||
$KMrecordDate = isset($row['KMrecordDate']) ? $row['KMrecordDate'] : '';
|
||||
?>
|
||||
66
lift/css/style.css
Normal file
66
lift/css/style.css
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css");
|
||||
|
||||
fieldset.groupbox-border {
|
||||
border: 1px groove #ddd !important;
|
||||
padding: 3 3 3 3 !important;
|
||||
margin: 3 3 3 3 !important;
|
||||
box-shadow: 0px 0px 0px 0px #000;
|
||||
}
|
||||
|
||||
legend.groupbox-border {
|
||||
background-color: #F0F0F0;
|
||||
color: #000;
|
||||
padding: 3px 6px;
|
||||
font-size: 1.0em !important;
|
||||
font-weight: bold !important;
|
||||
text-align: left !important;
|
||||
border-bottom:none;
|
||||
}
|
||||
|
||||
fieldset.groupbox1-border {
|
||||
border: 1px groove #ddd !important;
|
||||
padding: 3 3 3 3 !important;
|
||||
margin: 3 3 3 3 !important;
|
||||
}
|
||||
|
||||
legend.groupbox1-border {
|
||||
background-color: #F0F0F0;
|
||||
color: #000;
|
||||
padding: 9px 9px;
|
||||
font-size: 1.0em !important;
|
||||
font-weight: bold !important;
|
||||
text-align: left !important;
|
||||
border-bottom:none;
|
||||
}
|
||||
|
||||
.input-group-text {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.375rem 0.75rem;
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1;
|
||||
color: #212529;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
background-color: #e9ecef;
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
background-color: #dddddd;
|
||||
}
|
||||
footer.btnBox_todayClose {
|
||||
padding: 0.5rem 0 0.7rem;
|
||||
display: flex;
|
||||
}
|
||||
form {padding-right: 2rem;}
|
||||
input#chkday {
|
||||
vertical-align: middle;
|
||||
}
|
||||
label {vertical-align: middle;}
|
||||
139
lift/insert.php
Normal file
139
lift/insert.php
Normal file
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
|
||||
|
||||
$mode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : '';
|
||||
$tablename = isset($_REQUEST['tablename']) ? $_REQUEST['tablename'] : '';
|
||||
|
||||
header("Content-Type: application/json"); // json을 사용하기 위해 필요한 구문
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
||||
$pdo = db_connect();
|
||||
|
||||
include "_request.php";
|
||||
|
||||
// engine_oil_change_data와 maintenance_data를 JSON으로 디코드
|
||||
$engine_oil_change_data_json = isset($_POST['engine_oil_change_data']) ? json_decode($_POST['engine_oil_change_data'], true) : null;
|
||||
$maintenance_data_json = isset($_POST['maintenance_data']) ? json_decode($_POST['maintenance_data'], true) : null;
|
||||
|
||||
// 검색 태그를 구성하는 부분 (필요한 필드를 조합해서 검색 태그로 만듦)
|
||||
$searchtag = $vehicle_number . ' ' .
|
||||
$vehicle_type . ' ' .
|
||||
$responsible_person . ' ' .
|
||||
$assistant . ' ' .
|
||||
$insurance . ' ' .
|
||||
$note . ' ' .
|
||||
$update_log;
|
||||
|
||||
if ($mode == "modify") {
|
||||
$update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " " . $update_log . "
";
|
||||
try {
|
||||
$pdo->beginTransaction();
|
||||
$sql = "UPDATE " . $DB . "." . $tablename . " SET ";
|
||||
$sql .= "vehicle_number = ?, vehicle_type = ?, responsible_person = ?, assistant = ?, ";
|
||||
$sql .= "insurance = ?, insurance_contact = ?, total_distance_km = ?, manufacturing_date = ?, purchase_date = ?, purchase_type = ?, ";
|
||||
$sql .= "engine_oil_change_data = ?, engine_oil_change_cycle = ?, maintenance_data = ?, note = ?, searchtag = ?, update_log = ?, ";
|
||||
$sql .= "is_deleted = ?, KMrecordDate = ? WHERE num = ? LIMIT 1";
|
||||
|
||||
$stmh = $pdo->prepare($sql);
|
||||
|
||||
// 바인딩
|
||||
$stmh->bindValue(1, $vehicle_number, PDO::PARAM_STR);
|
||||
$stmh->bindValue(2, $vehicle_type, PDO::PARAM_STR);
|
||||
$stmh->bindValue(3, $responsible_person, PDO::PARAM_STR);
|
||||
$stmh->bindValue(4, $assistant, PDO::PARAM_STR);
|
||||
$stmh->bindValue(5, $insurance, PDO::PARAM_STR);
|
||||
$stmh->bindValue(6, $insurance_contact, PDO::PARAM_STR); // 추가: 보험사 연락처
|
||||
$stmh->bindValue(7, $total_distance_km, PDO::PARAM_STR);
|
||||
$stmh->bindValue(8, $manufacturing_date, PDO::PARAM_STR);
|
||||
$stmh->bindValue(9, $purchase_date, PDO::PARAM_STR);
|
||||
$stmh->bindValue(10, $purchase_type, PDO::PARAM_STR); // 추가: 구매 유형
|
||||
// JSON으로 인코딩된 engine_oil_change_data
|
||||
$stmh->bindValue(11, json_encode($engine_oil_change_data_json), PDO::PARAM_STR);
|
||||
$stmh->bindValue(12, $engine_oil_change_cycle, PDO::PARAM_STR); // 추가: 엔진오일 교환주기
|
||||
// JSON으로 인코딩된 maintenance_data
|
||||
$stmh->bindValue(13, json_encode($maintenance_data_json), PDO::PARAM_STR);
|
||||
$stmh->bindValue(14, $note, PDO::PARAM_STR);
|
||||
$stmh->bindValue(15, $searchtag, PDO::PARAM_STR);
|
||||
$stmh->bindValue(16, $update_log, PDO::PARAM_STR);
|
||||
$stmh->bindValue(17, $is_deleted, PDO::PARAM_STR);
|
||||
$stmh->bindValue(18, $KMrecordDate, PDO::PARAM_STR);
|
||||
$stmh->bindValue(19, $num, PDO::PARAM_INT);
|
||||
|
||||
$stmh->execute();
|
||||
$pdo->commit();
|
||||
} catch (PDOException $Exception) {
|
||||
$pdo->rollBack();
|
||||
print "오류: " . $Exception->getMessage();
|
||||
}
|
||||
} elseif ($mode == "insert") {
|
||||
$update_log = date("Y-m-d H:i:s") . " - " . $_SESSION["name"] . " " . $update_log . "
";
|
||||
|
||||
try {
|
||||
$pdo->beginTransaction();
|
||||
|
||||
$sql = "INSERT INTO " . $DB . "." . $tablename . " (";
|
||||
$sql .= "vehicle_number, vehicle_type, responsible_person, assistant, ";
|
||||
$sql .= "insurance, insurance_contact, total_distance_km, manufacturing_date, purchase_date, purchase_type, ";
|
||||
$sql .= "engine_oil_change_data, engine_oil_change_cycle, maintenance_data, note, searchtag, update_log, is_deleted, KMrecordDate ";
|
||||
$sql .= ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
|
||||
$stmh = $pdo->prepare($sql);
|
||||
|
||||
// 바인딩
|
||||
$stmh->bindValue(1, $vehicle_number, PDO::PARAM_STR);
|
||||
$stmh->bindValue(2, $vehicle_type, PDO::PARAM_STR);
|
||||
$stmh->bindValue(3, $responsible_person, PDO::PARAM_STR);
|
||||
$stmh->bindValue(4, $assistant, PDO::PARAM_STR);
|
||||
$stmh->bindValue(5, $insurance, PDO::PARAM_STR);
|
||||
$stmh->bindValue(6, $insurance_contact, PDO::PARAM_STR); // 추가: 보험사 연락처
|
||||
$stmh->bindValue(7, $total_distance_km, PDO::PARAM_STR);
|
||||
$stmh->bindValue(8, $manufacturing_date, PDO::PARAM_STR);
|
||||
$stmh->bindValue(9, $purchase_date, PDO::PARAM_STR);
|
||||
$stmh->bindValue(10, $purchase_type, PDO::PARAM_STR); // 추가: 구매 유형
|
||||
// JSON으로 인코딩된 engine_oil_change_data
|
||||
$stmh->bindValue(11, json_encode($engine_oil_change_data_json), PDO::PARAM_STR);
|
||||
$stmh->bindValue(12, $engine_oil_change_cycle, PDO::PARAM_STR); // 추가: 엔진오일 교환주기
|
||||
// JSON으로 인코딩된 maintenance_data
|
||||
$stmh->bindValue(13, json_encode($maintenance_data_json), PDO::PARAM_STR);
|
||||
$stmh->bindValue(14, $note, PDO::PARAM_STR);
|
||||
$stmh->bindValue(15, $searchtag, PDO::PARAM_STR);
|
||||
$stmh->bindValue(16, $update_log, PDO::PARAM_STR);
|
||||
$stmh->bindValue(17, $is_deleted, PDO::PARAM_STR);
|
||||
$stmh->bindValue(18, $KMrecordDate, PDO::PARAM_STR);
|
||||
|
||||
$stmh->execute();
|
||||
$pdo->commit();
|
||||
} catch (PDOException $Exception) {
|
||||
$pdo->rollBack();
|
||||
print "오류: " . $Exception->getMessage();
|
||||
}
|
||||
|
||||
$sql = "SELECT num FROM " . $DB . "." . $tablename . " ORDER BY num DESC LIMIT 1";
|
||||
try {
|
||||
$stmh = $pdo->query($sql);
|
||||
$row = $stmh->fetch(PDO::FETCH_ASSOC);
|
||||
$num = $row["num"];
|
||||
} catch (PDOException $Exception) {
|
||||
print "오류: " . $Exception->getMessage();
|
||||
}
|
||||
} elseif ($mode == "delete") {
|
||||
try {
|
||||
$pdo->beginTransaction();
|
||||
$sql = "UPDATE " . $DB . "." . $tablename . " SET is_deleted = '1' WHERE num = ?";
|
||||
$stmh = $pdo->prepare($sql);
|
||||
$stmh->bindValue(1, $num, PDO::PARAM_INT);
|
||||
$stmh->execute();
|
||||
$pdo->commit();
|
||||
} catch (Exception $ex) {
|
||||
$pdo->rollBack();
|
||||
print "오류: " . $ex->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
$data = [
|
||||
'num' => $num,
|
||||
'mode' => $mode
|
||||
];
|
||||
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
||||
?>
|
||||
293
lift/list.php
Normal file
293
lift/list.php
Normal file
@@ -0,0 +1,293 @@
|
||||
<?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>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<?php
|
||||
// 세무사아이디면 다른 메뉴 연결
|
||||
if($_SESSION["userid"] == '0266771300') {
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/myheader_accountant.php';
|
||||
}
|
||||
else {
|
||||
include $_SERVER['DOCUMENT_ROOT'] . '/myheader.php';
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
|
||||
$header = isset($_REQUEST['header']) ? $_REQUEST['header'] : '';
|
||||
|
||||
function checkNull($strtmp) {
|
||||
return !($strtmp === null || trim($strtmp) === '');
|
||||
}
|
||||
|
||||
$search = isset($_REQUEST['search']) ? $_REQUEST['search'] : '';
|
||||
$mode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : '';
|
||||
|
||||
$tablename = 'lift'; // 'lift' 테이블 사용
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
||||
$pdo = db_connect();
|
||||
|
||||
$order_by = "ORDER BY manufacturing_date ASC, purchase_date ASC ";
|
||||
|
||||
if (checkNull($search)) {
|
||||
$sql = "SELECT * FROM ".$DB.".".$tablename."
|
||||
WHERE searchtag LIKE '%$search%' AND is_deleted IS NULL " . $order_by;
|
||||
} else {
|
||||
$sql = "SELECT * FROM ".$DB.".".$tablename." WHERE is_deleted IS NULL " . $order_by;
|
||||
}
|
||||
|
||||
try {
|
||||
$stmh = $pdo->query($sql);
|
||||
$total_row = $stmh->rowCount();
|
||||
?>
|
||||
|
||||
<form id="board_form" name="board_form" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" id="num" name="num" value="<?= isset($row['num']) ? $row['num'] : '' ?>">
|
||||
<input type="hidden" id="mode" name="mode" value="<?= isset($mode) ? $mode : '' ?>">
|
||||
<input type="hidden" id="tablename" name="tablename" value="<?= isset($tablename) ? $tablename : '' ?>">
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="card justify-content-center text-center mt-5">
|
||||
|
||||
<div class="card-header">
|
||||
<span class="text-center fs-5"> <?=$title_message?> </span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-center text-center align-items-center mb-2">
|
||||
▷ <?= $total_row ?>
|
||||
<div class="inputWrap30">
|
||||
<input type="text" id="search" class="form-control" style="width:150px;" name="search" value="<?=$search?>" onKeyPress="if (event.keyCode==13){ enter(); }">
|
||||
<button class="btnClear"></button>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-outline-dark btn-sm" type="button" id="searchBtn"> <i class="bi bi-search"></i> </button>
|
||||
<button id="newBtn" type="button" class="btn btn-dark btn-sm me-2"> <i class="bi bi-pencil-square"></i> 신규 </button>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover" id="myTable">
|
||||
|
||||
<thead class="table-primary">
|
||||
<th class="text-center w50px">번호</th>
|
||||
<th class="text-center w100px">차량번호</th>
|
||||
<th class="text-center w100px">차종</th>
|
||||
<th class="text-center w50px">담당자</th>
|
||||
<th class="text-center w120px">구입업체</th>
|
||||
<th class="text-center w100px">구입업체 연락처</th>
|
||||
<th class="text-center w100px">최초등록일</th>
|
||||
<th class="text-center w100px">구매일자</th>
|
||||
<th class="text-center w80px">구매 유형</th> <!-- 추가: 구매 유형 -->
|
||||
<th class="text-center w150px">부속품 교환 주기</th>
|
||||
<th class="text-center w150px">부속품 교환일</th>
|
||||
<th class="text-center w150px">정비 정보</th>
|
||||
<th class="text-center w200px">비고</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$start_num = $total_row;
|
||||
while($row = $stmh->fetch(PDO::FETCH_ASSOC)) {
|
||||
// 엔진오일 교환일 JSON 디코딩
|
||||
$engine_oil_data = json_decode($row['engine_oil_change_data'], true);
|
||||
$maintenance_data = json_decode($row['maintenance_data'], true);
|
||||
?>
|
||||
<tr onclick="redirectToView('<?=$row['num']?>')">
|
||||
<td class="text-center"><?= $start_num ?></td>
|
||||
<td class="text-center text-primary fw-bold"><?= htmlspecialchars($row['vehicle_number'], ENT_QUOTES, 'UTF-8') ?></td>
|
||||
<td class="text-center text-success fw-bold"><?= htmlspecialchars($row['vehicle_type'], ENT_QUOTES, 'UTF-8') ?></td>
|
||||
<td class="text-center fw-bold"><?= htmlspecialchars($row['responsible_person'], ENT_QUOTES, 'UTF-8') ?></td>
|
||||
<td class="text-center"><?= htmlspecialchars($row['insurance'], ENT_QUOTES, 'UTF-8') ?></td>
|
||||
<td class="text-center"><?= htmlspecialchars($row['insurance_contact'], ENT_QUOTES, 'UTF-8') ?></td> <!-- 추가: 보험사 연락처 -->
|
||||
<td class="text-center"><?= $row['manufacturing_date'] ?></td>
|
||||
<td class="text-center"><?= $row['purchase_date'] ?></td>
|
||||
<td class="text-center">
|
||||
<?php
|
||||
if (isset($row['purchase_type'])) {
|
||||
switch ($row['purchase_type']) {
|
||||
case 'lease':
|
||||
echo '리스';
|
||||
break;
|
||||
case 'rent':
|
||||
echo '렌트';
|
||||
break;
|
||||
case 'company_own':
|
||||
echo '회사 소유';
|
||||
break;
|
||||
default:
|
||||
echo '정보 없음';
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
echo '정보 없음';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="text-center"><?= htmlspecialchars($row['engine_oil_change_cycle'], ENT_QUOTES, 'UTF-8') ?></td> <!-- 추가: 엔진오일 교환 주기 -->
|
||||
|
||||
<td class="text-center">
|
||||
<?php
|
||||
if (!empty($engine_oil_data) && is_array($engine_oil_data)) {
|
||||
echo '<ul>';
|
||||
foreach ($engine_oil_data as $oil) {
|
||||
if (!empty($oil['engine_oil_change_date']) || !empty($oil['mileage'])) {
|
||||
echo '<li>';
|
||||
echo '' . htmlspecialchars($oil['engine_oil_change_date'], ENT_QUOTES, 'UTF-8') . ', ';
|
||||
echo '주행거리 : ' . htmlspecialchars($oil['mileage'], ENT_QUOTES, 'UTF-8') . ' km';
|
||||
echo '</li>';
|
||||
}
|
||||
}
|
||||
echo '</ul>';
|
||||
} else {
|
||||
echo '정보 없음';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<!-- 정비 정보 표시 -->
|
||||
<td class="text-center">
|
||||
<?php
|
||||
if (!empty($maintenance_data) && is_array($maintenance_data)) {
|
||||
echo '<ul>';
|
||||
foreach ($maintenance_data as $maintenance) {
|
||||
if (!empty($maintenance['maintenance_date']) && !empty($maintenance['maintenance_record'])) {
|
||||
echo '<li>' . htmlspecialchars($maintenance['maintenance_date'], ENT_QUOTES, 'UTF-8') . ': '
|
||||
. htmlspecialchars($maintenance['maintenance_record'], ENT_QUOTES, 'UTF-8') . '</li>';
|
||||
}
|
||||
}
|
||||
echo '</ul>';
|
||||
} else {
|
||||
echo '정보 없음';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="text-center"><?= htmlspecialchars($row['note'], ENT_QUOTES, 'UTF-8') ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
$start_num--;
|
||||
}
|
||||
} catch (PDOException $Exception) {
|
||||
print "오류: ".$Exception->getMessage();
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- 페이지 로딩 -->
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var loader = document.getElementById('loadingOverlay');
|
||||
if(loader)
|
||||
loader.style.display = 'none';
|
||||
});
|
||||
|
||||
var ajaxRequest_write = null;
|
||||
var dataTable;
|
||||
|
||||
$(document).ready(function() {
|
||||
dataTable = $('#myTable').DataTable({
|
||||
"paging": true,
|
||||
"ordering": true,
|
||||
"searching": true,
|
||||
"pageLength": 50,
|
||||
"lengthMenu": [25, 50, 100, 200, 500, 1000],
|
||||
"language": {
|
||||
"lengthMenu": "Show _MENU_ entries",
|
||||
"search": "Live Search:"
|
||||
},
|
||||
"order": []
|
||||
});
|
||||
|
||||
var savedPageNumber = getCookie('carpageNumber');
|
||||
if (savedPageNumber) {
|
||||
dataTable.page(parseInt(savedPageNumber) - 1).draw(false);
|
||||
}
|
||||
|
||||
dataTable.on('page.dt', function() {
|
||||
var carpageNumber = dataTable.page.info().page + 1;
|
||||
setCookie('carpageNumber', carpageNumber, 10);
|
||||
});
|
||||
|
||||
$('#myTable_length select').on('change', function() {
|
||||
var selectedValue = $(this).val();
|
||||
dataTable.page.len(selectedValue).draw();
|
||||
savedPageNumber = getCookie('carpageNumber');
|
||||
if (savedPageNumber) {
|
||||
dataTable.page(parseInt(savedPageNumber) - 1).draw(false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function restorePageNumber() {
|
||||
var savedPageNumber = getCookie('carpageNumber');
|
||||
location.reload(true);
|
||||
}
|
||||
|
||||
function enter() {
|
||||
$("#board_form").submit();
|
||||
}
|
||||
|
||||
$(document).keydown(function(e){
|
||||
var code = e.keyCode || e.which;
|
||||
if (code == 27) {
|
||||
self.close();
|
||||
}
|
||||
});
|
||||
|
||||
function redirectToView(num) {
|
||||
var title = '<?php echo $title_message; ?>';
|
||||
var tablename = $("#tablename").val();
|
||||
popupCenter('write_form.php?mode=modify&num=' + num + '&tablename=' + tablename, title , 1100, 900);
|
||||
}
|
||||
|
||||
$("#searchBtn").on("click", function() {
|
||||
$("#board_form").submit();
|
||||
});
|
||||
|
||||
$("#newBtn").on("click", function() {
|
||||
var title = '<?php echo $title_message; ?>';
|
||||
var tablename = $("#tablename").val();
|
||||
popupCenter('write_form.php?tablename=' + tablename, title +'신규등록' , 1100, 900);
|
||||
|
||||
});
|
||||
|
||||
$("#closeBtn").on("click", function() {
|
||||
self.close();
|
||||
});
|
||||
|
||||
function reloadlist() {
|
||||
$("#board_form").submit();
|
||||
}
|
||||
|
||||
$(document).ready(function(){
|
||||
// 방문기록 남김
|
||||
var title = '<?php echo $title_message; ?>';
|
||||
saveMenuLog(title);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
553
lift/write_form.php
Normal file
553
lift/write_form.php
Normal file
@@ -0,0 +1,553 @@
|
||||
<?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 = '지게차관리';
|
||||
?>
|
||||
<title> <?=$title_message?> </title>
|
||||
<?php if($chkMobile==true) { ?>
|
||||
<style>
|
||||
/* 모바일 화면에서 폰트 크기를 20px로 설정 */
|
||||
@media (max-width: 1000px) {
|
||||
body {
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.form-control, .fw-bold, .table td, .table th {
|
||||
font-size: 25px; /* 테이블, 입력 필드 등의 폰트 크기 조정 */
|
||||
}
|
||||
|
||||
button {
|
||||
font-size: 30px; /* 버튼의 폰트 크기 조정 */
|
||||
}
|
||||
|
||||
.modal-body, .modal-title {
|
||||
font-size: 30px; /* 모달 창 내부 폰트 크기 조정 */
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
<?php } ?>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
$option = isset($_REQUEST['option']) ? $_REQUEST['option'] : '';
|
||||
$search = isset($_REQUEST['search']) ? $_REQUEST['search'] : '';
|
||||
$mode = isset($_REQUEST['mode']) ? $_REQUEST['mode'] : '';
|
||||
$header = isset($_REQUEST['header']) ? $_REQUEST['header'] : '';
|
||||
|
||||
|
||||
$num = isset($_REQUEST["num"]) ? $_REQUEST["num"] : '';
|
||||
isset($_REQUEST["item"]) ? $item=$_REQUEST["item"] : $item='';
|
||||
isset($_REQUEST["tablename"]) ? $tablename=$_REQUEST["tablename"] : $tablename='';
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
||||
$pdo = db_connect();
|
||||
|
||||
if($num > 0) {
|
||||
try {
|
||||
$sql = "SELECT * FROM ". $DB . "." . $tablename . " WHERE num = ?";
|
||||
$stmh = $pdo->prepare($sql);
|
||||
$stmh->bindValue(1, $num, PDO::PARAM_INT);
|
||||
$stmh->execute();
|
||||
$row = $stmh->fetch(PDO::FETCH_ASSOC);
|
||||
include '_row.php';
|
||||
} catch (PDOException $Exception) {
|
||||
print "오류: ".$Exception->getMessage();
|
||||
}
|
||||
$mode = 'modify';
|
||||
} else {
|
||||
include '_request.php';
|
||||
$mode = 'insert';
|
||||
// 현재 날짜를 'Y-m-d' 형식으로 기록
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<?php require_once($_SERVER['DOCUMENT_ROOT'] . '/common/modal.php'); ?>
|
||||
|
||||
<form id="board_form" name="board_form" method="post" enctype="multipart/form-data">
|
||||
|
||||
<!-- 숨김 필드 (화면에 보이지 않음) -->
|
||||
<input type="hidden" id="num" name="num" value="<?= isset($row['num']) ? $row['num'] : '' ?>">
|
||||
<input type="hidden" id="mode" name="mode" value="<?= isset($mode) ? $mode : '' ?>">
|
||||
<input type="hidden" id="is_deleted" name="is_deleted" value="<?= isset($row['is_deleted']) ? $row['is_deleted'] : '' ?>">
|
||||
<input type="hidden" id="searchtag" name="searchtag" value="<?= isset($row['searchtag']) ? $row['searchtag'] : '' ?>">
|
||||
<input type="hidden" id="update_log" name="update_log" value="<?= isset($row['update_log']) ? $row['update_log'] : '' ?>">
|
||||
<input type="hidden" id="tablename" name="tablename" value="<?= isset($tablename) ? $tablename : '' ?>">
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="card justify-content-center mt-2 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">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="w120px"><label for="vehicle_number">지게차번호</label></td>
|
||||
<td colspan="3" >
|
||||
<input type="text" id="vehicle_number" name="vehicle_number" class="form-control w150px" value="<?= isset($row['vehicle_number']) ? $row['vehicle_number'] : '' ?>">
|
||||
</td>
|
||||
<td> <label for="vehicle_type"> 차종 </label></td>
|
||||
<td>
|
||||
<input type="text" id="vehicle_type" name="vehicle_type" class="form-control" value="<?= isset($row['vehicle_type']) ? $row['vehicle_type'] : '' ?>">
|
||||
</td>
|
||||
<td class="w100px" ><label for="purchase_type">구매유형</label></td>
|
||||
<td>
|
||||
<select id="purchase_type" name="purchase_type" class="form-select form-select-sm mx-1 d-block w-auto mx-1" >
|
||||
<option value="lease" <?= (isset($row['purchase_type']) && $row['purchase_type'] == 'lease') ? 'selected' : '' ?>>리스</option>
|
||||
<option value="rent" <?= (isset($row['purchase_type']) && $row['purchase_type'] == 'rent') ? 'selected' : '' ?>>렌트</option>
|
||||
<option value="company_own" <?= (isset($row['purchase_type']) && $row['purchase_type'] == 'company_own') ? 'selected' : '' ?>>회사 소유</option>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="responsible_person">담당자(정)</label></td>
|
||||
<td colspan="3" >
|
||||
<input type="text" id="responsible_person" name="responsible_person" class="form-control w100px" value="<?= isset($row['responsible_person']) ? $row['responsible_person'] : '' ?>">
|
||||
</td>
|
||||
<td class="w100px"> <label for="assistant">담당자(부)</label></td>
|
||||
<td colspan="3" >
|
||||
<input type="text" id="assistant" name="assistant" class="form-control w100px" value="<?= isset($row['assistant']) ? $row['assistant'] : '' ?>">
|
||||
</td>
|
||||
</td> </tr>
|
||||
<tr>
|
||||
<td><label for="insurance">구입업체 </label></td>
|
||||
<td class="w230px">
|
||||
<input type="text" id="insurance" name="insurance" class="form-control text-start" value="<?= isset($row['insurance']) ? $row['insurance'] : '' ?>">
|
||||
</td>
|
||||
<td class="w100px" > <label for="insurance_contact">구입업체 <br> 연락처 </label></td>
|
||||
<td class="w150px" >
|
||||
<input type="text" id="insurance_contact" name="insurance_contact" class="form-control text-start" value="<?= isset($row['insurance_contact']) ? $row['insurance_contact'] : '' ?>">
|
||||
</td>
|
||||
<td><label for="total_distance_km">총 주행거리 (km)</label></td>
|
||||
<td>
|
||||
<input type="text" id="total_distance_km" name="total_distance_km" class="form-control text-end w60px" value="<?= isset($row['total_distance_km']) ? $row['total_distance_km'] : '' ?>">
|
||||
</td>
|
||||
<td><label for="KMrecordDate">기록일 </label></td>
|
||||
<td>
|
||||
<input type="date" id="KMrecordDate" name="KMrecordDate" class="form-control" value="<?= isset($row['KMrecordDate']) ? $row['KMrecordDate'] : '' ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="manufacturing_date">최초등록일</label></td>
|
||||
<td>
|
||||
<input type="date" id="manufacturing_date" name="manufacturing_date" class="form-control w110px" value="<?= isset($row['manufacturing_date']) ? $row['manufacturing_date'] : '' ?>">
|
||||
</td>
|
||||
<td><label for="purchase_date">구매일자</label></td>
|
||||
<td>
|
||||
<input type="date" id="purchase_date" name="purchase_date" class="form-control" value="<?= isset($row['purchase_date']) ? $row['purchase_date'] : '' ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="engine_oil_change_data">부속품 교환일</label></td>
|
||||
<td colspan="7">
|
||||
<div class="d-flex align-items-center">
|
||||
<label class="me-2 ms-2 text-primary fw-bold" for="engine_oil_change_cycle"> 부속품 교환주기(Km) </label>
|
||||
<input type="number" id="engine_oil_change_cycle" name="engine_oil_change_cycle" class="form-control w100px fw-bold" value="<?= isset($row['engine_oil_change_cycle']) ? $row['engine_oil_change_cycle'] : '' ?>">
|
||||
|
||||
<button type="button" class="btn btn-outline-primary btn-sm add-row-engineOil mb-1 "> <i class="bi bi-plus"> </i> 부속품 교환일 추가</button>
|
||||
</div>
|
||||
|
||||
<table class="table table-bordered" id="engineOilListTable">
|
||||
<thead class="table-primary">
|
||||
<tr>
|
||||
<th class="text-center" >#</th>
|
||||
<th class="text-center" >교환일</th>
|
||||
<th class="text-center" >주행거리</th>
|
||||
<th class="text-center" >비용</th>
|
||||
<th class="text-center" >행 추가/삭제</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="engineOilListBody">
|
||||
<!-- 부속품 교환일 행이 추가될 위치 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="maintenance_data">정비내역</label></td>
|
||||
<td colspan="7">
|
||||
<button type="button" class="btn btn-outline-success btn-sm add-row-maintenance mb-1"> <i class="bi bi-plus"> </i> 정비내역 추가</button>
|
||||
<table class="table table-bordered" id="maintenanceListTable">
|
||||
<thead class="table-success">
|
||||
<tr>
|
||||
<th class="text-center" >#</th>
|
||||
<th class="text-center" >정비일자</th>
|
||||
<th class="text-center" >정비내역 기록</th>
|
||||
<th class="text-center" >비용</th>
|
||||
<th class="text-center" >행 추가/삭제</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="maintenanceListBody">
|
||||
<!-- 정비내역 행이 추가될 위치 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="note">비고</label></td>
|
||||
<td colspan="7" >
|
||||
<textarea id="note" name="note" class="form-control text-start" style="height:auto; min-height:60px;">
|
||||
<?= isset($row['note']) ? htmlspecialchars($row['note']) : '' ?>
|
||||
</textarea>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row mt-2 mb-3">
|
||||
<div class="d-flex justify-content-center">
|
||||
<button type="button" id="saveBtn" class="btn btn-dark btn-sm me-3">
|
||||
<i class="bi bi-floppy-fill"></i> 저장
|
||||
</button>
|
||||
<button type="button" id="deleteBtn" class="btn btn-danger btn-sm me-3">
|
||||
<i class="bi bi-trash"></i> 삭제
|
||||
</button>
|
||||
<button type="button" id="closeBtn" class="btn btn-outline-dark btn-sm me-2">
|
||||
× 닫기
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- 페이지 로딩 -->
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
var loader = document.getElementById('loadingOverlay');
|
||||
if(loader)
|
||||
loader.style.display = 'none';
|
||||
});
|
||||
|
||||
ajaxRequest_write = null;
|
||||
|
||||
$(document).ready(function(){
|
||||
$("#closeBtn").on("click", function() {
|
||||
self.close();
|
||||
});
|
||||
|
||||
$(document).ready(function(){
|
||||
$("#saveBtn").on("click", function() {
|
||||
let msg = '저장완료';
|
||||
|
||||
var form = $('#board_form')[0];
|
||||
var data = new FormData(form);
|
||||
|
||||
// 저장 시 데이터를 JSON으로 처리하는 부분
|
||||
let engineOilList = [];
|
||||
$('#engineOilListTable tbody tr').each(function() {
|
||||
let rowData = {};
|
||||
$(this).find('input, select').each(function() {
|
||||
let name = $(this).attr('name').replace('[]', '');
|
||||
rowData[name] = $(this).val();
|
||||
});
|
||||
engineOilList.push(rowData);
|
||||
});
|
||||
|
||||
// 데이터를 JSON으로 설정
|
||||
data.set('engine_oil_change_data', JSON.stringify(engineOilList));
|
||||
|
||||
// 정비내역 데이터를 JSON으로 처리하는 부분
|
||||
let maintenanceList = [];
|
||||
$('#maintenanceListTable tbody tr').each(function() {
|
||||
let rowData = {};
|
||||
$(this).find('input, textarea').each(function() {
|
||||
let name = $(this).attr('name').replace('[]', '');
|
||||
rowData[name] = $(this).val();
|
||||
});
|
||||
maintenanceList.push(rowData);
|
||||
});
|
||||
|
||||
// 데이터를 JSON으로 설정
|
||||
data.set('maintenance_data', JSON.stringify(maintenanceList));
|
||||
|
||||
if (ajaxRequest_write !== null) {
|
||||
ajaxRequest_write.abort();
|
||||
}
|
||||
|
||||
ajaxRequest_write = $.ajax({
|
||||
url: "insert.php",
|
||||
type: "post",
|
||||
data: data, // FormData 객체 사용
|
||||
processData: false, // jQuery가 data를 자동으로 처리하지 않도록 설정
|
||||
contentType: false, // contentType을 false로 설정하여 multipart/form-data로 전송
|
||||
success: function(data) {
|
||||
console.log(data);
|
||||
Toastify({
|
||||
text: msg,
|
||||
duration: 3000,
|
||||
close: true,
|
||||
gravity: "top",
|
||||
position: "center",
|
||||
backgroundColor: "#4fbe87",
|
||||
}).showToast();
|
||||
|
||||
$(opener.location).attr("href", "javascript:reloadlist();");
|
||||
|
||||
setTimeout(function() {
|
||||
self.close();
|
||||
}, 1000);
|
||||
},
|
||||
error: function(jqxhr, status, error) {
|
||||
console.log(jqxhr, status, error);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(document).ready(function() {
|
||||
// 삭제 버튼 클릭 이벤트
|
||||
$("#deleteBtn").on("click", function() {
|
||||
const delfirstitem = $("#num").val(); // 삭제할 항목의 num 값을 가져옴
|
||||
delFn(delfirstitem);
|
||||
});
|
||||
});
|
||||
|
||||
function delFn(delfirstitem) {
|
||||
$("#mode").val("delete");
|
||||
$("#num").val(delfirstitem);
|
||||
|
||||
Swal.fire({
|
||||
title: '해당 DATA 삭제',
|
||||
text: "DATA 삭제는 신중하셔야 합니다. 정말 삭제 하시겠습니까?",
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: '삭제',
|
||||
cancelButtonText: '취소'
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
if (ajaxRequest_write !== null) {
|
||||
ajaxRequest_write.abort();
|
||||
}
|
||||
ajaxRequest_write = $.ajax({
|
||||
url: "insert.php",
|
||||
type: "post",
|
||||
data: $("#board_form").serialize(),
|
||||
success: function(data) {
|
||||
console.log(data);
|
||||
Toastify({
|
||||
text: "파일 삭제 완료!",
|
||||
duration: 3000,
|
||||
close: true,
|
||||
gravity: "top",
|
||||
position: "center",
|
||||
backgroundColor: "#4fbe87"
|
||||
}).showToast();
|
||||
|
||||
// 페이지를 1.5초 후에 새로고침
|
||||
setTimeout(function() {
|
||||
$(opener.location).attr("href", "javascript:reloadlist();");
|
||||
self.close();
|
||||
}, 1000);
|
||||
},
|
||||
error: function(jqxhr, status, error) {
|
||||
console.log(jqxhr, status, error);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function inputNumberFormat(obj) {
|
||||
// 숫자, 소수점 및 - 이외의 문자는 제거
|
||||
obj.value = obj.value.replace(/[^0-9.-]/g, '');
|
||||
|
||||
// 콤마를 제거하고 숫자를 포맷팅
|
||||
let value = obj.value.replace(/,/g, '');
|
||||
|
||||
// 부호가 앞에 오도록 하고 소수점을 포함한 포맷팅 처리
|
||||
if (value.startsWith('-')) {
|
||||
// 음수일 때의 처리
|
||||
value = '-' + formatNumber(value.slice(1));
|
||||
} else {
|
||||
// 양수일 때의 처리
|
||||
value = formatNumber(value);
|
||||
}
|
||||
|
||||
obj.value = value;
|
||||
}
|
||||
|
||||
// 3자리마다 콤마를 추가하는 함수
|
||||
function formatNumber(value) {
|
||||
if (!value) return ''; // 값이 없으면 빈 문자열 반환
|
||||
let parts = value.split('.');
|
||||
// 정수 부분에만 콤마 추가
|
||||
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||||
// 소수점이 있으면 정수 부분 + 소수점 부분을 반환
|
||||
return parts.length > 1 ? parts.join('.') : parts[0];
|
||||
}
|
||||
|
||||
function deleteLastchar(str)
|
||||
// 마지막 문자 제거하는 함수
|
||||
{
|
||||
return str = str.substr(0, str.length - 1);
|
||||
}
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
// 서버에서 전달된 engine_oil_change_data를 PHP에서 JSON으로 변환
|
||||
var engineOilList = <?php echo json_encode($engine_oil_change_data ?? []); ?>;
|
||||
|
||||
// 부속품 교환일 데이터가 문자열 형태로 넘어올 경우 JSON으로 파싱
|
||||
if (typeof engineOilList === 'string') {
|
||||
try {
|
||||
engineOilList = JSON.parse(engineOilList);
|
||||
} catch (e) {
|
||||
console.error('JSON 파싱 오류:', e);
|
||||
engineOilList = [];
|
||||
}
|
||||
}
|
||||
|
||||
// 배열인지 확인하고 배열이 아니면 빈 배열로 초기화
|
||||
if (!Array.isArray(engineOilList)) {
|
||||
engineOilList = [];
|
||||
}
|
||||
|
||||
// 기존 데이터를 테이블에 추가
|
||||
engineOilList.forEach(function(rowData, index) {
|
||||
addRow_engineOil($('#engineOilListBody'), rowData);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// 초기 행 추가 버튼 클릭 시
|
||||
$(document).on('click', '.add-row-engineOil', function() {
|
||||
addRow_engineOil($('#engineOilListBody'));
|
||||
});
|
||||
|
||||
|
||||
$('#engineOilListBody').on('click', '.remove-row-engineOil', function() {
|
||||
$(this).closest('tr').remove();
|
||||
updateSerialNumbers($('#engineOilListBody'));
|
||||
});
|
||||
|
||||
// 행 추가 함수
|
||||
function addRow_engineOil(tableBody, rowData = {}) {
|
||||
var newRow = $('<tr>');
|
||||
|
||||
// 일련번호
|
||||
newRow.append('<td class="text-center serial-number"></td>');
|
||||
|
||||
// 부속품 교환일 (Date 필드)
|
||||
var engineOilChangeDate = rowData.engine_oil_change_date || new Date().toISOString().split('T')[0]; // 현재 날짜 기본값으로 설정
|
||||
newRow.append('<td class="text-center"><input type="date" name="engine_oil_change_date[]" class="form-control text-center" value="' + engineOilChangeDate + '"></td>');
|
||||
|
||||
// 주행거리 (Mileage 필드)
|
||||
var mileage = rowData.mileage || ''; // 기존 데이터 설정
|
||||
newRow.append('<td class="text-center"><input type="number" name="mileage[]" class="form-control text-center" value="' + mileage + '"></td>');
|
||||
var engineOilFee = rowData.engine_oil_fee || '' ;
|
||||
newRow.append('<td class="text-center"><input type="text" name="engine_oil_fee[]" class="form-control" value="' + engineOilFee + '"> </td>');
|
||||
|
||||
// 추가/삭제 버튼
|
||||
newRow.append('<td class="text-center">' +
|
||||
'<button type="button" class="btn btn-outline-dark btn-sm add-row-engineOil" style="border:0px;">+</button>' +
|
||||
'<button type="button" class="btn btn-outline-danger btn-sm remove-row-engineOil" style="border:0px;">-</button>' +
|
||||
'</td>');
|
||||
|
||||
// 행을 테이블에 추가
|
||||
tableBody.append(newRow);
|
||||
|
||||
// 일련번호 갱신
|
||||
updateSerialNumbers(tableBody);
|
||||
}
|
||||
|
||||
// 정비내역 행 추가 함수
|
||||
function addRow_maintenance(tableBody, rowData = {}) {
|
||||
var newRow = $('<tr>');
|
||||
|
||||
// 일련번호
|
||||
newRow.append('<td class="text-center serial-number" style="padding:2px;" ></td>');
|
||||
|
||||
// 정비일자 (Date 필드)
|
||||
var maintenanceDate = rowData.maintenance_date || new Date().toISOString().split('T')[0]; // 현재 날짜 기본값으로 설정
|
||||
newRow.append('<td class="text-center" style="padding:2px;" ><input type="date" name="maintenance_date[]" class="form-control text-center" value="' + maintenanceDate + '"></td>');
|
||||
|
||||
// 정비내역 기록 (Text 필드)
|
||||
var maintenanceRecord = rowData.maintenance_record || ''; // 기존 데이터 설정
|
||||
var maintenanceFee = rowData.maintenance_fee || ''; // 기존 데이터 설정
|
||||
newRow.append('<td class="text-center" style="padding:2px;" ><input type="text" name="maintenance_record[]" class="form-control" value="' + maintenanceRecord + '"> </td>');
|
||||
newRow.append('<td class="text-center" style="padding:2px;" ><input type="text" name="maintenance_fee[]" class="form-control" value="' + maintenanceFee + '"> </td>');
|
||||
|
||||
// 추가/삭제 버튼
|
||||
newRow.append('<td class="text-center" style="padding:2px;" >' +
|
||||
'<button type="button" class="btn btn-outline-dark btn-sm add-row-maintenance" style="border:0px;">+</button>' +
|
||||
'<button type="button" class="btn btn-outline-danger btn-sm remove-row-maintenance" style="border:0px;">-</button>' +
|
||||
'</td>');
|
||||
|
||||
// 행을 테이블에 추가
|
||||
tableBody.append(newRow);
|
||||
|
||||
// 일련번호 갱신
|
||||
updateSerialNumbers(tableBody);
|
||||
}
|
||||
|
||||
// 일련번호 갱신 함수
|
||||
function updateSerialNumbers(tableBody) {
|
||||
tableBody.find('tr').each(function(index) {
|
||||
$(this).find('.serial-number').text(index + 1);
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
// 서버에서 전달된 maintenance_data를 PHP에서 JSON으로 변환
|
||||
var maintenanceList = <?php echo json_encode($maintenance_data ?? []); ?>;
|
||||
|
||||
// 정비내역 데이터가 문자열 형태로 넘어올 경우 JSON으로 파싱
|
||||
if (typeof maintenanceList === 'string') {
|
||||
try {
|
||||
maintenanceList = JSON.parse(maintenanceList);
|
||||
} catch (e) {
|
||||
console.error('JSON 파싱 오류:', e);
|
||||
maintenanceList = [];
|
||||
}
|
||||
}
|
||||
|
||||
// 배열인지 확인하고 배열이 아니면 빈 배열로 초기화
|
||||
if (!Array.isArray(maintenanceList)) {
|
||||
maintenanceList = [];
|
||||
}
|
||||
|
||||
// 기존 데이터를 테이블에 추가
|
||||
maintenanceList.forEach(function(rowData) {
|
||||
addRow_maintenance($('#maintenanceListBody'), rowData);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// 초기 행 추가 버튼 클릭 시
|
||||
$(document).on('click', '.add-row-maintenance', function() {
|
||||
addRow_maintenance($('#maintenanceListBody'));
|
||||
});
|
||||
|
||||
|
||||
$('#maintenanceListBody').on('click', '.remove-row-maintenance', function() {
|
||||
$(this).closest('tr').remove();
|
||||
updateSerialNumbers($('#maintenanceListBody'));
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user