화면 수정

This commit is contained in:
2026-02-20 20:47:35 +09:00
parent d91738c667
commit b237c4b934
9 changed files with 890 additions and 758 deletions

View File

@@ -144,7 +144,7 @@ class M701Model extends Model
// 매물번호 // 매물번호
if (!empty($data['atcl_no'])) { if (!empty($data['atcl_no'])) {
$sql .= "AND a.atcl = '{$data['atcl_no']}' "; $sql .= "AND a.atcl_no = '{$data['atcl_no']}' ";
} else { } else {
// 현재상태 // 현재상태
if (!empty($data['stat_cd'])) { if (!empty($data['stat_cd'])) {
@@ -364,7 +364,7 @@ class M701Model extends Model
// 매물번호 // 매물번호
if (!empty($data['atcl_no'])) { if (!empty($data['atcl_no'])) {
$sql .= "AND a.atcl = '{$data['atcl_no']}' "; $sql .= "AND a.atcl_no = '{$data['atcl_no']}' ";
} else { } else {
// 현재상태 // 현재상태
if (!empty($data['stat_cd'])) { if (!empty($data['stat_cd'])) {
@@ -553,7 +553,7 @@ class M701Model extends Model
// 매물번호 // 매물번호
if (!empty($data['atcl_no'])) { if (!empty($data['atcl_no'])) {
$sql .= "AND a.atcl = '{$data['atcl_no']}' "; $sql .= "AND a.atcl_no = '{$data['atcl_no']}' ";
} else { } else {
// 현재상태 // 현재상태
if (!empty($data['stat_cd'])) { if (!empty($data['stat_cd'])) {

View File

@@ -56,3 +56,4 @@
<link href="/architectui/assets/styles/vendors.98288b227c064e6a107f.css" rel="stylesheet"> <link href="/architectui/assets/styles/vendors.98288b227c064e6a107f.css" rel="stylesheet">
<link href="/architectui/assets/styles/main.98288b227c064e6a107f.css" rel="stylesheet"> <link href="/architectui/assets/styles/main.98288b227c064e6a107f.css" rel="stylesheet">
<link href="/architectui/assets/styles/custom.css" rel="stylesheet"> <link href="/architectui/assets/styles/custom.css" rel="stylesheet">
<link href="/common/css/custom.css" rel="stylesheet">

View File

@@ -3,6 +3,7 @@
<head> <head>
<?= $this->include('layouts/header') ?> <?= $this->include('layouts/header') ?>
<?= $this->renderSection('page_styles') ?>
</head> </head>
<body> <body>
@@ -148,6 +149,8 @@
}); });
</script> </script>
<?= $this->renderSection('page_scripts') ?>
</body> </body>
</html> </html>

View File

@@ -32,6 +32,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<?= $this->extend('layouts/main') ?> <?= $this->extend('layouts/main') ?>
<?= $this->section('content') ?> <?= $this->section('content') ?>
<link rel="stylesheet" href="/common/css/custom.css">
<style> <style>
table th { table th {
vertical-align: middle; vertical-align: middle;
@@ -62,15 +63,6 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
max-width: 180px; max-width: 180px;
} }
.card-header {
display: flex !important;
align-items: center;
}
.card-header-tab {
justify-content: flex-start !important;
}
.table-scroll { .table-scroll {
max-height: 300px; max-height: 300px;
overflow-y: scroll; overflow-y: scroll;
@@ -114,23 +106,15 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<div class="col-lg-12"> <div class="col-lg-12">
<div class="main-card mb-2 card"> <div class="main-card mb-2 card">
<div class="card-header bg-white border-bottom shadow-sm"> <div class="card-header bg-white border-bottom shadow-sm">
<div class="d-flex flex-wrap align-items-center gap-3 w-100 card-header-tab"> <div class="d-flex flex-wrap align-items-center w-100 justify-content-between card-header-tab">
<div>
<h4 class="mb-0 fw-bold text-dark">확인매물 상세 내용</h4> <h4 class="mb-0 fw-bold text-dark">확인매물 상세 내용</h4>
</div> <div class="d-flex align-items-center flex-nowrap gap-4 ms-auto" style="white-space:nowrap;">
<div class="d-flex flex-wrap align-items-center gap-3 ms-auto">
<div style="white-space: nowrap;">
<span class="text-muted me-2">매물ID:</span> <span class="text-muted me-2">매물ID:</span>
<span class="fw-bold text-primary fs-6"><?= $data['atcl_no'] ?></span> <span class="fw-bold text-primary fs-6 me-4"> <?= $data['atcl_no'] ?> </span>
</div>
<div style="white-space: nowrap;">
<span class="text-muted me-2">CP ID:</span> <span class="text-muted me-2">CP ID:</span>
<span class="fw-bold text-primary fs-6"><?= $data['cpid'] ?></span> <span class="fw-bold text-primary fs-6 me-4"> <?= $data['cpid'] ?> </span>
</div>
<div style="white-space: nowrap;">
<span class="text-muted me-2">현재 상태:</span> <span class="text-muted me-2">현재 상태:</span>
<span class="fw-bold text-danger fs-6"><?= $data['pre_stat'] ?></span> <span class="fw-bold text-danger fs-6"> <?= $data['pre_stat'] ?> </span>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -160,10 +144,10 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-sm tbl_basic2 align-middle mb-0 apt-info-table"> <table class="table table-bordered table-sm tbl_basic2 align-middle mb-0 apt-info-table">
<colgroup> <colgroup>
<col style="width:120px"> <col width="15%" />
<col style="width:320px"> <col width="35%" />
<col style="width:120px"> <col width="15%" />
<col style="width:320px"> <col width="35%" />
</colgroup> </colgroup>
<tbody> <tbody>
@@ -296,7 +280,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<th>가격</th> <th>가격</th>
<td> <td>
<!-- 기본 가격 --> <!-- 기본 가격 -->
<div class="align-items-center gap-2 mb-2" id="div_trade_type_price" <div class="align-items-center gap-2 mb-0" id="div_trade_type_price"
style="display: none;"> style="display: none;">
<div class="input-group input-group-sm" style="max-width: 220px;"> <div class="input-group input-group-sm" style="max-width: 220px;">
<input type="text" class="form-control text-end" name="atcl_amt1" <input type="text" class="form-control text-end" name="atcl_amt1"
@@ -315,7 +299,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<?php endif; ?> <?php endif; ?>
</div> </div>
<div class="d-flex align-items-center gap-1 mb-2" <div class="d-flex align-items-center gap-1 mb-0"
id="div_trade_type_price_monthly" style="display: none;"> id="div_trade_type_price_monthly" style="display: none;">
<div class="input-group input-group-sm" style="max-width: 220px;"> <div class="input-group input-group-sm" style="max-width: 220px;">
<input type="text" class="form-control text-end" name="atcl_amt2" <input type="text" class="form-control text-end" name="atcl_amt2"
@@ -641,14 +625,19 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<?php if (!empty($data['confirm_doc_img_url'])): ?> <?php if (!empty($data['confirm_doc_img_url'])): ?>
<?php if ($data['confirm_doc_img_url_save_yn'] == 'Y'): <?php if ($data['confirm_doc_img_url_save_yn'] == 'Y'):
if (!empty($record)) {
$img_path = $record['file_path'] . $record['file_name']; $img_path = $record['file_path'] . $record['file_name'];
$ext = $record['file_ext']; $ext = $record['file_ext'];
} else {
$img_path = '';
$ext = '';
}
if (strtolower($ext) == '.pdf'): if (strtolower($ext) == '.pdf'):
?> ?>
<iframe src="<?= $server_addr ?><?= $img_path ?>" frameborder="0" loading="lazy" <iframe src="<?= $server_addr ?><?= $img_path ?>" frameborder="0" loading="lazy"
style="padding: 10px 0;width:100%; height:800px;"></iframe><br> style="padding: 10px 0;width:100%; height:800px;"></iframe><br>
<?php elseif (!in_array($ext, ['.zip', '.ZIP', '.pdf', '.PDF'])): ?> <?php elseif (!in_array($ext, ['.zip', '.ZIP', '.pdf', '.PDF'])): ?>
<?php if (!empty($arrRecord) && is_array($arrRecord)): ?>
<?php foreach ($arrRecord as $row): <?php foreach ($arrRecord as $row):
$arr_img_path = $row['file_path'] . $row['file_name']; $arr_img_path = $row['file_path'] . $row['file_name'];
?> ?>
@@ -660,6 +649,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</a> </a>
<?php endforeach; ?> <?php endforeach; ?>
<?php endif; ?> <?php endif; ?>
<?php endif; ?>
<?php else: <?php else:
$img_path = $data['confirm_doc_img_url']; $img_path = $data['confirm_doc_img_url'];
@@ -698,7 +688,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<!-- 우측 : 정보 --> <!-- 우측 : 정보 -->
<td valign="top" class="pt-2"> <td valign="top" class="pt-2">
<table class="table table-sm w-100 tbl_basic2 table-bordered"> <table class="table table-sm tbl_basic2 table-bordered">
<colgroup> <colgroup>
<col width="30%"> <col width="30%">
<col> <col>
@@ -730,7 +720,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<tr> <tr>
<th>홍보확인서<br>미확인여부상세</th> <th>홍보확인서<br>미확인여부상세</th>
<td> <td>
<table class="table w-100 tbl_basic2 table-bordered"> <table class="table tbl_basic2 table-bordered">
<tr> <tr>
<?php <?php
$checks = explode('|', $data['comment']); $checks = explode('|', $data['comment']);
@@ -860,7 +850,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="card-footer d-flex justify-content-end gap-1"> <div class="card-footer d-flex justify-content-end">
<button type="button" class="btn btn-success btn-sm" onclick="saveDocu();"> <button type="button" class="btn btn-success btn-sm" onclick="saveDocu();">
저장 저장
</button> </button>

View File

@@ -1,128 +1,17 @@
<?= $this->extend('layouts/main') ?> <?= $this->extend('layouts/main') ?>
<?= $this->section('content') ?> <?= $this->section('content') ?>
<style>
th {
font-size: 11px;
text-align: center;
}
td {
text-align: center;
}
#resultList tbody tr {
cursor: pointer;
font-size: 12px;
}
.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;
}
/* 검색 폼 row 구분 */
#frm_srch_info .row.g-3 {
padding: 12px 0;
border-bottom: 1px solid #e9ecef;
}
#frm_srch_info .row.g-3:last-of-type {
border-bottom: none;
padding-bottom: 0;
}
#frm_srch_info .row.g-3:first-of-type {
padding-top: 0;
}
/* 검색창 공간 최소화 */
#frm_srch_info .card-body {
padding: 15px !important;
}
#frm_srch_info .row.g-3 {
padding: 8px 0;
row-gap: 8px !important;
}
#frm_srch_info .form-label {
margin-bottom: 4px !important;
font-size: 0.85rem;
font-weight: 600;
color: #212529;
}
#frm_srch_info .form-control,
#frm_srch_info .form-select {
padding: 4px 8px !important;
font-size: 0.85rem;
border-color: #bbb !important;
}
#frm_srch_info .form-control:focus,
#frm_srch_info .form-select:focus {
border-color: #888 !important;
}
#frm_srch_info .input-group-text {
padding: 4px 8px !important;
font-size: 0.85rem;
}
#frm_srch_info .alert {
padding: 8px 12px !important;
margin-bottom: 12px !important;
}
#frm_srch_info .btn {
padding: 4px 12px !important;
font-size: 0.85rem;
}
/* 툴팁 스타일 */
.info-tooltip {
display: inline-block;
margin-left: 5px;
color: #17a2b8;
cursor: help;
font-size: 0.9rem;
}
.info-tooltip:hover {
color: #138496;
}
</style>
<h1>확인매물 현황</h1>
<div class="col-md-12 col-xl-12"> <div class="col-md-12 col-xl-12">
<div class="main-card mb-3 card"> <div class="main-card mb-3 card">
<div class="card-header bg-white border-bottom shadow-sm">
<div class="d-flex flex-wrap align-items-center gap-3 card-header-tab">
<div>
<h4 class="mb-0 fw-bold text-dark">확인매물 현황</h4>
</div>
</div>
</div>
<div class="card-body"> <div class="card-body">
<form id="frm_srch_info" method="get" onsubmit="return false;"> <form id="frm_srch_info" method="get" onsubmit="return false;">
<input type="hidden" name="m" id="m" value="M801" /> <input type="hidden" name="m" id="m" value="M801" />
@@ -316,23 +205,8 @@
</form> </form>
</div> </div>
</div> </div>
</div>
<div class="col-md-12 col-xl-12">
<div class="main-card mb-3 card"> <div class="main-card mb-3 card">
<div class="card-header d-flex align-items-center">
<div class="d-flex align-items-center flex-wrap" style="gap: 8px; flex: 1">
</div>
<div class="ml-auto">
<button class="btn btn-sm btn-outline-success" id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>
엑셀다운로드
</button>
</div>
</div>
<div class="card-body"> <div class="card-body">
<table id="resultList" class="table table-hover table-striped table-bordered"> <table id="resultList" class="table table-hover table-striped table-bordered">
<thead> <thead>
@@ -360,10 +234,16 @@
</div> </div>
</div> </div>
<?= $this->endSection() ?>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.13.6/css/jquery.dataTables.min.css" /> <?= $this->section('page_styles') ?>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/2.0.7/css/dataTables.dataTables.min.css" />
<link href="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone.css" rel="stylesheet" type="text/css" /> <link href="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<?= $this->endSection() ?>
<?= $this->section('page_scripts') ?>
<script src="https://cdn.datatables.net/2.0.7/js/dataTables.min.js"></script>
<script defer src="/architectui/assets/js/datatable.kor.js"></script> <script defer src="/architectui/assets/js/datatable.kor.js"></script>
<script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=dtounkwjc5"></script> <script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=dtounkwjc5"></script>
<script type="text/javascript"> <script type="text/javascript">
@@ -375,7 +255,30 @@
var table; var table;
$(function () { // 검색 조건 저장
function saveSearchForm() {
const data = $("#frm_srch_info").serializeArray();
localStorage.setItem("m701_search", JSON.stringify(data));
}
// 검색 조건 복원
function restoreSearchForm() {
const saved = localStorage.getItem("m701_search");
if (!saved) return;
const data = JSON.parse(saved);
data.forEach(function(item) {
$("[name='" + item.name + "']").val(item.value);
});
// 주요 select에 대해 change 이벤트 트리거
$("#srcSido, #srcGugun, #bonbu, #team, #vrfcreq_way").trigger("change");
}
$(function () {
// referrer에 '/m701'가 없으면 검색 조건 초기화
if (!document.referrer.includes('/m701')) {
localStorage.removeItem("m701_search");
}
restoreSearchForm();
// Bootstrap Tooltip 초기화 (빠른 표시) // Bootstrap Tooltip 초기화 (빠른 표시)
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
@@ -557,6 +460,24 @@
initReceiptDate(); initReceiptDate();
table = $('#resultList').DataTable({ table = $('#resultList').DataTable({
layout: {
topStart: 'pageLength', // 좌측 상단(페이지당 개수) 제거 (필요시)
topEnd: function () {
// 직접 작성하신 버튼 HTML 구조를 생성
let btn = document.createElement('button');
btn.id = 'excel-download';
btn.className = 'btn btn-sm btn-outline-success';
btn.innerHTML = '<i class="fa fa-fw fa-file-excel-o" aria-hidden="true"></i> 엑셀다운로드';
// 클릭 이벤트 연결
btn.addEventListener('click', function() {
console.log('엑셀 다운로드 실행');
// 여기에 다운로드 로직 추가
});
return btn;
}
},
language: lang_kor, language: lang_kor,
serverSide: true, serverSide: true,
processing: true, processing: true,
@@ -604,15 +525,17 @@
{ 'targets': '_all', "defaultContent": "" }, { 'targets': '_all', "defaultContent": "" },
], ],
columns: [ columns: [
{ data: 'atcl_no' }, { data: 'atcl_no' , render: function (data, type, row) {
{ data: 'pre_stat' }, return `<a href='<?php echo site_url('m701/m701a/detail') ?>/${row.vr_sq}' class='text-decoration-none'>${data}</a>`;
{ data: 'insert_tm' }, }, className: 'tw-90' },
{ data: 'vrfc_type' }, { data: 'pre_stat', className: 'tw-120' },
{ data: null, render: fn_region_render }, { data: 'insert_tm', className: 'tw-130' },
{ data: null, render: fn_addr_render }, { data: 'vrfc_type', className: 'tw-100' },
{ data: 'cpid' }, { data: null, render: fn_region_render , className: 'tw-200' },
{ data: 'realtor_nm' }, { data: null, render: fn_addr_render , className: 'tw-180' },
{ data: 'usr_nm', width: "80px" }, { data: 'cpid', className:'tw-80' },
{ data: 'realtor_nm' , className: 'tw-150' },
{ data: 'usr_nm', className: 'tw-80' },
{ data: null, render: fn_tm_render }, { data: null, render: fn_tm_render },
{ data: 'reg_charger' }, { data: 'reg_charger' },
{ data: 'rgbk_check_tm' }, { data: 'rgbk_check_tm' },
@@ -623,20 +546,28 @@
paging: true, paging: true,
searching: false, searching: false,
ordering: false, ordering: false,
autoWidth: false,
}); });
$('#resultList tbody').on('click', 'tr', function (e) { $('#resultList tbody').on('click', 'tr', function (e) {
if ($(e.target).closest('td.dt-no-rowclick').length) return; if ($(e.target).closest('td.dt-no-rowclick').length) return;
const rowData = table.row(this).data(); const rowData = table.row(this).data();
if (!rowData) return; if (!rowData) return;
const vr_sq = rowData.vr_sq; const vr_sq = rowData.vr_sq;
window.open("<?= site_url('m701/m701a/detail') ?>/" + vr_sq, '_blank'); const url = "<?= site_url('m701/m701a/detail') ?>/" + vr_sq;
// Ctrl+Click 또는 마우스 중간(휠) 클릭(e.button === 1) 시 새탭
if (e.ctrlKey || e.button === 1) {
window.open(url, '_blank');
return;
}
// 일반 클릭은 현재 탭
window.location.href = url;
}); });
$('#btnSearch').on('click', function () { $('#btnSearch').on('click', function () {
table.ajax.reload() saveSearchForm();
table.ajax.reload();
}); });
// 엑셀 다운로드 click // 엑셀 다운로드 click

View File

@@ -54,6 +54,10 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
text-align: left; text-align: left;
} }
.tbl_basic2 td {
text-align: left;
}
.blockUI { .blockUI {
z-index: 1500 !important; z-index: 1500 !important;
} }
@@ -65,18 +69,16 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
max-width: 180px; max-width: 180px;
} }
.card-header {
display: flex !important;
align-items: center;
}
.card-header-tab {
justify-content: flex-start !important;
}
.table-scroll { .table-scroll {
max-height: 300px; max-height: 300px;
overflow-y: scroll; overflow-y: scroll;
min-height: 100px;
}
/* 정보변경 이력 테이블 깜박임 방지 */
.apt-info-table {
table-layout: fixed;
width: 100%;
} }
.swal2-cancel { .swal2-cancel {
@@ -104,14 +106,6 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
} }
</style> </style>
<div class="app-page-title">
<div class="page-title-wrapper">
<div class="page-title-heading">
<div>배정매물 상세 내용</div>
</div>
</div>
</div>
<form name="rcptFrm" id="rcptFrm" method="post" action="" enctype="multipart/form-data" autocomplete="off" <form name="rcptFrm" id="rcptFrm" method="post" action="" enctype="multipart/form-data" autocomplete="off"
onsubmit="return false;"> onsubmit="return false;">
<input type="hidden" name="address_code" id="address_code" value="<?= $data['address_code'] ?>" /> <input type="hidden" name="address_code" id="address_code" value="<?= $data['address_code'] ?>" />
@@ -124,31 +118,19 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<div class="col-md-12 col-xl-12"> <div class="col-md-12 col-xl-12">
<div class="col-lg-12"> <div class="col-lg-12">
<div class="main-card mb-3 card"> <div class="main-card mb-2 card">
<div class="card-header" style="width:100%; max-width:100%; min-width:600px; padding:0; border:0;"> <div class="card-header bg-white border-bottom shadow-sm">
<p class="left"> <div class="d-flex flex-wrap align-items-center w-100 justify-content-between card-header-tab">
</p> <h4 class="mb-0 fw-bold text-dark">배정매물 상세 내용</h4>
<table style="width:100%; min-width:600px; padding:0; border:0;" cellpadding="0" cellspacing="0" <div class="d-flex align-items-center flex-nowrap gap-4 ms-auto" style="white-space:nowrap;">
border="0" width="100%"> <span class="text-muted me-2">매물ID:</span>
<tbody> <span class="fw-bold text-primary fs-6 me-4"> <?= $data['atcl_no'] ?> </span>
<tr> <span class="text-muted me-2">CP ID:</span>
<td style="width: 50%;padding-left: 20px"><span class="tit">매물ID :</span> <span <span class="fw-bold text-primary fs-6 me-4"> <?= $data['cpid'] ?> </span>
class="num"><?= $data['atcl_no'] ?></span> <span class="text-muted me-2">현재 상태:</span>
</td> <span class="fw-bold text-danger fs-6"> <?= $data['pre_stat'] ?> </span>
<td style="width: 20%;"><span class="tit">CP ID :</span> <span </div>
class="num"><?= $data['cpid'] ?></span></td> </div>
<td style="width: 30%; text-align: right;padding-right: 20px"><span class="tit">현재 상태
:</span> <span class="num"><?= $data['pre_stat'] ?></span></td>
</tr>
<tr>
<td height="15"></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p></p>
</div> </div>
<div class="card-body"> <div class="card-body">
<h5 class="card-title">공인 중개사 정보</h5> <h5 class="card-title">공인 중개사 정보</h5>
@@ -170,16 +152,16 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</div> </div>
</div> </div>
<div class="main-card mb-3 card"> <div class="main-card mb-2 card">
<div class="card-body"> <div class="card-body">
<h5 class="card-title">매물 정보</h5> <h5 class="card-title">매물 정보</h5>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-sm tbl_basic2 align-middle mb-0 apt-info-table"> <table class="table table-bordered table-sm tbl_basic2 align-middle mb-0 apt-info-table">
<colgroup> <colgroup>
<col style="width:120px"> <col width="15%" />
<col style="width:320px"> <col width="35%" />
<col style="width:120px"> <col width="15%" />
<col style="width:320px"> <col width="35%" />
</colgroup> </colgroup>
<tbody> <tbody>
@@ -523,7 +505,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</div> </div>
<div class="main-card mb-3 card" id="docu_chk" style="display: none;"> <div class="main-card mb-2 card" id="docu_chk" style="display: none;">
<div class="card-body"> <div class="card-body">
<h5 class="card-title">서류확인 정보</h5> <h5 class="card-title">서류확인 정보</h5>
@@ -766,7 +748,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</div> </div>
</div> </div>
<div class="main-card mb-3 card" id="call_chk" style="display: none;"> <div class="main-card mb-2 card" id="call_chk" style="display: none;">
<div class="card-body"> <div class="card-body">
<h5 class="card-title">전화확인 정보</h5> <h5 class="card-title">전화확인 정보</h5>
@@ -940,7 +922,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
<tr> <tr>
<th>메모</th> <th>메모</th>
<td> <td>
<div class="d-flex flex-column gap-1" style=""> <div class="d-flex flex-column gap-1">
<textarea class="form-control" name="memo_tel" id="memo_tel" rows="2" <textarea class="form-control" name="memo_tel" id="memo_tel" rows="2"
style="resize: none;"><?= $memo['memo'] ?></textarea> style="resize: none;"><?= $memo['memo'] ?></textarea>
@@ -976,7 +958,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</div> </div>
</div> </div>
<div class="main-card mb-3 card" id="regibox"> <div class="main-card mb-2 card" id="regibox">
<div class="card-body"> <div class="card-body">
<h5 class="card-title">등기부등본확인 정보</h5> <h5 class="card-title">등기부등본확인 정보</h5>
@@ -1188,7 +1170,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</div> </div>
<div class="main-card mb-3 card"> <div class="main-card mb-2 card">
<div class="card-body "> <div class="card-body ">
<h5 class="card-title">정보변경 이력</h5> <h5 class="card-title">정보변경 이력</h5>
<div class="table-scroll"> <div class="table-scroll">
@@ -1216,7 +1198,7 @@ if (!empty($data['cert_register']) && $data['cert_register_save_yn'] != 'Y') { /
</div> </div>
</div> </div>
<div class="main-card mb-3 card"> <div class="main-card mb-2 card">
<button type="button" class="btn btn-light btn-sm"> <button type="button" class="btn btn-light btn-sm">
목록 목록
</button> </button>

View File

@@ -1,76 +1,33 @@
<?= $this->extend('layouts/main') ?> <?= $this->extend('layouts/main') ?>
<?= $this->section('content') ?> <?= $this->section('content') ?>
<style>
th {
font-size: 11px;
text-align: center;
}
td {
text-align: center;
}
#resultList tbody tr {
cursor: pointer;
font-size: 12px;
}
.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;
}
</style>
<h1>확인매물 현황</h1>
<div class="col-md-12 col-xl-12"> <div class="col-md-12 col-xl-12">
<div class="main-card mb-3 card"> <div class="main-card mb-3 card">
<div class="card-header bg-white border-bottom shadow-sm">
<div class="d-flex flex-wrap align-items-center gap-3 card-header-tab">
<div>
<h4 class="mb-0 fw-bold text-dark">배정매물 현황</h4>
</div>
</div>
</div>
<div class="card-body"> <div class="card-body">
<form id="frm_srch_info" method="get" onsubmit="return false;"> <form id="frm_srch_info" method="get" onsubmit="return false;">
<input type="hidden" name="m" id="m" value="M801" /> <input type="hidden" name="m" id="m" value="M801" />
<input type="hidden" name="todo" id="todo" value="inq" /> <input type="hidden" name="todo" id="todo" value="inq" />
<input type="hidden" name="usr_id" value="" /> <input type="hidden" name="usr_id" value="" />
<!-- 안내 -->
<div class="alert alert-warning py-2 mb-3">
<small class="mb-0">
매물번호를 입력하면 <b>다른 조건은 무시</b>됩니다.
</small>
</div>
<!-- 검색 폼 --> <!-- 검색 폼 -->
<div class="row g-3"> <div class="row g-3">
<!-- 매물번호 --> <!-- 매물번호 -->
<div class="col-md-1"> <div class="col-md-1">
<label class="form-label mb-1">매물번호</label> <label class="form-label mb-1">
매물번호
<i class="pe-7s-info info-tooltip" data-bs-toggle="tooltip" data-bs-placement="top"
title="매물번호를 입력하면 다른 조건은 무시됩니다"></i>
</label>
<input type="text" name="atcl_no" class="form-control form-control-sm" placeholder="매물번호" maxlength="10" <input type="text" name="atcl_no" class="form-control form-control-sm" placeholder="매물번호" maxlength="10"
data-bs-toggle="tooltip" data-bs-placement="top" title="매물번호를 입력하면 다른 조건은 무시됩니다"
onkeypress="atcl_no_enter(event)"> onkeypress="atcl_no_enter(event)">
</div> </div>
@@ -240,50 +197,6 @@
<div class="col-md-12 col-xl-12"> <div class="col-md-12 col-xl-12">
<div class="main-card mb-3 card"> <div class="main-card mb-3 card">
<div class="card-header d-flex align-items-center">
<div class="d-flex align-items-center flex-wrap" style="gap:8px; flex:1;">
<select class="form-control form-control-sm" id="damdangT" style="width:150px;">
<option value="1">전화/서류 담당자</option>
<option value="2">등기부등본 담당자</option>
</select>
<select class="form-control form-control-sm" id="bonbu2" style="width:140px;">
<option value="">-본부-</option>
<?php foreach ($bonbu as $d): ?>
<option value="<?= $d['dept_sq'] ?>"><?= $d['dept_nm'] ?></option>
<?php endforeach; ?>
</select>
<select class="form-control form-control-sm" id="team2" style="width:160px;">
<option value="">-팀-</option>
</select>
<select class="form-control form-control-sm" id="damdang2" style="width:160px;">
<option value="">-담당자-</option>
</select>
<button type="button" class="btn btn-sm btn-outline-light" id="btn_part_change">
배정변경
</button>
<button type="button" class="btn btn-sm btn-outline-light" id="btn_part_omit">
서류누락
</button>
</div>
<div class="ml-auto">
<button class="btn btn-sm btn-outline-light" id="excel-download">
등기부등본 전송
</button>
<button class="btn btn-sm btn-outline-success" id="excel-download">
<i class="fa fa-fw" aria-hidden="true" title="file-excel-o"></i>
엑셀다운로드
</button>
</div>
</div>
<div class="card-body"> <div class="card-body">
<table id="resultList" class="table table-hover table-striped table-bordered"> <table id="resultList" class="table table-hover table-striped table-bordered">
<thead> <thead>
@@ -313,10 +226,16 @@
</div> </div>
</div> </div>
<?= $this->endSection() ?>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.13.6/css/jquery.dataTables.min.css" /> <?= $this->section('page_styles') ?>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/2.0.7/css/dataTables.dataTables.min.css" />
<link href="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone.css" rel="stylesheet" type="text/css" /> <link href="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<?= $this->endSection() ?>
<?= $this->section('page_scripts') ?>
<script src="https://cdn.datatables.net/2.0.7/js/dataTables.min.js"></script>
<script defer src="/architectui/assets/js/datatable.kor.js"></script> <script defer src="/architectui/assets/js/datatable.kor.js"></script>
<script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=dtounkwjc5"></script> <script type="text/javascript" src="https://oapi.map.naver.com/openapi/v3/maps.js?ncpKeyId=dtounkwjc5"></script>
<script type="text/javascript"> <script type="text/javascript">
@@ -328,7 +247,30 @@
var table; var table;
// 검색 조건 저장
function saveSearchForm() {
const data = $("#frm_srch_info").serializeArray();
localStorage.setItem("m702_search", JSON.stringify(data));
}
// 검색 조건 복원
function restoreSearchForm() {
const saved = localStorage.getItem("m702_search");
if (!saved) return;
const data = JSON.parse(saved);
data.forEach(function(item) {
$("[name='" + item.name + "']").val(item.value);
});
// 주요 select에 대해 change 이벤트 트리거
$("#srcSido, #srcGugun, #bonbu, #team, #vrfcreq_way").trigger("change");
}
$(function () { $(function () {
// referrer에 '/m702'가 없으면 검색 조건 초기화
if (!document.referrer.includes('/m702')) {
localStorage.removeItem("m702_search");
}
restoreSearchForm();
$("#bonbu").on("change", function (e) { $("#bonbu").on("change", function (e) {
@@ -419,7 +361,7 @@
}); });
$("#bonbu, #team, #bonbu2, #team2").on("change", function (e) { $(document).on("change", "#bonbu, #team, #bonbu2, #team2", function (e) {
const targetId = this.id; const targetId = this.id;
@@ -505,6 +447,88 @@
initReceiptDate(); initReceiptDate();
table = $('#resultList').DataTable({ table = $('#resultList').DataTable({
layout: {
topStart: function() {
const container = document.createElement('div');
container.className = 'd-flex align-items-center flex-wrap';
container.style.cssText = 'gap:8px; flex:1;';
// 담당자 유형
const damdangT = document.createElement('select');
damdangT.id = 'damdangT';
damdangT.className = 'form-control form-control-sm';
damdangT.style.width = '150px';
damdangT.innerHTML = `
<option value="1">전화/서류 담당자</option>
<option value="2">등기부등본 담당자</option>
`;
// 본부
const bonbu2 = document.createElement('select');
bonbu2.id = 'bonbu2';
bonbu2.className = 'form-control form-control-sm';
bonbu2.style.width = '140px';
bonbu2.innerHTML = '<option value="">-본부-</option>';
// bonbuArr 배열을 사용하여 옵션 추가
bonbuArr.forEach(function(d) {
const opt = document.createElement('option');
opt.value = d.dept_sq;
opt.textContent = d.dept_nm;
bonbu2.appendChild(opt);
});
// 팀
const team2 = document.createElement('select');
team2.id = 'team2';
team2.className = 'form-control form-control-sm';
team2.style.width = '160px';
team2.innerHTML = '<option value="">-팀-</option>';
// 담당자
const damdang2 = document.createElement('select');
damdang2.id = 'damdang2';
damdang2.className = 'form-control form-control-sm';
damdang2.style.width = '160px';
damdang2.innerHTML = '<option value="">-담당자-</option>';
// 배정변경 버튼
const btnChange = document.createElement('button');
btnChange.type = 'button';
btnChange.id = 'btn_part_change';
btnChange.className = 'btn btn-sm btn-outline-light';
btnChange.textContent = '배정변경';
// 서류누락 버튼
const btnOmit = document.createElement('button');
btnOmit.type = 'button';
btnOmit.id = 'btn_part_omit';
btnOmit.className = 'btn btn-sm btn-outline-light';
btnOmit.textContent = '서류누락';
container.append(damdangT, bonbu2, team2, damdang2, btnChange, btnOmit);
return container;
},
topEnd: function () {
const container = document.createElement('div');
container.className = 'd-flex';
container.style.gap = '8px';
container.style.justifyContent = 'flex-end';
// 등기부등본 전송 버튼
const btnSend = document.createElement('button');
btnSend.className = 'btn btn-sm btn-outline-light';
btnSend.textContent = '등기부등본 전송';
// 엑셀 다운로드 버튼
const btnExcel = document.createElement('button');
btnExcel.id = 'excel-download';
btnExcel.className = 'btn btn-sm btn-outline-success';
btnExcel.innerHTML = '<i class="fa fa-fw fa-file-excel-o" aria-hidden="true"></i> 엑셀다운로드';
container.append(btnSend, btnExcel);
return container;
}
},
language: lang_kor, language: lang_kor,
serverSide: true, serverSide: true,
processing: true, processing: true,
@@ -550,13 +574,15 @@
{ 'targets': '_all', "defaultContent": "" }, { 'targets': '_all', "defaultContent": "" },
], ],
columns: [ columns: [
{ data: null, render: fn_chk_render, width: "50px", className: "dt-no-rowclick" }, { data: null, render: fn_chk_render, className: "dt-no-rowclick tw-50" },
{ data: 'atcl_no' }, { data: 'atcl_no' , function(data, type, row) {
return `<a href='<?php echo site_url('m702/m702a/detail') ?>/${row.vr_sq}' class='text-decoration-none'>${data}</a>`;
}, className:'tw-90' },
{ data: 'pre_stat' }, { data: 'pre_stat' },
{ data: 'insert_tm' }, { data: 'insert_tm' },
{ data: 'vrfc_type' }, { data: 'vrfc_type' },
{ data: null, render: fn_region_render }, { data: null, render: fn_region_render , className: 'tw-200' },
{ data: null, render: fn_addr_render }, { data: null, render: fn_addr_render , className: 'tw-180' },
{ data: 'cpid' }, { data: 'cpid' },
{ data: 'realtor_nm' }, { data: 'realtor_nm' },
{ data: 'usr_nm', width: "80px" }, { data: 'usr_nm', width: "80px" },
@@ -582,6 +608,7 @@
}); });
$('#btnSearch').on('click', function () { $('#btnSearch').on('click', function () {
saveSearchForm();
table.ajax.reload() table.ajax.reload()
}); });

View File

@@ -100,6 +100,33 @@ select option {
padding: 0 0.75rem 0 40px !important; padding: 0 0.75rem 0 40px !important;
} }
.form-control {
font-size: 0.75rem !important;
font-family: inherit !important;
font-weight: 600 !important;
}
#atcl_amt2 {
font-size: 0.75rem !important;
font-family: inherit !important;
font-weight: 600 !important;
}
.input-group-text {
font-size: 0.75rem !important;
font-family: inherit !important;
font-weight: 600 !important;
}
/* Select Box와 Input 높이 통일 */
.form-select,
select.form-control,
select {
padding: 0.375rem 0.75rem !important;
height:26px !important;
line-height: 1.5 !important;
}
/* 모바일 화면 조정 */ /* 모바일 화면 조정 */
@media (max-width: 767.98px) { @media (max-width: 767.98px) {
.app-sidebar { .app-sidebar {
@@ -116,3 +143,18 @@ select option {
padding: 0 0.75rem 0 40px !important; padding: 0 0.75rem 0 40px !important;
} }
} }
.form-check-input[type="checkbox"],
.form-check-input[type="radio"] {
border-color: #888 !important;
background-color: #fff !important;
box-shadow: none !important;
}
.form-check-input[type="checkbox"]:checked,
.form-check-input[type="radio"]:checked {
background-color: #007bff !important;
border-color: #007bff !important;
}

View File

@@ -0,0 +1,156 @@
/* main-card 간격 최소화 */
.main-card.mb-3.card {
margin-bottom: 0.5rem !important;
}
/* DataTables 그리드 thead 하단 라인 */
.dt-layout-cell > table > thead {
border-bottom: 2px solid #dee2e6 !important;
}
.dt-layout-cell > table {
border-top: 2px solid #dee2e6 !important;
}
.dt-layout-cell > table > thead > tr > th{
text-align:center;
}
div.dt-container div.dt-layout-cell {
padding: 0px !important;
}
/* DataTable 컬럼 width 클래스 */
.tw-30 { width: 30px !important; }
.tw-50 { width: 50px !important; }
.tw-70 { width: 70px !important; }
.tw-80 { width: 80px !important; }
.tw-90 { width: 90px !important; }
.tw-100 { width: 100px !important; }
.tw-120 { width: 120px !important; }
.tw-130 { width: 130px !important; }
.tw-140 { width: 140px !important; }
.tw-150 { width: 150px !important; }
.tw-180 { width: 180px !important; }
.tw-200 { width: 200px !important; }
.tw-250 { width: 250px !important; }
/* ========================================
Lists 페이지 공통 스타일
======================================== */
/* 테이블 기본 스타일 */
th {
font-size: 11px;
text-align: center;
}
td {
text-align: center;
}
#resultList tbody tr {
cursor: pointer;
font-size: 12px;
}
.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;
}
/* 검색 폼 row 구분 */
#frm_srch_info .row.g-3 {
padding: 12px 0;
border-bottom: 1px solid #e9ecef;
}
#frm_srch_info .row.g-3:last-of-type {
border-bottom: none;
padding-bottom: 0;
}
#frm_srch_info .row.g-3:first-of-type {
padding-top: 0;
}
/* 검색창 공간 최소화 */
#frm_srch_info .card-body {
padding: 15px !important;
}
#frm_srch_info .row.g-3 {
padding: 8px 0;
row-gap: 8px !important;
}
#frm_srch_info .form-label {
margin-bottom: 4px !important;
font-size: 0.85rem;
font-weight: 600;
color: #212529;
}
#frm_srch_info .form-control,
#frm_srch_info .form-select {
padding: 4px 8px !important;
font-size: 0.85rem;
border-color: #bbb !important;
}
#frm_srch_info .form-control:focus,
#frm_srch_info .form-select:focus {
border-color: #888 !important;
}
#frm_srch_info .input-group-text {
padding: 4px 8px !important;
font-size: 0.85rem;
}
#frm_srch_info .alert {
padding: 8px 12px !important;
margin-bottom: 12px !important;
}
#frm_srch_info .btn {
padding: 4px 12px !important;
font-size: 0.85rem;
}
/* 툴팁 스타일 */
.info-tooltip {
display: inline-block;
margin-left: 5px;
color: #17a2b8;
cursor: help;
font-size: 0.9rem;
}
.info-tooltip:hover {
color: #138496;
}