Fix: VIP 리스트 모달 표시 문제 해결, 카테고리 필터 페이지 리로드 제거

This commit is contained in:
2026-02-20 15:05:51 +09:00
parent d20287fdbd
commit bd1f111e8d

View File

@ -40,11 +40,12 @@ $table = "{$fg['vip_list_table']} AS a LEFT JOIN {$fg['vip_category_table']} AS
// 비활성 카테고리 숨김 // 비활성 카테고리 숨김
if ($row['gr_used'] == 0 && !$show_all) continue; if ($row['gr_used'] == 0 && !$show_all) continue;
$inactive_class = ($row['gr_used'] == 0) ? ' inactive-cat' : ''; $inactive_class = ($row['gr_used'] == 0) ? ' inactive-cat' : '';
$display_style = ($row['gr_used'] == 0 && !$show_all) ? 'display: none;' : '';
?> ?>
<input type="radio" name="search_group" id="search_group_<?=$row['gr_id']?>" class="btn-check" value="<?=$row['gr_id']?>" <?php if ($search_group === $row['gr_id']) echo "checked" ?>> <input type="radio" name="search_group" id="search_group_<?=$row['gr_id']?>" class="btn-check" value="<?=$row['gr_id']?>" <?php if ($search_group === $row['gr_id']) echo "checked" ?>>
<label class="btn btn-outline-primary<?=$inactive_class?>" for="search_group_<?=$row['gr_id']?>" style="<?=($row['gr_used'] == 0) ? 'opacity: 0.5;' : ''?>"><?=$row['gr_name']?></label> <label class="btn btn-outline-primary category-label<?=$inactive_class?>" for="search_group_<?=$row['gr_id']?>" style="<?=($row['gr_used'] == 0) ? 'opacity: 0.5;' : ''?><?=$display_style?>"><?=$row['gr_name']?></label>
<?php } ?> <?php } ?>
<button type="button" class="btn btn-outline-secondary btn-sm" onclick="toggleShowAllCat()"> <button type="button" class="btn btn-outline-secondary btn-sm" onclick="toggleShowAllCat()" data-show-all="<?=($show_all) ? 'true' : 'false'?>">
<?=($show_all) ? '활성만 보기' : '모두보기'?> <?=($show_all) ? '활성만 보기' : '모두보기'?>
</button> </button>
</div> </div>
@ -190,7 +191,7 @@ $table = "{$fg['vip_list_table']} AS a LEFT JOIN {$fg['vip_category_table']} AS
$is_expired = ($expire_date != '9999-12-31' && strtotime($expire_date) < strtotime($today)) ? true : false; $is_expired = ($expire_date != '9999-12-31' && strtotime($expire_date) < strtotime($today)) ? true : false;
$expired_class = $is_expired ? 'expired-vip' : ''; $expired_class = $is_expired ? 'expired-vip' : '';
?> ?>
<tr class="<?=($R['status'] != '정상') ? "unused" : "" ?> vip-row <?=$expired_class?>" style="cursor: pointer;" data-bs-toggle="modal" data-bs-target="#modify_modal_<?=$R['idx']?>"> <tr class="<?=($R['status'] != '정상') ? "unused" : "" ?> vip-row <?=$expired_class?>" style="cursor: pointer;" onclick="openVipModal(<?=$R['idx']?>)">
<td class="text-center"><?=$R['vip_card_no']?></td> <td class="text-center"><?=$R['vip_card_no']?></td>
<td class="text-center"><?=$R['status']?></td> <td class="text-center"><?=$R['status']?></td>
<td class="text-center"><?=$R['vip_name']?></td> <td class="text-center"><?=$R['vip_name']?></td>
@ -371,13 +372,37 @@ $table = "{$fg['vip_list_table']} AS a LEFT JOIN {$fg['vip_category_table']} AS
<script> <script>
function toggleShowAllCat() { function toggleShowAllCat() {
const btn = event.target;
const showAll = !btn.getAttribute('data-show-all') || btn.getAttribute('data-show-all') === 'false';
// UI 즉시 업데이트
const categoryLabels = document.querySelectorAll('.category-label');
categoryLabels.forEach(label => {
if (label.classList.contains('inactive-cat')) {
label.style.display = showAll ? 'inline-block' : 'none';
}
});
// 버튼 텍스트 업데이트
btn.textContent = showAll ? '활성만 보기' : '모두보기';
btn.setAttribute('data-show-all', showAll ? 'true' : 'false');
// URL 업데이트 (새로고침 없음)
const url = new URL(window.location); const url = new URL(window.location);
if (url.searchParams.has('show_all_cat')) { if (showAll) {
url.searchParams.delete('show_all_cat');
} else {
url.searchParams.set('show_all_cat', '1'); url.searchParams.set('show_all_cat', '1');
} else {
url.searchParams.delete('show_all_cat');
}
window.history.pushState({}, '', url.toString());
}
function openVipModal(idx) {
const modal = document.getElementById('modify_modal_' + idx);
if (modal) {
const bsModal = new bootstrap.Modal(modal);
bsModal.show();
} }
window.location = url.toString();
} }
function entMemWithConfirm(idx, isExpired) { function entMemWithConfirm(idx, isExpired) {