feat: add designated shop detail and PII masking updates

Rebase current admin changes on top of origin/main and exclude local artifacts from tracking to reduce push payload.

Made-with: Cursor
This commit is contained in:
taekyoungc
2026-04-08 15:22:24 +09:00
parent de8f631ca8
commit 71edc1eb20
18 changed files with 934 additions and 360 deletions

View File

@@ -8,6 +8,31 @@
</div>
</div>
</section>
<section class="no-print border border-gray-300 bg-white p-2 mt-2">
<form method="POST" action="<?= mgmt_url('companies') ?>" class="flex flex-wrap items-end gap-2" autocomplete="off">
<?= csrf_field() ?>
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회 기준</label>
<select name="search_field" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[10rem]">
<option value="cp_idx" <?= ($search_field ?? 'cp_name') === 'cp_idx' ? 'selected' : '' ?>>번호</option>
<option value="cp_type" <?= ($search_field ?? 'cp_name') === 'cp_type' ? 'selected' : '' ?>>업체유형</option>
<option value="cp_name" <?= ($search_field ?? 'cp_name') === 'cp_name' ? 'selected' : '' ?>>업체명</option>
<option value="cp_biz_no" <?= ($search_field ?? 'cp_name') === 'cp_biz_no' ? 'selected' : '' ?>>사업자번호</option>
<option value="cp_rep_name" <?= ($search_field ?? 'cp_name') === 'cp_rep_name' ? 'selected' : '' ?>>대표자</option>
<option value="cp_tel" <?= ($search_field ?? 'cp_name') === 'cp_tel' ? 'selected' : '' ?>>전화</option>
<option value="cp_addr" <?= ($search_field ?? 'cp_name') === 'cp_addr' ? 'selected' : '' ?>>주소</option>
</select>
</div>
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회어</label>
<input type="text" name="search_query" value="<?= esc($search_query ?? '') ?>" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[18rem]" placeholder="조회어 입력">
</div>
<div class="flex items-center gap-2 pb-0.5">
<button type="submit" class="bg-btn-search text-white px-4 py-1.5 rounded-sm text-sm">조회</button>
<a href="<?= mgmt_url('companies') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</div>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<thead>

View File

@@ -1,17 +1,18 @@
<?php helper('pii_mask'); ?>
<?= view('components/print_header', ['printTitle' => '지정판매소 목록']) ?>
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<div class="flex flex-wrap items-center justify-between gap-y-2">
<span class="text-sm font-bold text-gray-700">지정판매소 목록</span>
<div class="flex items-center gap-2">
<a href="<?= base_url('admin/designated-shops/export') ?>" class="no-print border border-btn-excel-border text-btn-excel-text px-3 py-1 rounded-sm text-sm hover:bg-green-50 transition">엑셀저장</a>
<a href="<?= mgmt_url('designated-shops/export') ?>" class="no-print border border-btn-excel-border text-btn-excel-text px-3 py-1 rounded-sm text-sm hover:bg-green-50 transition">엑셀저장</a>
<button onclick="window.print()" class="no-print border border-btn-print-border text-gray-600 px-3 py-1 rounded-sm text-sm hover:bg-gray-50 transition">인쇄</button>
<a href="<?= base_url('admin/designated-shops/create') ?>" class="bg-btn-search text-white px-4 py-1.5 rounded-sm flex items-center gap-1 text-sm shadow hover:opacity-90 transition border border-transparent">지정판매소 등록</a>
<a href="<?= mgmt_url('designated-shops/create') ?>" class="bg-btn-search text-white px-4 py-1.5 rounded-sm flex items-center gap-1 text-sm shadow hover:opacity-90 transition border border-transparent">지정판매소 등록</a>
</div>
</div>
</section>
<!-- P2-15: 다조건 검색 -->
<section class="p-2 bg-white border-b border-gray-200 no-print">
<form method="GET" action="<?= base_url('admin/designated-shops') ?>" class="flex flex-wrap items-center gap-2">
<form method="GET" action="<?= mgmt_url('designated-shops') ?>" class="flex flex-wrap items-center gap-2">
<label class="text-sm text-gray-600">상호명</label>
<input type="text" name="ds_name" value="<?= esc($dsName ?? '') ?>" placeholder="상호명 검색" class="border border-gray-300 rounded px-2 py-1 text-sm w-40"/>
<label class="text-sm text-gray-600">구군코드</label>
@@ -29,7 +30,7 @@
<option value="3" <?= ($dsState ?? '') === '3' ? 'selected' : '' ?>>직권해지</option>
</select>
<button type="submit" class="bg-btn-search text-white px-4 py-1 rounded-sm text-sm">조회</button>
<a href="<?= base_url('admin/designated-shops') ?>" class="border border-gray-300 text-gray-600 px-3 py-1 rounded-sm text-sm hover:bg-gray-50">초기화</a>
<a href="<?= mgmt_url('designated-shops') ?>" class="border border-gray-300 text-gray-600 px-3 py-1 rounded-sm text-sm hover:bg-gray-50">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
@@ -50,19 +51,26 @@
</thead>
<tbody class="text-right">
<?php foreach ($list as $row): ?>
<tr>
<td class="text-center"><?= esc($row->ds_idx) ?></td>
<tr class="hover:bg-gray-50">
<td class="text-center">
<a href="<?= mgmt_url('designated-shops/show/' . (int) $row->ds_idx) ?>" class="text-blue-600 hover:underline"><?= esc($row->ds_idx) ?></a>
</td>
<td class="text-left pl-2"><?= esc($lgMap[$row->ds_lg_idx] ?? '') ?></td>
<td class="text-left pl-2"><?= esc($row->ds_shop_no) ?></td>
<td class="text-left pl-2"><?= esc($row->ds_name) ?></td>
<td class="text-left pl-2"><?= esc($row->ds_rep_name) ?></td>
<td class="text-left pl-2">
<a href="<?= mgmt_url('designated-shops/show/' . (int) $row->ds_idx) ?>" class="text-blue-600 hover:underline"><?= esc($row->ds_shop_no) ?></a>
</td>
<td class="text-left pl-2">
<a href="<?= mgmt_url('designated-shops/show/' . (int) $row->ds_idx) ?>" class="text-blue-600 font-medium hover:underline"><?= esc($row->ds_name) ?></a>
</td>
<td class="text-left pl-2"><?= esc(mask_person_name($row->ds_rep_name ?? null)) ?></td>
<td class="text-left pl-2"><?= esc($row->ds_biz_no) ?></td>
<td class="text-left pl-2"><?= esc($row->ds_va_number) ?></td>
<td class="text-center"><?= (int) $row->ds_state === 1 ? '정상' : ((int) $row->ds_state === 2 ? '폐업' : '직권해지') ?></td>
<td class="text-left pl-2"><?= esc($row->ds_regdate ?? '') ?></td>
<td class="text-center">
<a href="<?= base_url('admin/designated-shops/edit/' . (int) $row->ds_idx) ?>" class="text-blue-600 hover:underline text-sm">수정</a>
<form action="<?= base_url('admin/designated-shops/delete/' . (int) $row->ds_idx) ?>" method="POST" class="inline ml-1" onsubmit="return confirm('이 지정판매소를 삭제하시겠습니까?');">
<a href="<?= mgmt_url('designated-shops/show/' . (int) $row->ds_idx) ?>" class="text-gray-700 hover:underline text-sm mr-1">상세</a>
<a href="<?= mgmt_url('designated-shops/edit/' . (int) $row->ds_idx) ?>" class="text-blue-600 hover:underline text-sm">수정</a>
<form action="<?= mgmt_url('designated-shops/delete/' . (int) $row->ds_idx) ?>" method="POST" class="inline ml-1" onsubmit="return confirm('이 지정판매소를 삭제하시겠습니까?');">
<?= csrf_field() ?>
<button type="submit" class="text-red-600 hover:underline text-sm">삭제</button>
</form>

View File

@@ -1,3 +1,6 @@
<?php
helper('pii_mask');
?>
<?= view('components/print_header', ['printTitle' => '지정판매소 지도']) ?>
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<div class="flex flex-wrap items-center justify-between gap-y-2">
@@ -25,7 +28,7 @@ document.addEventListener('DOMContentLoaded', function() {
var geocoder = new kakao.maps.services.Geocoder();
var shops = <?= json_encode(array_map(function($s) {
return ['name' => $s->ds_name, 'addr' => $s->ds_addr ?? '', 'rep' => $s->ds_rep_name ?? '', 'tel' => $s->ds_tel ?? ''];
return ['name' => $s->ds_name, 'addr' => $s->ds_addr ?? '', 'rep' => mask_person_name($s->ds_rep_name ?? null), 'tel' => $s->ds_tel ?? ''];
}, $shops), JSON_UNESCAPED_UNICODE) ?>;
var bounds = new kakao.maps.LatLngBounds();

View File

@@ -0,0 +1,94 @@
<?php
$shop = $shop ?? null;
$currentLg = $currentLg ?? null;
$stateLabel = $stateLabel ?? '';
$can_edit = $can_edit ?? false;
if ($shop === null) {
return;
}
helper('pii_mask');
$val = static fn (?string $s): string => $s !== null && $s !== '' ? $s : '—';
$dispMask = static function (string $masked): string {
return $masked !== '' ? $masked : '—';
};
?>
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<div class="flex flex-wrap items-center justify-between gap-2">
<span class="text-sm font-bold text-gray-700">지정판매소 정보</span>
<div class="flex items-center gap-2">
<a href="<?= mgmt_url('designated-shops') ?>" class="border border-gray-300 text-gray-600 px-3 py-1 rounded-sm text-sm hover:bg-gray-50">목록</a>
<?php if ($can_edit): ?>
<a href="<?= mgmt_url('designated-shops/edit/' . (int) $shop->ds_idx) ?>" class="bg-btn-search text-white px-3 py-1 rounded-sm text-sm hover:opacity-90">수정</a>
<?php endif; ?>
</div>
</div>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl space-y-3 text-sm">
<?php if ($currentLg !== null): ?>
<div class="flex flex-wrap gap-2 border-b border-gray-100 pb-2">
<span class="font-bold text-gray-700 w-28 shrink-0">지자체</span>
<span><?= esc($currentLg->lg_name) ?> <span class="text-gray-500">(<?= esc($currentLg->lg_code) ?>)</span></span>
</div>
<?php endif; ?>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">판매소번호</span>
<span class="font-mono"><?= esc($shop->ds_shop_no) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">구코드</span>
<span class="font-mono"><?= esc($val($shop->ds_gugun_code ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">상호명</span>
<span class="font-semibold"><?= esc($shop->ds_name) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">사업자번호</span>
<span><?= esc($val($shop->ds_biz_no ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">대표자명</span>
<span><?= esc($dispMask(mask_person_name($shop->ds_rep_name ?? null))) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">가상계좌</span>
<span><?= esc($val($shop->ds_va_number ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">우편번호</span>
<span><?= esc($val($shop->ds_zip ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">도로명주소</span>
<span><?= esc($val($shop->ds_addr ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">지번주소</span>
<span><?= esc($val($shop->ds_addr_jibun ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">일반전화</span>
<span><?= esc($val($shop->ds_tel ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">대표 휴대전화</span>
<span><?= esc($dispMask(mask_mobile_phone($shop->ds_rep_phone ?? null))) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">이메일</span>
<span><?= esc($val($shop->ds_email ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">지정일자</span>
<span><?= esc($val($shop->ds_designated_at ?? null)) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">영업상태</span>
<span><?= esc($stateLabel) ?></span>
</div>
<div class="flex flex-wrap gap-2">
<span class="font-bold text-gray-700 w-28 shrink-0">등록일시</span>
<span><?= esc($val($shop->ds_regdate ?? null)) ?></span>
</div>
</div>

View File

@@ -8,6 +8,31 @@
</div>
</div>
</section>
<section class="no-print border border-gray-300 bg-white p-2 mt-2">
<form method="POST" action="<?= mgmt_url('free-recipients') ?>" class="flex flex-wrap items-end gap-2" autocomplete="off">
<?= csrf_field() ?>
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회 기준</label>
<select name="search_field" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[10rem]">
<option value="fr_idx" <?= ($search_field ?? 'fr_name') === 'fr_idx' ? 'selected' : '' ?>>번호</option>
<option value="fr_type_code" <?= ($search_field ?? 'fr_name') === 'fr_type_code' ? 'selected' : '' ?>>구분</option>
<option value="fr_name" <?= ($search_field ?? 'fr_name') === 'fr_name' ? 'selected' : '' ?>>대상자명</option>
<option value="fr_phone" <?= ($search_field ?? 'fr_name') === 'fr_phone' ? 'selected' : '' ?>>연락처</option>
<option value="fr_addr" <?= ($search_field ?? 'fr_name') === 'fr_addr' ? 'selected' : '' ?>>주소</option>
<option value="fr_dong_code" <?= ($search_field ?? 'fr_name') === 'fr_dong_code' ? 'selected' : '' ?>>동</option>
<option value="fr_note" <?= ($search_field ?? 'fr_name') === 'fr_note' ? 'selected' : '' ?>>비고</option>
</select>
</div>
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회어</label>
<input type="text" name="search_query" value="<?= esc($search_query ?? '') ?>" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[18rem]" placeholder="조회어 입력">
</div>
<div class="flex items-center gap-2 pb-0.5">
<button type="submit" class="bg-btn-search text-white px-4 py-1.5 rounded-sm text-sm">조회</button>
<a href="<?= mgmt_url('free-recipients') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</div>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<thead>
@@ -17,7 +42,7 @@
<th>대상자명</th>
<th>연락처</th>
<th>주소</th>
<th>동코드</th>
<th>동</th>
<th>비고</th>
<th>종료일</th>
<th class="w-20">상태</th>
@@ -28,11 +53,11 @@
<?php foreach ($list as $row): ?>
<tr>
<td class="text-center"><?= esc($row->fr_idx) ?></td>
<td class="text-center"><?= esc($row->fr_type_code) ?></td>
<td class="text-center"><?= esc($type_code_map[(string) ($row->fr_type_code ?? '')] ?? ($row->fr_type_code ?? '')) ?></td>
<td class="text-left pl-2"><?= esc($row->fr_name) ?></td>
<td class="text-center"><?= esc($row->fr_phone) ?></td>
<td class="text-left pl-2"><?= esc($row->fr_addr) ?></td>
<td class="text-center"><?= esc($row->fr_dong_code) ?></td>
<td class="text-center"><?= esc($dong_code_map[(string) ($row->fr_dong_code ?? '')] ?? ($row->fr_dong_code ?? '')) ?></td>
<td class="text-left pl-2"><?= esc($row->fr_note) ?></td>
<td class="text-center"><?= esc($row->fr_end_date) ?></td>
<td class="text-center"><?= (int) $row->fr_state === 1 ? '사용' : '미사용' ?></td>

View File

@@ -8,6 +8,31 @@
</div>
</div>
</section>
<section class="no-print border border-gray-300 bg-white p-2 mt-2">
<form method="POST" action="<?= mgmt_url('managers') ?>" class="flex flex-wrap items-end gap-2" autocomplete="off">
<?= csrf_field() ?>
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회 기준</label>
<select name="search_field" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[10rem]">
<option value="mg_idx" <?= ($search_field ?? 'mg_name') === 'mg_idx' ? 'selected' : '' ?>>번호</option>
<option value="mg_name" <?= ($search_field ?? 'mg_name') === 'mg_name' ? 'selected' : '' ?>>담당자명</option>
<option value="mg_dept_code" <?= ($search_field ?? 'mg_name') === 'mg_dept_code' ? 'selected' : '' ?>>소속</option>
<option value="mg_position_code" <?= ($search_field ?? 'mg_name') === 'mg_position_code' ? 'selected' : '' ?>>직위</option>
<option value="mg_tel" <?= ($search_field ?? 'mg_name') === 'mg_tel' ? 'selected' : '' ?>>전화</option>
<option value="mg_phone" <?= ($search_field ?? 'mg_name') === 'mg_phone' ? 'selected' : '' ?>>휴대전화</option>
<option value="mg_email" <?= ($search_field ?? 'mg_name') === 'mg_email' ? 'selected' : '' ?>>이메일</option>
</select>
</div>
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회어</label>
<input type="text" name="search_query" value="<?= esc($search_query ?? '') ?>" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[18rem]" placeholder="조회어 입력">
</div>
<div class="flex items-center gap-2 pb-0.5">
<button type="submit" class="bg-btn-search text-white px-4 py-1.5 rounded-sm text-sm">조회</button>
<a href="<?= mgmt_url('managers') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</div>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<thead>
@@ -28,8 +53,8 @@
<tr>
<td class="text-center"><?= esc($row->mg_idx) ?></td>
<td class="text-center"><?= esc($row->mg_name) ?></td>
<td class="text-center"><?= esc($row->mg_dept_code) ?></td>
<td class="text-center"><?= esc($row->mg_position_code) ?></td>
<td class="text-center"><?= esc($dept_code_map[(string) ($row->mg_dept_code ?? '')] ?? ($row->mg_dept_code ?? '')) ?></td>
<td class="text-center"><?= esc($pos_code_map[(string) ($row->mg_position_code ?? '')] ?? ($row->mg_position_code ?? '')) ?></td>
<td class="text-center"><?= esc($row->mg_tel) ?></td>
<td class="text-center"><?= esc($row->mg_phone) ?></td>
<td class="text-center"><?= esc($row->mg_email) ?></td>

View File

@@ -4,21 +4,39 @@
<span class="text-sm font-bold text-gray-700">판매 대행소 관리</span>
<div class="flex items-center gap-2">
<button onclick="window.print()" class="no-print border border-btn-print-border text-gray-600 px-3 py-1 rounded-sm text-sm hover:bg-gray-50 transition">인쇄</button>
<a href="<?= base_url('admin/sales-agencies/create') ?>" class="bg-btn-search text-white px-4 py-1.5 rounded-sm flex items-center gap-1 text-sm shadow hover:opacity-90 transition border border-transparent">대행소 등록</a>
<a href="<?= mgmt_url('sales-agencies/create') ?>" class="bg-btn-search text-white px-4 py-1.5 rounded-sm flex items-center gap-1 text-sm shadow hover:opacity-90 transition border border-transparent">대행소 등록</a>
</div>
</div>
</section>
<section class="no-print border border-gray-300 bg-white p-2 mt-2">
<form method="GET" action="<?= mgmt_url('sales-agencies') ?>" class="flex flex-wrap items-end gap-2">
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회 기준</label>
<select name="search_field" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[9rem]">
<option value="sa_idx" <?= ($search_field ?? 'sa_name') === 'sa_idx' ? 'selected' : '' ?>>번호</option>
<option value="sa_kind" <?= ($search_field ?? 'sa_name') === 'sa_kind' ? 'selected' : '' ?>>대행소 구분</option>
<option value="sa_code" <?= ($search_field ?? 'sa_name') === 'sa_code' ? 'selected' : '' ?>>대행소 코드</option>
<option value="sa_name" <?= ($search_field ?? 'sa_name') === 'sa_name' ? 'selected' : '' ?>>대행소 명</option>
</select>
</div>
<div class="flex flex-col gap-0.5">
<label class="text-xs text-gray-500">조회어</label>
<input type="text" name="search_query" value="<?= esc($search_query ?? '') ?>" class="border border-gray-300 rounded px-2 py-1.5 text-sm min-w-[16rem]" placeholder="조회어 입력">
</div>
<div class="flex items-center gap-2 pb-0.5">
<button type="submit" class="bg-btn-search text-white px-4 py-1.5 rounded-sm text-sm">조회</button>
<a href="<?= mgmt_url('sales-agencies') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</div>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<thead>
<tr>
<th class="w-16">번호</th>
<th>대행소</th>
<th>사업자번호</th>
<th>대표자</th>
<th>전화</th>
<th>주소</th>
<th class="w-20">상태</th>
<th>대행소 구분</th>
<th>대행소 코드</th>
<th>대행소 명</th>
<th class="w-36">작업</th>
</tr>
</thead>
@@ -26,15 +44,12 @@
<?php foreach ($list as $row): ?>
<tr>
<td class="text-center"><?= esc($row->sa_idx) ?></td>
<td class="text-left pl-2"><?= esc($row->sa_kind ?? '') ?></td>
<td class="text-center"><?= esc($row->sa_code ?? '') ?></td>
<td class="text-left pl-2"><?= esc($row->sa_name) ?></td>
<td class="text-center"><?= esc($row->sa_biz_no) ?></td>
<td class="text-center"><?= esc($row->sa_rep_name) ?></td>
<td class="text-center"><?= esc($row->sa_tel) ?></td>
<td class="text-left pl-2"><?= esc($row->sa_addr) ?></td>
<td class="text-center"><?= (int) $row->sa_state === 1 ? '정상' : '미사용' ?></td>
<td class="text-center">
<a href="<?= base_url('admin/sales-agencies/edit/' . (int) $row->sa_idx) ?>" class="text-blue-600 hover:underline text-sm mr-1">수정</a>
<form action="<?= base_url('admin/sales-agencies/delete/' . (int) $row->sa_idx) ?>" method="POST" class="inline" onsubmit="return confirm('삭제하시겠습니까?');">
<a href="<?= mgmt_url('sales-agencies/edit/' . (int) $row->sa_idx) ?>" class="text-blue-600 hover:underline text-sm mr-1">수정</a>
<form action="<?= mgmt_url('sales-agencies/delete/' . (int) $row->sa_idx) ?>" method="POST" class="inline" onsubmit="return confirm('삭제하시겠습니까?');">
<?= csrf_field() ?>
<button type="submit" class="text-red-600 hover:underline text-sm">삭제</button>
</form>
@@ -42,7 +57,7 @@
</tr>
<?php endforeach; ?>
<?php if (empty($list)): ?>
<tr><td colspan="8" class="text-center text-gray-400 py-4">등록된 데이터가 없습니다.</td></tr>
<tr><td colspan="5" class="text-center text-gray-400 py-4">등록된 데이터가 없습니다.</td></tr>
<?php endif; ?>
</tbody>
</table>