평면도 상세 화면 추가

This commit is contained in:
yangsh
2025-12-26 18:02:57 +09:00
parent 06e266425c
commit ab39be9602
5 changed files with 181 additions and 2 deletions

View File

@@ -95,6 +95,7 @@ $routes->group('article', ['namespace' => 'App\Controllers\Article'], function (
// 아파트 평면도
$routes->get('apt/lists2', 'Ground::lists');
$routes->get('apt/ground/detail/(:num)/(:num)', 'Ground::detail/$1/$2');
/**
* 아파트 평면도 - API

View File

@@ -209,6 +209,25 @@ class Ground extends BaseController
}
// 상세화면
public function detail($rcpt_no, $hscp_no): string
{
if ($rcpt_no == null || $hscp_no == null) {
throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
}
// 상세정보
$apt = $this->model->getDetail($rcpt_no, $hscp_no);
return view("pages/article/detail2", [
'apt' => $apt,
]);
}
// 파일업로드(평면도)
public function uploadFile()
{

View File

@@ -625,6 +625,35 @@ class GroundModel extends Model
];
}
// 상세정보
public function getDetail($rcpt_no, $hscp_no)
{
$sql = "SELECT
a.rcpt_no, a.hscp_no, a.part_no, a.addr, a.addr2, a.rcpt_hscp_nm, a.move_ym, a.households_cnt, a.dong_cnt, a.pyeong_cnt, a.apt_cate_nm, a.region_cd, a.rcpt_x, a.rcpt_y
,a.vdo_up_tm, DATE_FORMAT(a.vdo_up_tm, '%Y-%m-%d') as rdate_dt_vdo ,DATE_FORMAT(a.vdo_up_tm, '%H:%i:%s') as rdate_tm_vdo
,a.check_tm, DATE_FORMAT(a.check_tm, '%Y-%m-%d') as rdate_dt_chk ,DATE_FORMAT(a.check_tm, '%H:%i:%s') as rdate_tm_chk
,a.memo, a.note, a.video_target, a.vdo_up_ynx, a.not_vdo_reson, a.apt_step, a.check_yn, a.resend_yn, a.write_complete_yn, a.all_no_pho
,a.write_complete_tm, DATE_FORMAT(a.write_complete_tm, '%Y-%m-%d') as rdate_dt_cmpl ,DATE_FORMAT(a.write_complete_tm, '%H:%i:%s') as rdate_tm_cmpl
,a.charger, a.dept_sq ,(SELECT pdept_sq FROM departments WHERE dept_sq = a.dept_sq) bonbu
,a.send_end_tm, a.supply_no_tm
,d.pho_cate2, d.pho_explain, d.pho_up_nu
,gp.filenm_up, gp.file_path, gp.insert_tm
FROM
apt_ground a
LEFT JOIN apt_category d ON a.rcpt_no = d.rcpt_no
LEFT JOIN apt_ground_photo gp ON gp.pho_no = (SELECT p.pho_no
FROM apt_ground_photo p
WHERE p.rcpt_no = a.rcpt_no
ORDER BY p.pho_no DESC
LIMIT 1)
WHERE a.rcpt_no = {$rcpt_no} AND a.hscp_no = {$hscp_no} ";
$query = $this->db->query($sql, [$rcpt_no]);
return $query->getRowArray();
}
// 평면도 정보 저장
public function saveImg($data)
@@ -648,4 +677,5 @@ class GroundModel extends Model
'success' => true,
];
}
}

View File

@@ -0,0 +1,128 @@
<?= $this->extend('layouts/main') ?>
<?= $this->section('content') ?>
<style>
.tbl_basic2 th {
padding: 0 10px;
height: 27px;
border: solid 1px #d8d9de;
background-color: #eff0f4;
letter-spacing: -1px;
font-weight: normal;
color: #5a5f69;
text-align: left;
}
.blockUI {
z-index: 1500 !important;
}
.ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 180px;
}
.card-header {
display: flex !important;
align-items: center;
}
.card-header-tab {
justify-content: flex-start !important;
}
.table-scroll {
max-height: 300px;
overflow-y: scroll;
}
.swal2-cancel {
background-color: #ff0000 !important;
color: #fff !important;
}
.dropzone {
min-height: 260px;
background-color: #fafbfc;
}
.dropzone:hover {
background-color: #f4f6f8;
}
#myDropzone {
position: relative;
padding-top: 110px;
/* 메시지 영역 높이만큼 */
}
#uploadModal .modal-dialog {
max-width: 1140px;
/* modal-xl */
}
#uploadModal .modal-content {
height: 450px;
max-height: 450px;
}
</style>
<div class="col-md-12 col-xl-12">
<div class="col-lg-12">
<div class="main-card mb-3 card">
<div class="card-body">
<h5 class="card-title">단지 정보</h5>
<table class="table table-bordered table-sm tbl_basic2 apt-info-table">
<colgroup>
<col width="100" />
<col width="300" />
<col width="100" />
<col width="300" />
</colgroup>
<tr>
<th>단지코드</th>
<td><?= esc($apt['hscp_no'] ?? '') ?></td>
<th>주소</th>
<td><?= esc($apt['addr'] ?? '') ?></td>
</tr>
<tr>
<th>단지명</th>
<td><?= esc($apt['rcpt_hscp_nm'] ?? '') ?></td>
<th>상세주소</th>
<td><?= esc($apt['addr2'] ?? '') ?></td>
</tr>
<tr>
<th>입주년월</th>
<td></td>
<th>총세대수</th>
<td></td>
</tr>
<tr>
<th>총동수</th>
<td></td>
<th>메모</th>
<td>
<div class="row g-2 align-items-center">
<div class="col-md-9">
<input class="form-control" type="text" id="memo"
value="<?= esc($apt['memo'] ?? '') ?>" />
</div>
<div class="col-md-3 text-end">
<button type="button" class="btn btn-outline-focus"
onclick="saveMemo('<?= esc($apt['rcpt_no'] ?? '') ?>')">저장</button>
</div>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>

View File

@@ -673,8 +673,9 @@
const rowData = table.row(this).data();
if (!rowData) return;
// const id = rowData.rcpt_no;
// location.href = "<?= site_url('article/apt/detail') ?>/" + id;
const rcpt_no = rowData.rcpt_no;
const hscp_no = rowData.hscp_no;
location.href = "<?= site_url('article/apt/ground/detail') ?>/" + rcpt_no + "/" + hscp_no;
});
$('#btnSearch').on('click', function () {