style: 표/패널 UI 전면 통일 + 화면설명 드로어·글씨크기·탭 개선

표 디자인
- 모든 표를 가벼운 스타일로 통일(.data-table 경량화: 작은 회색 헤더·연한 구분선·hover)
- 표/패널 바깥 테두리 둥글게(rounded-lg) 일괄 적용, 표 래퍼에 패딩 카드(p-4) 통일
- 표 헤더·데이터 정렬을 전 화면 좌측 기준으로 통일
  - .data-table th/td text-align:left (전역), 흩어진 center/right 정렬 정리
  - 재디자인 Tailwind 표(포장단위·단가·기본코드·담당자·업체·판매대행소·무료대상자·지정판매소)도 셀 좌측화
- 기본정보관리 등 나머지 소메뉴 표를 기본 코드 관리 스타일(가벼운 표·상태 pill)로 재디자인

워크스페이스/공통
- "이 화면 설명" → 새 탭 대신 우측 드로어 팝업(현재 화면과 동시에 보기, Esc·드래그 폭조절)
- 상단바 글씨 크기 조절(A−/A+), 작업 내용에 zoom 적용
- 탭 최대치 도달 시 자동 삭제 대신 안내 토스트, "모두 닫기"(업무 현황 탭은 보존)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
taekyoungc
2026-06-11 17:26:36 +09:00
parent 912ffdbe23
commit a8afaf4af2
108 changed files with 1198 additions and 965 deletions

View File

@@ -5,7 +5,7 @@
<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>
</div>
</section>
<div class="border border-gray-300 p-4 mt-2">
<div class="border border-gray-300 rounded-lg p-4 mt-2">
<form method="get" action="<?= base_url('admin/access/approvals') ?>" class="mb-4 flex flex-wrap items-center gap-2 text-sm">
<label for="status" class="font-bold text-gray-700 shrink-0">상태</label>
<select id="status" name="status" class="border border-gray-300 rounded px-3 py-1.5 text-sm min-w-[12rem] w-48 max-w-full">
@@ -18,14 +18,14 @@
<table class="w-full data-table">
<thead>
<tr>
<th>요청일</th>
<th>아이디</th>
<th>이름</th>
<th>지자체</th>
<th>요청 역할</th>
<th>상태</th>
<th>처리일</th>
<th>관리</th>
<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>
<th class="text-center">상태</th>
<th class="text-center">처리일</th>
<th class="text-center">관리</th>
</tr>
</thead>
<tbody>

View File

@@ -13,15 +13,15 @@
<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>
</div>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto mt-2">
<table class="w-full data-table">
<thead>
<tr>
<th>일시</th>
<th>아이디</th>
<th>성공</th>
<th>IP</th>
<th>메시지</th>
<th class="text-left">일시</th>
<th class="text-left">아이디</th>
<th class="text-center">성공</th>
<th class="text-left">IP</th>
<th class="text-left">메시지</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -8,15 +8,15 @@
</div>
</div>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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 class="w-16 text-center">번호</th>
<th class="text-center">봉투코드</th>
<th class="text-left">봉투명</th>
<th class="text-right">현재재고(낱장)</th>
<th class="text-center">최종갱신</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">무료용 불출 처리</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('bag-issues/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -18,20 +18,20 @@
<a href="<?= mgmt_url('bag-issues') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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 class="w-16 text-center">번호</th>
<th class="text-center">연도</th>
<th class="text-center">분기</th>
<th class="text-center">구분</th>
<th class="text-center">불출일</th>
<th>불출처</th>
<th>봉투코드</th>
<th>봉투명</th>
<th>수량</th>
<th class="w-24">작업</th>
<th class="text-center">봉투코드</th>
<th class="text-left">봉투명</th>
<th class="text-right">수량</th>
<th class="w-24 text-center">작업</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -48,7 +48,7 @@
<form action="<?= mgmt_url('bag-orders/store') ?>" method="POST" class="mt-2 space-y-2">
<?= csrf_field() ?>
<div class="border border-gray-300 bg-white p-2">
<div class="border border-gray-300 rounded-lg bg-white p-2">
<div class="flex flex-wrap items-center gap-4 text-sm">
<div class="flex items-center gap-2">
<label for="bo_order_month_ui" class="font-bold text-gray-700">발주월</label>
@@ -63,16 +63,16 @@
</div>
<div class="grid grid-cols-1 xl:grid-cols-12 gap-2">
<section class="xl:col-span-5 border border-gray-300 bg-white">
<section class="xl:col-span-5 border border-gray-300 rounded-lg bg-white">
<div class="border-b border-gray-300 bg-gray-50 px-2 py-1 text-sm font-bold text-gray-700">발주 이력</div>
<div class="overflow-auto max-h-[410px]">
<table class="w-full data-table text-sm">
<thead>
<tr>
<th class="w-28">발주일</th>
<th>제작업체</th>
<th>입고처</th>
<th class="w-16">상태</th>
<th class="w-28 text-center">발주일</th>
<th class="text-left">제작업체</th>
<th class="text-left">입고처</th>
<th class="w-16 text-center">상태</th>
</tr>
</thead>
<tbody>
@@ -92,7 +92,7 @@
</div>
</section>
<section class="xl:col-span-7 border border-gray-300 bg-white">
<section class="xl:col-span-7 border border-gray-300 rounded-lg bg-white">
<div class="border-b border-gray-300 bg-gray-50 px-2 py-1 text-sm font-bold text-gray-700">발주 Form</div>
<div class="p-2 space-y-2">
<div class="grid grid-cols-1 md:grid-cols-2 gap-2">
@@ -136,17 +136,17 @@
</div>
</div>
<div class="border border-gray-300 overflow-auto">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto">
<table class="w-full data-table text-sm order-input-table" id="order-item-table">
<thead>
<tr>
<th class="w-12">번호</th>
<th class="w-16">선택</th>
<th>품명</th>
<th class="w-28">수량(BOX)</th>
<th class="w-24">단가</th>
<th class="w-24">환산수량</th>
<th class="w-28">금액</th>
<th class="w-12 text-center">번호</th>
<th class="w-16 text-center">선택</th>
<th class="text-left">품명</th>
<th class="w-28 text-right">수량(BOX)</th>
<th class="w-24 text-right">단가</th>
<th class="w-24 text-right">환산수량</th>
<th class="w-28 text-right">금액</th>
</tr>
</thead>
<tbody id="selected-order-items-body"></tbody>
@@ -170,20 +170,20 @@
</section>
</div>
<section class="border border-gray-300 bg-white">
<section class="border border-gray-300 rounded-lg bg-white">
<div class="border-b border-gray-300 bg-gray-50 px-2 py-1 text-sm font-bold text-gray-700">발주 등록 종류</div>
<p class="text-xs text-gray-600 px-2 py-1">아래 목록에서 봉투를 선택하면 발주 품목에 추가됩니다. (개수 제한 없음)</p>
<div class="overflow-auto">
<table class="w-full data-table text-sm order-reference-table">
<thead>
<tr>
<th class="w-12">번호</th>
<th class="w-20">선택</th>
<th class="w-12 text-center">번호</th>
<th class="w-20 text-center">선택</th>
<th>봉투 종류</th>
<th class="w-24">발주단가</th>
<th class="w-24">Box당 팩</th>
<th class="w-24">팩당 낱장</th>
<th class="w-28">1박스 총 낱장</th>
<th class="w-24 text-right">발주단가</th>
<th class="w-24 text-right">Box당 팩</th>
<th class="w-24 text-right">팩당 낱장</th>
<th class="w-28 text-right">1박스 총 낱장</th>
</tr>
</thead>
<tbody>

View File

@@ -5,7 +5,7 @@
<span class="text-sm font-bold text-gray-700">발주 상세 <?= esc($order->bo_lot_no) ?></span>
</div>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-4xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-4xl">
<table class="w-full text-sm">
<tbody>
<tr class="border-b">
@@ -53,16 +53,16 @@
</table>
</div>
<div class="border border-gray-300 overflow-auto mt-4">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto mt-4">
<table class="w-full data-table">
<thead>
<tr>
<th>봉투코드</th>
<th>봉투명</th>
<th>단가</th>
<th>박스수</th>
<th>낱장수</th>
<th>금액</th>
<th class="text-center">봉투코드</th>
<th class="text-left">봉투명</th>
<th class="text-right">단가</th>
<th class="text-right">박스수</th>
<th class="text-right">낱장수</th>
<th class="text-right">금액</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -90,19 +90,19 @@
</form>
</section>
<div class="bag-order-print-wrap border border-gray-300 overflow-auto mt-2">
<div class="bag-order-print-wrap border border-gray-300 rounded-lg p-4 overflow-auto mt-2">
<table class="bag-order-print-table w-full data-table">
<thead>
<tr>
<th class="w-32">발주일자</th>
<th class="min-w-[10rem]">제작 업체</th>
<th class="min-w-[12rem]">품 명</th>
<th class="w-28">발주 수량</th>
<th class="w-28">입고 수량</th>
<th class="w-28">미입고수량</th>
<th class="w-32">발주 금액</th>
<th class="min-w-[9rem]">입고처</th>
<th class="min-w-[8rem]">비 고</th>
<th class="w-32 text-center">발주일자</th>
<th class="min-w-[10rem] text-left">제작 업체</th>
<th class="min-w-[12rem] text-left">품 명</th>
<th class="w-28 text-right">발주 수량</th>
<th class="w-28 text-right">입고 수량</th>
<th class="w-28 text-right">미입고수량</th>
<th class="w-32 text-right">발주 금액</th>
<th class="min-w-[9rem] text-left">입고처</th>
<th class="min-w-[8rem] text-left">비 고</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">봉투 단가 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('bag-prices/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">봉투 단가 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('bag-prices/update/' . (int) $item->bp_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -5,15 +5,15 @@
<span class="text-sm font-bold text-gray-700">단가 변경 이력 <?= esc($item->bp_bag_name) ?> (<?= esc($item->bp_bag_code) ?>)</span>
</div>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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 class="w-16 text-center">번호</th>
<th class="text-left">변경 필드</th>
<th class="text-right">이전 값</th>
<th class="text-right">변경 값</th>
<th class="text-center">변경일시</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -94,20 +94,20 @@
</div>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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>적용시작</th>
<th>적용종료</th>
<th class="w-20">상태</th>
<th class="w-36 no-print">작업</th>
<th class="w-16 text-center">번호</th>
<th class="text-center">봉투코드</th>
<th class="text-left">봉투명</th>
<th class="text-right">발주단가</th>
<th class="text-right">도매가</th>
<th class="text-right">소비자가</th>
<th class="text-center">적용시작</th>
<th class="text-center">적용종료</th>
<th class="w-20 text-center">상태</th>
<th class="w-36 no-print text-center">작업</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">입고 처리</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('bag-receivings/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -18,18 +18,18 @@
<a href="<?= mgmt_url('bag-receivings') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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>구분</th>
<th>등록일</th>
<th class="w-16 text-center">번호</th>
<th class="text-center">봉투코드</th>
<th class="text-left">봉투명</th>
<th class="text-right">박스수</th>
<th class="text-right">낱장수</th>
<th class="text-center">입고일</th>
<th class="text-center">구분</th>
<th class="text-center">등록일</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">판매 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('bag-sales/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -26,19 +26,19 @@
<a href="<?= mgmt_url('bag-sales') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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>단가</th>
<th>금액</th>
<th class="w-20">구분</th>
<th class="w-16 text-center">번호</th>
<th class="text-left">판매소</th>
<th class="text-center">판매일</th>
<th class="text-center">봉투코드</th>
<th class="text-left">봉투명</th>
<th class="text-right">수량</th>
<th class="text-right">단가</th>
<th class="text-right">금액</th>
<th class="w-20 text-center">구분</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -5,7 +5,7 @@
<span class="text-sm font-bold text-gray-700">세부코드 등록</span>
</div>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= base_url('admin/code-details/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>
<input type="hidden" name="cd_ck_idx" value="<?= (int) $kind->ck_idx ?>"/>

View File

@@ -5,7 +5,7 @@
<span class="text-sm font-bold text-gray-700">세부코드 수정</span>
</div>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= base_url('admin/code-details/update/' . (int) $item->cd_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">기본코드 종류 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= base_url('admin/code-kinds/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">기본코드 종류 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= base_url('admin/code-kinds/update/' . (int) $item->ck_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">업체 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('companies/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">업체 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('companies/update/' . (int) $item->cp_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -21,19 +21,19 @@
<a href="<?= mgmt_url('companies') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<div class="overflow-auto mt-2">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="w-16">번호</th>
<th>업체유형</th>
<th>업체명</th>
<th>사업자번호</th>
<th>대표자</th>
<th>전화</th>
<th>주소</th>
<th class="w-20">상태</th>
<th class="w-36">작업</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-16 text-left">번호</th>
<th class="py-2.5 px-2 text-left">업체유형</th>
<th class="py-2.5 px-2">업체명</th>
<th class="py-2.5 px-2">사업자번호</th>
<th class="py-2.5 px-2">대표자</th>
<th class="py-2.5 px-2">전화</th>
<th class="py-2.5 px-2">주소</th>
<th class="py-2.5 px-2 w-20 text-left">상태</th>
<th class="py-2.5 px-2 w-36 text-left">작업</th>
</tr>
</thead>
<tbody>
@@ -46,26 +46,34 @@
}
?>
<?php foreach (($list ?? []) as $idx => $row): ?>
<tr>
<td class="text-center"><?= (int) $startNo + (int) $idx ?></td>
<td class="text-center"><?= esc($row->cp_type) ?></td>
<td class="text-left pl-2"><?= esc($row->cp_name) ?></td>
<td class="text-center"><?= esc($row->cp_biz_no) ?></td>
<td class="text-center"><?= esc($row->cp_rep_name) ?></td>
<td class="text-center"><?= esc($row->cp_tel) ?></td>
<td class="text-left pl-2"><?= esc($row->cp_addr) ?></td>
<td class="text-center"><?= (int) $row->cp_state === 1 ? '사용' : '미사용' ?></td>
<td class="text-center">
<a href="<?= mgmt_url('companies/edit/' . (int) $row->cp_idx) ?>" class="text-blue-600 hover:underline text-sm mr-1">수정</a>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left text-gray-500"><?= (int) $startNo + (int) $idx ?></td>
<td class="py-2.5 px-2 text-left">
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 text-gray-600"><?= esc($row->cp_type) ?></span>
</td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->cp_name) ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->cp_biz_no) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($row->cp_rep_name) ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->cp_tel) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($row->cp_addr) ?></td>
<td class="py-2.5 px-2 text-left">
<?php if ((int) $row->cp_state === 1): ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-emerald-50 text-emerald-700">사용</span>
<?php else: ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 text-gray-500">미사용</span>
<?php endif; ?>
</td>
<td class="py-2.5 px-2 text-left text-xs">
<a href="<?= mgmt_url('companies/edit/' . (int) $row->cp_idx) ?>" class="text-blue-600 hover:underline mr-1">수정</a>
<form action="<?= mgmt_url('companies/delete/' . (int) $row->cp_idx) ?>" method="POST" class="inline" onsubmit="return confirm('삭제하시겠습니까?');">
<?= csrf_field() ?>
<button type="submit" class="text-red-600 hover:underline text-sm">삭제</button>
<button type="submit" class="text-red-600 hover:underline">삭제</button>
</form>
</td>
</tr>
<?php endforeach; ?>
<?php if (empty($list)): ?>
<tr><td colspan="9" class="text-center text-gray-400 py-4">등록된 데이터가 없습니다.</td></tr>
<tr><td colspan="9" class="text-center text-gray-400 py-6">등록된 데이터가 없습니다.</td></tr>
<?php endif; ?>
</tbody>
</table>

View File

@@ -17,22 +17,22 @@
<!-- 통계 카드 -->
<div class="grid grid-cols-2 md:grid-cols-4 gap-3 mb-4">
<div class="border border-gray-300 p-4 bg-white">
<div class="border border-gray-300 rounded-lg p-4 bg-white">
<div class="text-xs text-gray-500">총 발주 건수</div>
<div class="text-2xl font-bold text-blue-700"><?= number_format($s['order_count'] ?? 0) ?></div>
<div class="text-xs text-gray-400 mt-1">금액: <?= number_format($s['order_amount'] ?? 0) ?>원</div>
</div>
<div class="border border-gray-300 p-4 bg-white">
<div class="border border-gray-300 rounded-lg p-4 bg-white">
<div class="text-xs text-gray-500">총 판매 건수</div>
<div class="text-2xl font-bold text-green-700"><?= number_format($s['sale_count'] ?? 0) ?></div>
<div class="text-xs text-gray-400 mt-1">금액: <?= number_format($s['sale_amount'] ?? 0) ?>원</div>
</div>
<div class="border border-gray-300 p-4 bg-white">
<div class="border border-gray-300 rounded-lg p-4 bg-white">
<div class="text-xs text-gray-500">재고 품목 수</div>
<div class="text-2xl font-bold text-purple-700"><?= number_format($s['inventory_count'] ?? 0) ?></div>
<div class="text-xs text-gray-400 mt-1">현재 재고가 있는 봉투 품목</div>
</div>
<div class="border border-gray-300 p-4 bg-white">
<div class="border border-gray-300 rounded-lg p-4 bg-white">
<div class="text-xs text-gray-500">이번 달 불출</div>
<div class="text-2xl font-bold text-orange-700"><?= number_format($s['issue_count_month'] ?? 0) ?></div>
<div class="text-xs text-gray-400 mt-1"><?= date('Y년 n월') ?> 무료용 불출</div>
@@ -47,13 +47,13 @@
<h3 class="text-sm font-bold text-gray-700">최근 발주 5건</h3>
<a href="<?= base_url('bag/bag-orders') ?>" class="text-xs text-blue-600 hover:underline">전체보기</a>
</div>
<div class="border border-gray-300 overflow-auto">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto">
<table class="w-full data-table">
<thead>
<tr>
<th>LOT번호</th>
<th>발주일</th>
<th>상태</th>
<th class="text-center">LOT번호</th>
<th class="text-center">발주일</th>
<th class="text-center">상태</th>
</tr>
</thead>
<tbody class="text-center">
@@ -92,15 +92,15 @@
<h3 class="text-sm font-bold text-gray-700">최근 판매 5건</h3>
<a href="<?= base_url('bag/bag-sales') ?>" class="text-xs text-blue-600 hover:underline">전체보기</a>
</div>
<div class="border border-gray-300 overflow-auto">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto">
<table class="w-full data-table">
<thead>
<tr>
<th>판매소</th>
<th>봉투명</th>
<th>수량</th>
<th>금액</th>
<th>구분</th>
<th class="text-left pl-2">판매소</th>
<th class="text-left pl-2">봉투명</th>
<th class="text-right">수량</th>
<th class="text-right">금액</th>
<th class="text-center">구분</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,11 +1,7 @@
<?= view('components/print_header', ['printTitle' => '지정판매소 바코드 출력']) ?>
<style>
.ds-bc-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.ds-bc-table th, .ds-bc-table td { border: 1px solid #ccc; padding: 4px 6px; }
.ds-bc-table th { background: #e9ecef; color: #2d3748; }
.ds-bc-table td { background: #fff; }
.ds-bc-table td.name-cell { max-width: 14rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ds-bc-table td.addr-cell { max-width: 24rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
td.name-cell { max-width: 14rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
td.addr-cell { max-width: 24rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ds-bc-check { width: 14px; height: 14px; }
</style>
@@ -55,17 +51,17 @@
<label class="inline-flex items-center gap-1 cursor-pointer"><input type="checkbox" id="ds-bc-check-all" class="ds-bc-check"> 전체선택</label>
<span class="ml-3">선택 건수: <strong id="ds-bc-selected-count">0</strong></span>
</div>
<div class="overflow-auto border border-gray-300 bg-white">
<table class="ds-bc-table">
<div class="overflow-auto">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="w-14">출력</th>
<th class="w-36">판매소 코드</th>
<th>판매소명</th>
<th class="w-24">대표자명</th>
<th class="w-32">사업자번호</th>
<th>사업장 주소</th>
<th class="w-16">상태</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-14 text-left">출력</th>
<th class="py-2.5 px-2 w-36">판매소 코드</th>
<th class="py-2.5 px-2">판매소명</th>
<th class="py-2.5 px-2 w-24">대표자명</th>
<th class="py-2.5 px-2 w-32">사업자번호</th>
<th class="py-2.5 px-2">사업장 주소</th>
<th class="py-2.5 px-2 w-16 text-left">상태</th>
</tr>
</thead>
<tbody>
@@ -74,18 +70,18 @@
$st = (int) ($row->ds_state ?? 1);
$stLabel = $st === 1 ? '사용' : '정지';
?>
<tr>
<td class="text-center"><input class="ds-bc-row-check ds-bc-check" type="checkbox" name="ds_idx[]" value="<?= (int) $row->ds_idx ?>"></td>
<td class="text-center text-blue-700"><?= esc((string) ($row->ds_shop_no ?? '')) ?></td>
<td class="name-cell text-blue-700" title="<?= esc((string) ($row->ds_name ?? '')) ?>"><?= esc((string) ($row->ds_name ?? '')) ?></td>
<td><?= esc((string) ($row->ds_rep_name ?? '')) ?></td>
<td><?= esc((string) ($row->ds_biz_no ?? '')) ?></td>
<td class="addr-cell" title="<?= esc((string) ($row->ds_addr ?? '')) ?>"><?= esc((string) ($row->ds_addr ?? '')) ?></td>
<td class="<?= $st === 1 ? 'text-blue-700' : 'text-red-600' ?>"><?= esc($stLabel) ?></td>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left"><input class="ds-bc-row-check ds-bc-check" type="checkbox" name="ds_idx[]" value="<?= (int) $row->ds_idx ?>"></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc((string) ($row->ds_shop_no ?? '')) ?></td>
<td class="py-2.5 px-2 name-cell font-medium text-gray-900" title="<?= esc((string) ($row->ds_name ?? '')) ?>"><?= esc((string) ($row->ds_name ?? '')) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc((string) ($row->ds_rep_name ?? '')) ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc((string) ($row->ds_biz_no ?? '')) ?></td>
<td class="py-2.5 px-2 addr-cell text-gray-500" title="<?= esc((string) ($row->ds_addr ?? '')) ?>"><?= esc((string) ($row->ds_addr ?? '')) ?></td>
<td class="py-2.5 px-2 text-left"><span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium <?= $st === 1 ? 'bg-emerald-50 text-emerald-700' : 'bg-gray-100 text-gray-500' ?>"><?= esc($stLabel) ?></span></td>
</tr>
<?php endforeach; ?>
<?php if (empty($list)): ?>
<tr><td colspan="7" class="text-center text-gray-400 py-8">조회된 지정판매소가 없습니다.</td></tr>
<tr><td colspan="7" class="text-center text-gray-400 py-6">조회된 지정판매소가 없습니다.</td></tr>
<?php endif; ?>
</tbody>
</table>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">지정판매소 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form id="designated-shop-create-form" action="<?= mgmt_url('designated-shops/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -29,6 +29,7 @@ $exportUrl = mgmt_url('designated-shops/district-new-cancel/export') . '?' . htt
font-weight: 600;
}
.gbms-dnc-table tbody td.text-left { text-align: left; }
.gbms-dnc-table thead th.gbms-region-head { text-align: left; }
.gbms-dnc-table tbody tr.gbms-total td {
font-weight: 700;
border: 2px solid #c62828;
@@ -144,11 +145,11 @@ $exportUrl = mgmt_url('designated-shops/district-new-cancel/export') . '?' . htt
<div class="mx-2 mt-3 mb-4 gbms-dnc-wrap">
<div class="gbms-dnc-caption">지정 판매소 신규/취소 현황 조회 내역</div>
<div class="overflow-x-auto border border-gray-400 bg-white">
<div class="overflow-x-auto border border-gray-400 rounded-lg bg-white">
<table class="gbms-dnc-table">
<thead>
<tr>
<th rowspan="2" class="min-w-[6rem]">군·구</th>
<th rowspan="2" class="min-w-[6rem] gbms-region-head">군·구</th>
<th rowspan="2">
<span class="gbms-tip">
종전

View File

@@ -20,7 +20,7 @@ $dateField = static function (string $key) use ($shop, $v): string {
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">지정판매소 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form id="designated-shop-edit-form" action="<?= mgmt_url('designated-shops/update/' . (int) $shop->ds_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -223,23 +223,23 @@ $sc = $stateCounts ?? ['total' => 0, 1 => 0, 2 => 0, 3 => 0];
<div class="ds-list-panel">
<div class="ds-panel-title shrink-0">지정판매소 리스트</div>
<div class="overflow-auto flex-1 min-h-0">
<table class="w-full data-table">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="w-14">번호</th>
<th class="w-24">구·군</th>
<th class="w-24">지정일</th>
<th class="w-24">구역</th>
<th class="ds-col-tight">대표자명</th>
<th class="ds-col-tight">상호명</th>
<th class="ds-col-zip">우편번호</th>
<th class="text-left">주소</th>
<th class="w-28">사업자번호</th>
<th class="w-28">전화</th>
<th class="w-16">상태</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-14 text-left">번호</th>
<th class="py-2.5 px-2 w-24">구·군</th>
<th class="py-2.5 px-2 w-24 text-left">지정일</th>
<th class="py-2.5 px-2 w-24">구역</th>
<th class="py-2.5 px-2 ds-col-tight">대표자명</th>
<th class="py-2.5 px-2 ds-col-tight">상호명</th>
<th class="py-2.5 px-2 ds-col-zip text-left">우편번호</th>
<th class="py-2.5 px-2 text-left">주소</th>
<th class="py-2.5 px-2 w-28">사업자번호</th>
<th class="py-2.5 px-2 w-28">전화</th>
<th class="py-2.5 px-2 w-16 text-left">상태</th>
</tr>
</thead>
<tbody id="ds-list-body" class="text-right">
<tbody id="ds-list-body">
<?php foreach ($list as $i => $row): ?>
<?php
$sn = (string) ($row->ds_shop_no ?? '');
@@ -267,18 +267,24 @@ $sc = $stateCounts ?? ['total' => 0, 1 => 0, 2 => 0, 3 => 0];
$addrCombinedList = $addrMainList;
}
?>
<tr class="ds-list-row cursor-pointer" data-row-index="<?= (int) $i ?>" role="button" tabindex="0">
<td class="text-center"><?= esc($shortNo) ?></td>
<td class="text-left pl-1 text-xs"><?= esc($ggLabel) ?></td>
<td class="text-center text-xs"><?= esc($daDisp) ?></td>
<td class="text-left pl-1 text-xs"><?= esc($zone) ?></td>
<td class="text-left pl-1 text-xs ds-col-tight" title="<?= esc($row->ds_rep_name ?? '') ?>"><?= esc($row->ds_rep_name ?? '') ?></td>
<td class="text-left pl-1 text-xs ds-col-tight" title="<?= esc($row->ds_name ?? '') ?>"><?= esc($row->ds_name ?? '') ?></td>
<td class="text-center text-xs ds-col-zip" title="<?= esc($zipList) ?>"><?= esc($zipList) ?></td>
<td class="text-left pl-1 text-xs ds-col-addr-list" title="<?= esc($addrCombinedList) ?>"><?= esc($addrCombinedList) ?></td>
<td class="text-left pl-1 text-xs"><?= esc($row->ds_biz_no ?? '') ?></td>
<td class="text-left pl-1 text-xs"><?= esc($row->ds_tel ?? '') ?></td>
<td class="text-center <?= $st === 2 ? 'text-pink-600 font-medium' : ($st === 3 ? 'text-orange-700' : '') ?>"><?= esc($stLabel) ?></td>
<tr class="ds-list-row cursor-pointer border-b border-gray-200 last:border-0 hover:bg-blue-50/60" data-row-index="<?= (int) $i ?>" role="button" tabindex="0">
<td class="py-2.5 px-2 text-left font-mono text-gray-700"><?= esc($shortNo) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($ggLabel) ?></td>
<td class="py-2.5 px-2 text-left text-gray-500 text-[12px]"><?= esc($daDisp) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($zone) ?></td>
<td class="py-2.5 px-2 text-gray-600 ds-col-tight" title="<?= esc($row->ds_rep_name ?? '') ?>"><?= esc($row->ds_rep_name ?? '') ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900 ds-col-tight" title="<?= esc($row->ds_name ?? '') ?>"><?= esc($row->ds_name ?? '') ?></td>
<td class="py-2.5 px-2 text-left font-mono text-gray-700 ds-col-zip" title="<?= esc($zipList) ?>"><?= esc($zipList) ?></td>
<td class="py-2.5 px-2 text-gray-600 ds-col-addr-list" title="<?= esc($addrCombinedList) ?>"><?= esc($addrCombinedList) ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->ds_biz_no ?? '') ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->ds_tel ?? '') ?></td>
<td class="py-2.5 px-2 text-left">
<?php if ($st === 1): ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-emerald-50 text-emerald-700">정상</span>
<?php elseif ($stLabel !== ''): ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 text-gray-500"><?= esc($stLabel) ?></span>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
@@ -319,7 +325,7 @@ $sc = $stateCounts ?? ['total' => 0, 1 => 0, 2 => 0, 3 => 0];
<th>영업상태</th>
<th>등록일시</th>
<th>변경사유</th>
<th class="no-print w-14">지도</th>
<th class="no-print w-14 text-center">지도</th>
</tr>
</thead>
<tbody>
@@ -497,10 +503,10 @@ $sc = $stateCounts ?? ['total' => 0, 1 => 0, 2 => 0, 3 => 0];
<table class="w-full data-table text-xs">
<thead>
<tr>
<th>번호</th>
<th class="text-center">번호</th>
<th>지자체</th>
<th>구·군</th>
<th>지정일</th>
<th class="text-center">지정일</th>
<th>구역</th>
<th>대표자명</th>
<th>상호명</th>
@@ -510,7 +516,7 @@ $sc = $stateCounts ?? ['total' => 0, 1 => 0, 2 => 0, 3 => 0];
<th>전화</th>
<th>판매소번호</th>
<th>가상계좌</th>
<th>상태</th>
<th class="text-center">상태</th>
<th>등록일</th>
</tr>
</thead>

View File

@@ -40,42 +40,45 @@ $listBasePath = $readOnly ? 'designated-shops/browse' : 'designated-shops';
<a href="<?= mgmt_url($listBasePath) ?>" 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">
<table class="w-full data-table">
<div class="overflow-auto mt-2">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="w-16">번호</th>
<th>지자체</th>
<th>판매소번호</th>
<th>상호명</th>
<th>대표자</th>
<th>사업자번호</th>
<th>가상계좌</th>
<th>상태</th>
<th>등록일</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-16 text-left">번호</th>
<th class="py-2.5 px-2">지자체</th>
<th class="py-2.5 px-2">판매소번호</th>
<th class="py-2.5 px-2">상호명</th>
<th class="py-2.5 px-2">대표자</th>
<th class="py-2.5 px-2">사업자번호</th>
<th class="py-2.5 px-2">가상계좌</th>
<th class="py-2.5 px-2 text-left">상태</th>
<th class="py-2.5 px-2">등록일</th>
<?php if (! $readOnly): ?>
<th class="w-28">작업</th>
<th class="py-2.5 px-2 w-28 text-left">작업</th>
<?php endif; ?>
</tr>
</thead>
<tbody class="text-right">
<tbody>
<?php foreach ($list as $row): ?>
<tr>
<td class="text-center"><?= esc($row->ds_idx) ?></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"><?= 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>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left text-gray-500"><?= esc($row->ds_idx) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($lgMap[$row->ds_lg_idx] ?? '') ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->ds_shop_no) ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->ds_name) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($row->ds_rep_name) ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->ds_biz_no) ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->ds_va_number) ?></td>
<td class="py-2.5 px-2 text-left">
<?php $isActive = (int) $row->ds_state === 1; ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium <?= $isActive ? 'bg-emerald-50 text-emerald-700' : 'bg-gray-100 text-gray-500' ?>"><?= $isActive ? '정상' : ((int) $row->ds_state === 2 ? '폐업' : '직권해지') ?></span>
</td>
<td class="py-2.5 px-2 text-gray-500 text-[12px]"><?= esc($row->ds_regdate ?? '') ?></td>
<?php if (! $readOnly): ?>
<td class="text-center">
<a href="<?= mgmt_url('designated-shops/edit/' . (int) $row->ds_idx) ?>" class="text-blue-600 hover:underline text-sm">수정</a>
<td class="py-2.5 px-2 text-left text-xs">
<a href="<?= mgmt_url('designated-shops/edit/' . (int) $row->ds_idx) ?>" class="text-blue-600 hover:underline">수정</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>
<button type="submit" class="text-red-600 hover:underline">삭제</button>
</form>
</td>
<?php endif; ?>

View File

@@ -5,7 +5,7 @@
<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>
</div>
</section>
<div id="kakao-map" class="w-full border border-gray-300 mt-2" style="height:600px;"></div>
<div id="kakao-map" class="w-full border border-gray-300 rounded-lg mt-2" style="height:600px;"></div>
<div class="mt-2 text-sm text-gray-500">총 <?= count($shops) ?>개 판매소 표시</div>
<script src="//dapi.kakao.com/v2/maps/sdk.js?appkey=<?= esc($kakaoJavascriptKey ?? '', 'attr') ?>&libraries=services"></script>

View File

@@ -13,13 +13,11 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
overflow-y: visible;
-webkit-overflow-scrolling: touch;
scroll-behavior: smooth;
border: 1px solid #ccc;
border-radius: 4px;
background: #fff;
max-width: 100%;
}
@media print {
.ds-status-x-scroll { overflow: visible !important; border: none; }
.ds-status-x-scroll { overflow: visible !important; }
}
.ds-status-x-scroll .ds-status-table {
width: max-content;
@@ -29,15 +27,6 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
.ds-status-x-scroll .ds-status-table th,
.ds-status-x-scroll .ds-status-table td {
white-space: nowrap;
padding: 6px 10px;
font-size: 12px;
}
.ds-status-x-scroll .ds-status-table thead th {
background: #e9ecef;
border: 1px solid #ccc;
}
.ds-status-x-scroll .ds-status-table tbody td {
border: 1px solid #ccc;
}
.ds-status-x-scroll th.sticky-num,
.ds-status-x-scroll td.sticky-num {
@@ -48,25 +37,21 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
max-width: 3rem;
width: 3rem;
box-sizing: border-box;
background: #e9ecef;
border-right: 1px solid #bbb;
box-shadow: 2px 0 4px rgba(0, 0, 0, 0.06);
background: #fff;
}
.ds-status-x-scroll td.sticky-num {
background: #fff;
text-align: center;
}
.ds-status-x-scroll tr.sum-row td.sticky-num {
background: #f3f4f6;
background: #f9fafb;
}
.ds-status-x-scroll th.sticky-region,
.ds-status-x-scroll td.sticky-region {
position: sticky;
left: 3rem;
z-index: 2;
background: #e9ecef;
border-right: 1px solid #bbb;
box-shadow: 2px 0 4px rgba(0, 0, 0, 0.06);
background: #fff;
max-width: 16rem;
text-align: left;
}
@@ -76,7 +61,7 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
text-overflow: ellipsis;
}
.ds-status-x-scroll tr.sum-row td.sticky-region {
background: #f3f4f6;
background: #f9fafb;
}
.ds-help {
position: relative;
@@ -159,39 +144,39 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
<!-- 인쇄 시에도 보이는 본표 -->
<div class="mx-2 mt-2 mb-2 ds-status-x-scroll">
<table class="ds-status-table data-table">
<table class="ds-status-table w-full text-[13px]">
<thead>
<tr>
<th class="sticky-num text-center w-12">순번</th>
<th class="sticky-region"><?= esc($regionColLabel) ?></th>
<th class="text-left">
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="sticky-num py-2.5 px-2 text-center w-12">순번</th>
<th class="sticky-region py-2.5 px-2"><?= esc($regionColLabel) ?></th>
<th class="py-2.5 px-2 text-left">
<span class="ds-help">구코드 <span class="ds-help-badge" tabindex="0" data-tip="지정판매소에 저장된 구·군 코드 값">?</span></span>
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">종전 <span class="ds-help-badge" tabindex="0" data-tip="전년도 12월 31일 기준 정상 상태 판매소 수">?</span></span>(전년도말)
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">지정 <span class="ds-help-badge" tabindex="0" data-tip="<?= esc($ry) ?>년 내 지정일이 속한 신규 지정 건수">?</span></span>(<?= $ry ?>년)
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">취소 <span class="ds-help-badge" tabindex="0" data-tip="<?= esc($ry) ?>년 내 폐업/해지 전환일이 속한 건수">?</span></span>(<?= $ry ?>년)
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">현행 <span class="ds-help-badge" tabindex="0" data-tip="조회년도 12월 31일 기준 정상 상태 판매소 수">?</span></span>(금년도말)
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">증감 <span class="ds-help-badge" tabindex="0" data-tip="현행에서 종전을 뺀 값 (현행−종전)">?</span></span>
<br/><span class="font-normal text-xs">(현행−종전)</span>
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">지정−취소 <span class="ds-help-badge" tabindex="0" data-tip="<?= esc($ry) ?>년 지정 건수에서 취소 건수를 뺀 값">?</span></span>
<br/><span class="font-normal text-xs">(<?= $ry ?>년)</span>
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">현행비중 <span class="ds-help-badge" tabindex="0" data-tip="전체 현행 합계 대비 해당 행 현행 건수의 비율(%)">?</span></span>
<br/><span class="font-normal text-xs">(%)</span>
</th>
<th class="text-right">
<th class="py-2.5 px-2 text-left">
<span class="ds-help">전년대비 <span class="ds-help-badge ds-help-right" tabindex="0" data-tip="((현행−종전) / 종전) × 100, 종전이 0이면 표시 안함">?</span></span>
<br/><span class="font-normal text-xs">증감률(%)</span>
</th>
@@ -207,36 +192,36 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
$pctShare = $sumCurrForPct > 0 ? round(($curr / $sumCurrForPct) * 100, 1) : 0.0;
$yoyPct = $prev > 0 ? round((($curr - $prev) / $prev) * 100, 1) : null;
?>
<tr>
<td class="sticky-num"><?= $rowNo ?></td>
<td class="sticky-region" title="<?= esc($row->region_label) ?>"><?= esc($row->region_label) ?></td>
<td class="text-left text-xs"><?= esc((string) ($row->gugun_code ?? '')) ?></td>
<td><?= number_format($prev) ?></td>
<td><?= number_format((int) $row->designated_y) ?></td>
<td><?= number_format((int) $row->cancelled_y) ?></td>
<td><?= number_format($curr) ?></td>
<td><?= number_format((int) ($row->delta_curr_prev ?? 0)) ?></td>
<td><?= number_format((int) ($row->delta_des_cancel ?? 0)) ?></td>
<td><?= $pctShare ?></td>
<td><?= $yoyPct !== null ? $yoyPct : '—' ?></td>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="sticky-num py-2.5 px-2 text-center text-gray-500"><?= $rowNo ?></td>
<td class="sticky-region py-2.5 px-2 font-medium text-gray-900" title="<?= esc($row->region_label) ?>"><?= esc($row->region_label) ?></td>
<td class="py-2.5 px-2 text-left font-mono text-[12px] text-gray-700"><?= esc((string) ($row->gugun_code ?? '')) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format($prev) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) $row->designated_y) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) $row->cancelled_y) ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= number_format($curr) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) ($row->delta_curr_prev ?? 0)) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) ($row->delta_des_cancel ?? 0)) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= $pctShare ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= $yoyPct !== null ? $yoyPct : '—' ?></td>
</tr>
<?php endforeach; ?>
<?php if (empty($districtRows)): ?>
<tr><td colspan="11" class="text-center text-gray-400 py-6">조건에 맞는 데이터가 없습니다.</td></tr>
<?php endif; ?>
<?php if (! empty($districtRows) && isset($districtTotal)): ?>
<tr class="font-bold bg-gray-50 sum-row">
<td class="sticky-num">—</td>
<td class="sticky-region"><?= esc($districtTotal->region_label) ?></td>
<td class="text-left">—</td>
<td><?= number_format((int) $districtTotal->prev_end) ?></td>
<td><?= number_format((int) $districtTotal->designated_y) ?></td>
<td><?= number_format((int) $districtTotal->cancelled_y) ?></td>
<td><?= number_format((int) $districtTotal->curr_end) ?></td>
<td><?= number_format((int) ($districtTotal->delta_curr_prev ?? 0)) ?></td>
<td><?= number_format((int) ($districtTotal->delta_des_cancel ?? 0)) ?></td>
<td>100</td>
<td>
<tr class="font-bold bg-gray-50 sum-row border-b border-gray-200 last:border-0">
<td class="sticky-num py-2.5 px-2 text-center text-gray-500">—</td>
<td class="sticky-region py-2.5 px-2 text-gray-900"><?= esc($districtTotal->region_label) ?></td>
<td class="py-2.5 px-2 text-left text-gray-500">—</td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) $districtTotal->prev_end) ?></td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) $districtTotal->designated_y) ?></td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) $districtTotal->cancelled_y) ?></td>
<td class="py-2.5 px-2 text-gray-900"><?= number_format((int) $districtTotal->curr_end) ?></td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) ($districtTotal->delta_curr_prev ?? 0)) ?></td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) ($districtTotal->delta_des_cancel ?? 0)) ?></td>
<td class="py-2.5 px-2 text-gray-700">100</td>
<td class="py-2.5 px-2 text-gray-700">
<?php
$tPrev = (int) $districtTotal->prev_end;
$tCurr = (int) $districtTotal->curr_end;
@@ -260,27 +245,27 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
</span>
<?php endforeach; ?>
</div>
<div class="border border-gray-300 bg-white overflow-auto max-h-56">
<table class="w-full data-table text-xs">
<div class="overflow-auto max-h-56">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="text-left">동</th>
<th class="text-right">종전</th>
<th class="text-right">지정</th>
<th class="text-right">취소</th>
<th class="text-right">현행</th>
<th class="text-right">증감</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 text-left">동</th>
<th class="py-2.5 px-2 text-left">종전</th>
<th class="py-2.5 px-2 text-left">지정</th>
<th class="py-2.5 px-2 text-left">취소</th>
<th class="py-2.5 px-2 text-left">현행</th>
<th class="py-2.5 px-2 text-left">증감</th>
</tr>
</thead>
<tbody class="text-right">
<?php foreach ($zoneRows as $z): ?>
<tr>
<td class="text-left"><?= esc((string) $z->zone_label) ?></td>
<td><?= number_format((int) $z->prev_end) ?></td>
<td><?= number_format((int) $z->designated_y) ?></td>
<td><?= number_format((int) $z->cancelled_y) ?></td>
<td><?= number_format((int) $z->curr_end) ?></td>
<td><?= number_format((int) $z->delta_curr_prev) ?></td>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left font-medium text-gray-900"><?= esc((string) $z->zone_label) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) $z->prev_end) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) $z->designated_y) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) $z->cancelled_y) ?></td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) $z->curr_end) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= number_format((int) $z->delta_curr_prev) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
@@ -345,7 +330,7 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
<details class="mx-2 mb-4 no-print text-sm">
<summary class="cursor-pointer text-gray-600 hover:text-gray-800">연도별 요약 (참고)</summary>
<div class="flex gap-4 mt-2">
<div class="border border-gray-300 p-2 flex-1">
<div class="border border-gray-300 rounded-lg p-2 flex-1">
<div class="text-xs font-bold text-gray-700 mb-1">활성 / 비활성 / 전체</div>
<div class="text-sm">활성 <?= number_format((int) ($totalActive ?? 0)) ?> · 비활성 <?= number_format((int) ($totalInactive ?? 0)) ?> · 합 <?= number_format((int) ($totalActive ?? 0) + (int) ($totalInactive ?? 0)) ?></div>
</div>
@@ -353,15 +338,23 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 mt-2">
<div>
<h3 class="text-xs font-bold text-gray-700 mb-1">연도별 신규등록 (지정일)</h3>
<div class="border border-gray-300 overflow-auto max-h-48">
<table class="w-full data-table text-xs">
<thead><tr><th>연도</th><th>건수</th></tr></thead>
<div class="overflow-auto max-h-48">
<table class="w-full text-[13px]">
<thead>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 text-left">연도</th>
<th class="py-2.5 px-2 text-left">건수</th>
</tr>
</thead>
<tbody class="text-right">
<?php foreach (($newByYear ?? []) as $row): ?>
<tr><td class="text-center"><?= esc($row->yr) ?>년</td><td><?= number_format((int) $row->cnt) ?></td></tr>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left font-medium text-gray-900"><?= esc($row->yr) ?>년</td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) $row->cnt) ?></td>
</tr>
<?php endforeach; ?>
<?php if (empty($newByYear)): ?>
<tr><td colspan="2" class="text-center text-gray-400 py-2">없음</td></tr>
<tr><td colspan="2" class="text-center text-gray-400 py-6">없음</td></tr>
<?php endif; ?>
</tbody>
</table>
@@ -369,15 +362,23 @@ $sumCurrForPct = (int) ($districtTotal->curr_end ?? 0);
</div>
<div>
<h3 class="text-xs font-bold text-gray-700 mb-1">연도별 취소/비활성 (등록일 기준)</h3>
<div class="border border-gray-300 overflow-auto max-h-48">
<table class="w-full data-table text-xs">
<thead><tr><th>연도</th><th>건수</th></tr></thead>
<div class="overflow-auto max-h-48">
<table class="w-full text-[13px]">
<thead>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 text-left">연도</th>
<th class="py-2.5 px-2 text-left">건수</th>
</tr>
</thead>
<tbody class="text-right">
<?php foreach (($cancelByYear ?? []) as $row): ?>
<tr><td class="text-center"><?= esc($row->yr) ?>년</td><td><?= number_format((int) $row->cnt) ?></td></tr>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left font-medium text-gray-900"><?= esc($row->yr) ?>년</td>
<td class="py-2.5 px-2 text-gray-700"><?= number_format((int) $row->cnt) ?></td>
</tr>
<?php endforeach; ?>
<?php if (empty($cancelByYear)): ?>
<tr><td colspan="2" class="text-center text-gray-400 py-2">없음</td></tr>
<tr><td colspan="2" class="text-center text-gray-400 py-6">없음</td></tr>
<?php endif; ?>
</tbody>
</table>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">무료용 대상 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('free-recipients/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">무료용 대상 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('free-recipients/update/' . (int) $item->fr_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -8,18 +8,18 @@
</div>
</div>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<div class="overflow-auto mt-2">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="w-16">번호</th>
<th class="w-28">동코드</th>
<th class="w-40">구분</th>
<th>명칭</th>
<th class="w-28">종료일자</th>
<th class="w-48">비고</th>
<th class="w-20">상태</th>
<th class="w-36">작업</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-16 text-left">번호</th>
<th class="py-2.5 px-2 w-28">동코드</th>
<th class="py-2.5 px-2 w-40">구분</th>
<th class="py-2.5 px-2">명칭</th>
<th class="py-2.5 px-2 w-28 text-left">종료일자</th>
<th class="py-2.5 px-2 w-48">비고</th>
<th class="py-2.5 px-2 w-20 text-left">상태</th>
<th class="py-2.5 px-2 w-36 text-left">작업</th>
</tr>
</thead>
<tbody>
@@ -36,19 +36,25 @@
$dongCode = (string) ($row->fr_dong_code ?? '');
$dongLabel = $dongCode !== '' ? (string) (($dongNameMap[$dongCode] ?? $dongCode) . ' (' . $dongCode . ')') : '-';
?>
<tr>
<td class="text-center"><?= esc((string) $rowNo) ?></td>
<td class="text-center"><?= esc($dongLabel) ?></td>
<td class="text-center"><?= esc($typeName) ?></td>
<td class="text-left pl-2"><?= esc($row->fr_name) ?></td>
<td class="text-center"><?= esc($row->fr_end_date ?: '9999.99.99') ?></td>
<td class="text-left pl-2"><?= esc($row->fr_note) ?></td>
<td class="text-center"><?= (int) $row->fr_state === 1 ? '사용' : '미사용' ?></td>
<td class="text-center">
<a href="<?= mgmt_url('free-recipients/edit/' . (int) $row->fr_idx) ?>" class="text-blue-600 hover:underline text-sm mr-1">수정</a>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left text-gray-500"><?= esc((string) $rowNo) ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($dongLabel) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($typeName) ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->fr_name) ?></td>
<td class="py-2.5 px-2 text-left text-gray-500 text-[12px]"><?= esc($row->fr_end_date ?: '9999.99.99') ?></td>
<td class="py-2.5 px-2 text-gray-500"><?= esc($row->fr_note) ?></td>
<td class="py-2.5 px-2 text-left">
<?php if ((int) $row->fr_state === 1): ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-emerald-50 text-emerald-700">사용</span>
<?php else: ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 text-gray-500">미사용</span>
<?php endif; ?>
</td>
<td class="py-2.5 px-2 text-left text-xs">
<a href="<?= mgmt_url('free-recipients/edit/' . (int) $row->fr_idx) ?>" class="text-blue-600 hover:underline mr-1">수정</a>
<form action="<?= mgmt_url('free-recipients/delete/' . (int) $row->fr_idx) ?>" method="POST" class="inline" onsubmit="return confirm('삭제하시겠습니까?');">
<?= csrf_field() ?>
<button type="submit" class="text-red-600 hover:underline text-sm">삭제</button>
<button type="submit" class="text-red-600 hover:underline">삭제</button>
</form>
</td>
</tr>
@@ -56,7 +62,7 @@
<?php endforeach; ?>
<?php if (empty($list)): ?>
<tr>
<td colspan="8" class="text-center text-gray-500 py-4 text-sm space-y-1">
<td colspan="8" class="text-center text-gray-400 py-6 space-y-1">
<p>등록된 데이터가 없습니다.</p>
<p class="text-gray-400">다른 지자체를 선택 중이면 해당 지자체 기준으로만 조회됩니다. Super Admin 은 상단에서 작업 지자체를 바꿔 보세요.</p>
</td>

View File

@@ -85,10 +85,12 @@ tailwind.config = {
<?php include __DIR__ . '/../home/_dashboard_gov_portal_topnav_css.php'; ?>
<?php include __DIR__ . '/../home/_dashboard_gov_portal_chrome_css.php'; ?>
.data-table { width: 100%; border-collapse: collapse; font-family: 'Pretendard', 'Malgun Gothic', 'Noto Sans KR', sans-serif; }
.data-table th, .data-table td { border: 1px solid #ccc; padding: 4px 8px; white-space: nowrap; font-size: 13px; }
.data-table th { background-color: #e9ecef; text-align: center; vertical-align: middle; font-weight: bold; color: #333; }
.data-table tbody tr:nth-child(even) td { background-color: #f9f9f9; }
.data-table tbody tr:hover td { background-color: #e6f7ff !important; }
.data-table { font-size: 13px; }
.data-table th, .data-table td { text-align: left; padding: 0.55rem 0.5rem; white-space: nowrap; border: 0; border-bottom: 1px solid #e5e7eb; }
.data-table thead th { font-size: 0.6875rem; font-weight: 600; color: #6b7280; background: transparent; vertical-align: middle; }
.data-table tbody td { color: #374151; }
.data-table tbody tr:last-child td { border-bottom: 0; }
.data-table tbody tr:hover td { background-color: #f9fafb; }
@media print {
.portal-header, .sidebar, .portal-footer, .no-print, nav.portal-top-nav { display: none !important; }
body.gov-portal-shell { background: #fff; display: block; }

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">지자체 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-xl">
<form action="<?= base_url('admin/local-governments/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">지자체 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= base_url('admin/local-governments/update/' . (int) $item->lg_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -8,18 +8,18 @@
</div>
</div>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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>등록일</th>
<th class="w-28">작업</th>
<th class="w-16 text-center">번호</th>
<th class="text-left">지자체명</th>
<th class="text-left">코드</th>
<th class="text-left">시/도</th>
<th class="text-left">구/군</th>
<th class="text-center">상태</th>
<th class="text-left">등록일</th>
<th class="w-28 text-center">작업</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">담당자 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('managers/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">담당자 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('managers/update/' . (int) $item->mg_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -21,47 +21,53 @@
<a href="<?= mgmt_url('managers') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<div class="overflow-auto mt-2">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="w-16">번호</th>
<th>담당자명</th>
<th>카테고리</th>
<th>전화</th>
<th>휴대전화</th>
<th>이메일</th>
<th class="w-20">상태</th>
<th class="w-36">작업</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-16 text-left">번호</th>
<th class="py-2.5 px-2">담당자명</th>
<th class="py-2.5 px-2">카테고리</th>
<th class="py-2.5 px-2">전화</th>
<th class="py-2.5 px-2">휴대전화</th>
<th class="py-2.5 px-2">이메일</th>
<th class="py-2.5 px-2 w-20 text-left">상태</th>
<th class="py-2.5 px-2 w-36 text-left">작업</th>
</tr>
</thead>
<tbody>
<?php foreach ($list as $row): ?>
<tr>
<td class="text-center"><?= esc($row->mg_idx) ?></td>
<td class="text-center"><?= esc($row->mg_name) ?></td>
<td class="text-center">
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left font-mono text-gray-700"><?= esc($row->mg_idx) ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->mg_name) ?></td>
<td class="py-2.5 px-2">
<?php
$cat = (string) ($row->mg_dept_code ?? '');
$catLabel = $categories[$cat] ?? $cat;
echo esc($catLabel);
?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 text-gray-500"><?= esc($catLabel) ?></span>
</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>
<td class="text-center"><?= (int) $row->mg_state === 1 ? '사용' : '미사용' ?></td>
<td class="text-center">
<a href="<?= mgmt_url('managers/edit/' . (int) $row->mg_idx) ?>" class="text-blue-600 hover:underline text-sm mr-1">수정</a>
<td class="py-2.5 px-2 text-gray-600"><?= esc($row->mg_tel) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($row->mg_phone) ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($row->mg_email) ?></td>
<td class="py-2.5 px-2 text-left">
<?php if ((int) $row->mg_state === 1): ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-emerald-50 text-emerald-700">사용</span>
<?php else: ?>
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 text-gray-500">미사용</span>
<?php endif; ?>
</td>
<td class="py-2.5 px-2 text-left text-xs">
<a href="<?= mgmt_url('managers/edit/' . (int) $row->mg_idx) ?>" class="text-blue-600 hover:underline mr-1">수정</a>
<form action="<?= mgmt_url('managers/delete/' . (int) $row->mg_idx) ?>" method="POST" class="inline" onsubmit="return confirm('삭제하시겠습니까?');">
<?= csrf_field() ?>
<button type="submit" class="text-red-600 hover:underline text-sm">삭제</button>
<button type="submit" class="text-red-600 hover:underline">삭제</button>
</form>
</td>
</tr>
<?php endforeach; ?>
<?php if (empty($list)): ?>
<tr><td colspan="8" class="text-center text-gray-400 py-4">등록된 데이터가 없습니다.</td></tr>
<tr><td colspan="8" class="text-center text-gray-400 py-6">등록된 데이터가 없습니다.</td></tr>
<?php endif; ?>
</tbody>
</table>

View File

@@ -76,12 +76,12 @@ $adminMenuListResolveHref = static function (string $rawLink) use ($menuListReso
<thead>
<tr>
<th class="w-20 text-center text-xs font-medium text-gray-600">순서변경</th>
<th class="w-10">#</th>
<th>메뉴명</th>
<th>링크</th>
<th>노출 대상</th>
<th>사용</th>
<th class="w-24">작업</th>
<th class="w-10 text-center">#</th>
<th class="text-left">메뉴명</th>
<th class="text-left">링크</th>
<th class="text-left">노출 대상</th>
<th class="text-center">사용</th>
<th class="w-24 text-center">작업</th>
</tr>
</thead>
<tbody>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">포장 단위 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('packaging-units/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">포장 단위 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('packaging-units/update/' . (int) $item->pu_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -5,7 +5,7 @@
<span class="text-sm font-bold text-gray-700">변경 이력 <?= esc($item->pu_bag_name) ?> (<?= esc($item->pu_bag_code) ?>)</span>
</div>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto mt-2">
<?php
$fieldLabelMap = [
'pu_box_per_pack' => '박스당 팩 수',
@@ -18,11 +18,11 @@
<table class="w-full data-table">
<thead>
<tr>
<th class="w-16">번호</th>
<th>변경 내용</th>
<th>이전 값</th>
<th>변경 값</th>
<th>변경일시</th>
<th class="w-16 text-center">번호</th>
<th class="text-left">변경 내용</th>
<th class="text-right">이전 값</th>
<th class="text-right">변경 값</th>
<th class="text-center">변경일시</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -18,20 +18,20 @@
<a href="<?= mgmt_url('packaging-units') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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>1박스 총 낱장</th>
<th>적용시작</th>
<th>적용종료</th>
<th class="w-20">상태</th>
<th class="w-36">작업</th>
<th class="w-16 text-center">번호</th>
<th class="text-center">봉투코드</th>
<th class="text-left">봉투명</th>
<th class="text-right">박스당 팩 수</th>
<th class="text-right">팩당 낱장 수</th>
<th class="text-right">1박스 총 낱장</th>
<th class="text-center">적용시작</th>
<th class="text-center">적용종료</th>
<th class="w-20 text-center">상태</th>
<th class="w-36 text-center">작업</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">비밀번호 변경</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-md">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-md">
<form action="<?= mgmt_url('password-change') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,13 +1,13 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">역할 (mb_level)</span>
</section>
<div class="border border-gray-300 p-4 mt-2">
<div class="border border-gray-300 rounded-lg p-4 mt-2">
<p class="text-sm text-gray-600 mb-4">Config\Roles 기반 역할 목록입니다.</p>
<table class="w-full data-table">
<thead>
<tr>
<th class="w-24">코드</th>
<th>이름</th>
<th class="w-24 text-center">코드</th>
<th class="text-left">이름</th>
</tr>
</thead>
<tbody>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">대행소 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('sales-agencies/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">대행소 수정</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-3xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-3xl">
<form action="<?= mgmt_url('sales-agencies/update/' . (int) $item->sa_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>

View File

@@ -8,7 +8,7 @@
</div>
</div>
</section>
<section class="no-print border border-gray-300 bg-white p-2 mt-2">
<section class="no-print border border-gray-300 rounded-lg 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>
@@ -32,15 +32,15 @@
</div>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<table class="w-full data-table">
<div class="overflow-auto mt-2">
<table class="w-full text-[13px]">
<thead>
<tr>
<th class="w-16">번호</th>
<th>대행소 구분</th>
<th>대행소 코드</th>
<th>대행소 명</th>
<th class="w-36">작업</th>
<tr class="text-left text-[11px] font-semibold text-gray-500 border-b border-gray-200">
<th class="py-2.5 px-2 w-16 text-left">번호</th>
<th class="py-2.5 px-2">대행소 구분</th>
<th class="py-2.5 px-2">대행소 코드</th>
<th class="py-2.5 px-2">대행소 명</th>
<th class="py-2.5 px-2 w-36 text-left">작업</th>
</tr>
</thead>
<tbody>
@@ -53,22 +53,22 @@
}
?>
<?php foreach (($list ?? []) as $idx => $row): ?>
<tr>
<td class="text-center"><?= (int) $startNo + (int) $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">
<a href="<?= mgmt_url('sales-agencies/edit/' . (int) $row->sa_idx) ?>" class="text-blue-600 hover:underline text-sm mr-1">수정</a>
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
<td class="py-2.5 px-2 text-left text-gray-500"><?= (int) $startNo + (int) $idx ?></td>
<td class="py-2.5 px-2 text-gray-600"><?= esc($row->sa_kind ?? '') ?></td>
<td class="py-2.5 px-2 font-mono text-gray-700"><?= esc($row->sa_code ?? '') ?></td>
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->sa_name) ?></td>
<td class="py-2.5 px-2 text-left text-xs">
<a href="<?= mgmt_url('sales-agencies/edit/' . (int) $row->sa_idx) ?>" class="text-blue-600 hover:underline 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>
<button type="submit" class="text-red-600 hover:underline">삭제</button>
</form>
</td>
</tr>
<?php endforeach; ?>
<?php if (empty($list)): ?>
<tr><td colspan="5" class="text-center text-gray-400 py-4">등록된 데이터가 없습니다.</td></tr>
<tr><td colspan="5" class="text-center text-gray-400 py-6">등록된 데이터가 없습니다.</td></tr>
<?php endif; ?>
</tbody>
</table>

View File

@@ -80,12 +80,12 @@ $excelUrl = mgmt_url('reports/daily-summary?' . http_build_query($exportParams))
<p class="text-xs text-gray-500 m-0">누계(월): <?= esc(($monthStart ?? '') . ' ~ ' . ($date ?? '')) ?> · (단위: 매 / 원)</p>
</div>
<div class="border border-gray-300 overflow-auto">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto">
<table class="w-full data-table text-sm" id="daily-summary-table">
<thead>
<tr>
<th rowspan="2" class="align-middle">구분</th>
<th rowspan="2" class="align-middle">봉투종류</th>
<th rowspan="2" class="align-middle text-left">구분</th>
<th rowspan="2" class="align-middle text-left">봉투종류</th>
<th colspan="4" class="text-center border-l border-gray-300">일계</th>
<th colspan="4" class="text-center border-l border-gray-300">누계(월)</th>
</tr>

View File

@@ -254,7 +254,7 @@ $hometaxRenderTable = static function (
}
</style>
<div class="text-sm font-semibold text-gray-700 mb-2 no-print">조회결과</div>
<div class="hometax-screen-only hometax-scroll-wrap overflow-x-auto border border-gray-300" style="max-width: 100%;">
<div class="hometax-screen-only hometax-scroll-wrap overflow-x-auto border border-gray-300 rounded-lg" style="max-width: 100%;">
<?php
$hometaxRenderTable(
range(0, max(0, $colCount - 1)),

View File

@@ -114,7 +114,7 @@ if ($bagName !== '' || $bagCode !== '') {
<div class="lot-flow-layout m-2 flex flex-col lg:flex-row gap-3 min-h-[320px]">
<!-- 좌: 품목·단위 요약 (레거시 BOX/PACK/낱장) -->
<div class="lot-flow-summary border border-gray-300 bg-gray-50 p-3 lg:w-64 shrink-0">
<div class="lot-flow-summary border border-gray-300 rounded-lg bg-gray-50 p-3 lg:w-64 shrink-0">
<h3 class="text-sm font-bold text-gray-700 mb-2">봉투 정보</h3>
<?php if ($ok): ?>
<dl class="text-sm space-y-1.5">
@@ -157,7 +157,7 @@ if ($bagName !== '' || $bagCode !== '') {
</div>
<!-- 우: LOT 수불 현황 -->
<div class="lot-flow-table-wrap flex-1 border border-gray-300 flex flex-col min-w-0">
<div class="lot-flow-table-wrap flex-1 border border-gray-300 rounded-lg flex flex-col min-w-0">
<div class="bg-gray-100 border-b border-gray-300 px-3 py-1.5">
<span class="text-sm font-bold text-gray-700">LOT 수불 현황</span>
</div>
@@ -165,7 +165,7 @@ if ($bagName !== '' || $bagCode !== '') {
<table class="w-full data-table text-sm">
<thead>
<tr>
<th class="w-28">일자</th>
<th class="w-28 text-center">일자</th>
<th>입출고처</th>
<th class="w-24 text-center">구분</th>
</tr>

View File

@@ -111,15 +111,15 @@ $registerReason = $selectedGroup ? (string) ($selectedGroup['reason'] ?? '') : '
<div class="grid grid-cols-1 xl:grid-cols-4 gap-2 p-2">
<!-- 입출고 리스트 -->
<section class="border border-gray-300 bg-white xl:col-span-1">
<section class="border border-gray-300 rounded-lg bg-white xl:col-span-1">
<div class="border-b border-gray-300 bg-gray-50 px-2 py-1 text-sm font-bold text-gray-700">입출고 리스트</div>
<div class="overflow-auto max-h-[520px]">
<table class="w-full data-table text-sm">
<thead>
<tr>
<th class="w-24">수불일자</th>
<th class="w-16">수량</th>
<th class="w-14">구분</th>
<th class="w-24 text-center">수불일자</th>
<th class="w-16 text-right">수량</th>
<th class="w-14 text-center">구분</th>
<th>메모</th>
</tr>
</thead>
@@ -187,7 +187,7 @@ $registerReason = $selectedGroup ? (string) ($selectedGroup['reason'] ?? '') : '
</form>
<!-- 입출고 일자 (상세) -->
<section class="border border-gray-300 bg-white">
<section class="border border-gray-300 rounded-lg bg-white">
<div class="border-b border-gray-300 bg-gray-50 px-2 py-1 text-sm font-bold text-gray-700">입출고 일자</div>
<div class="p-2 grid grid-cols-1 md:grid-cols-2 gap-3 text-sm">
<?php if ($selectedGroup): ?>
@@ -216,17 +216,17 @@ $registerReason = $selectedGroup ? (string) ($selectedGroup['reason'] ?? '') : '
</section>
<!-- 입출고 봉투 코드 -->
<section class="border border-gray-300 bg-white">
<section class="border border-gray-300 rounded-lg bg-white">
<div class="border-b border-gray-300 bg-gray-50 px-2 py-1 text-sm font-bold text-gray-700">입출고 봉투 코드</div>
<div class="overflow-auto max-h-[280px]">
<table class="w-full data-table text-sm">
<thead>
<tr>
<th class="w-10">No</th>
<th>봉투 코드</th>
<th>봉투 종류</th>
<th class="w-20">수량</th>
<th class="w-14">단위</th>
<th class="w-10 text-center">No</th>
<th class="text-center">봉투 코드</th>
<th class="text-left">봉투 종류</th>
<th class="w-20 text-right">수량</th>
<th class="w-14 text-center">단위</th>
</tr>
</thead>
<tbody class="text-right">
@@ -265,7 +265,7 @@ $registerReason = $selectedGroup ? (string) ($selectedGroup['reason'] ?? '') : '
<!-- 품목 등록 (동일 수불일자·구분·비고로 묶임) -->
<?php if ($tableExists ?? false): ?>
<section class="border border-gray-300 bg-white no-print">
<section class="border border-gray-300 rounded-lg bg-white no-print">
<div class="border-b border-gray-300 bg-gray-50 px-2 py-1 text-sm font-bold text-gray-700">품목 등록</div>
<form method="post" action="<?= mgmt_url('reports/misc-flow') ?>" class="p-2 flex flex-wrap items-end gap-2 text-sm">
<?= csrf_field() ?>

View File

@@ -116,12 +116,12 @@ $rowClass = static function (string $kind): string {
<p class="text-xs text-gray-500 m-0">집계: <?= $byDaily ? '일자별' : '기간별' ?> · (단위: 매 / 원)</p>
</div>
<div class="border border-gray-300 overflow-auto">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto">
<table class="w-full data-table text-sm" id="period-sales-table">
<thead>
<tr>
<?php if ($byDaily): ?>
<th rowspan="2" class="align-middle whitespace-nowrap">일자</th>
<th rowspan="2" class="align-middle whitespace-nowrap text-center">일자</th>
<?php endif; ?>
<th rowspan="2" class="align-middle text-left pl-2">품목</th>
<th colspan="4" class="text-center border-l border-gray-300">판매</th>

View File

@@ -114,11 +114,11 @@ $tipPage = "지정판매소 반품·물류 입고분 파기 내역을 기간·
</div>
<?php endif; ?>
<div class="border border-gray-300 overflow-auto m-2 print:m-0">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto m-2 print:m-0">
<table class="w-full data-table text-sm">
<thead>
<tr>
<th class="w-28">일자</th>
<th class="w-28 text-center">일자</th>
<th>반품처</th>
<th>종류</th>
<th class="w-24 text-right">수량</th>

View File

@@ -188,16 +188,16 @@ $excelUrl = mgmt_url('reports/sales-ledger?' . http_build_query($exportParams));
<p class="text-xs text-gray-500 m-0">(단위: 매 / 원) · <?= esc($startDate) ?> ~ <?= esc($endDate) ?></p>
</div>
<div class="sales-ledger-scroll-wrap border border-gray-300 overflow-auto">
<div class="sales-ledger-scroll-wrap border border-gray-300 rounded-lg p-4 overflow-auto">
<table class="w-full data-table text-sm <?= ($mode ?? 'daily') === 'period' ? 'sl-period' : '' ?>" id="sales-ledger-table">
<thead>
<tr>
<?php if (($mode ?? 'daily') === 'daily'): ?>
<th class="sl-col-date">일자</th>
<th class="sl-col-date text-center">일자</th>
<?php endif; ?>
<th class="sl-col-designation">지정번호</th>
<th class="sl-col-designation text-center">지정번호</th>
<th class="sl-col-shop text-left">판매소명</th>
<th class="sl-col-rep">대표자</th>
<th class="sl-col-rep text-center">대표자</th>
<th class="sl-col-addr text-left">소재지</th>
<th class="sl-col-product text-left">품명</th>
<th class="text-right sl-col-num">판매량</th>

View File

@@ -154,7 +154,7 @@ $colCount = 16;
<p class="text-xs text-gray-500 m-0"><?= $isAmt ? '(단위: 원)' : '(단위: 매)' ?></p>
</div>
<div class="shop-sales-scroll-wrap border border-gray-300 overflow-x-auto">
<div class="shop-sales-scroll-wrap border border-gray-300 rounded-lg p-4 overflow-x-auto">
<table class="w-full data-table text-xs" id="shop-sales-table">
<colgroup>
<col style="width: 14%;"/>
@@ -168,11 +168,11 @@ $colCount = 16;
<thead>
<tr>
<th class="text-left pl-2">지정판매소</th>
<th>대표자명</th>
<th class="text-center">대표자명</th>
<th class="text-left pl-1">주소</th>
<th>합계</th>
<th class="text-right">합계</th>
<?php for ($m = 1; $m <= 12; $m++): ?>
<th><?= $m ?>월</th>
<th class="text-right"><?= $m ?>월</th>
<?php endfor; ?>
</tr>
</thead>

View File

@@ -106,7 +106,7 @@ $printExtraLines = [
<?php endif; ?>
<div class="supply-plan-print-sheet">
<div class="supply-plan-print m-2 border border-gray-300 overflow-auto print:m-0">
<div class="supply-plan-print m-2 border border-gray-300 rounded-lg p-4 overflow-auto print:m-0">
<table class="w-full data-table text-sm supply-plan-table">
<thead>
<tr class="bg-gray-100">

View File

@@ -144,7 +144,7 @@ $fmtMeasureCell = static function (array $cell, string $measureKey, bool $hasBsF
<p class="text-xs text-gray-500 m-0">(단위: 매 / 원)</p>
</div>
<div class="yearly-sales-scroll-wrap border border-gray-300 overflow-x-auto">
<div class="yearly-sales-scroll-wrap border border-gray-300 rounded-lg p-4 overflow-x-auto">
<table class="w-full data-table text-xs sm:text-sm" id="yearly-sales-table">
<colgroup>
<col style="width: 9%;"/>
@@ -158,7 +158,7 @@ $fmtMeasureCell = static function (array $cell, string $measureKey, bool $hasBsF
<th class="align-middle min-w-0 sm:min-w-[7rem] max-w-[10rem] sm:max-w-[12rem] text-left pl-2">품목</th>
<th class="align-middle min-w-0 sm:min-w-[4.5rem]">구분</th>
<?php foreach ($colSpec ?? [] as $col): ?>
<th class="align-middle text-center min-w-0 sm:min-w-[4.5rem] border-l border-gray-200"><?= esc((string) ($col['label'] ?? '')) ?></th>
<th class="align-middle text-right min-w-0 sm:min-w-[4.5rem] border-l border-gray-200"><?= esc((string) ($col['label'] ?? '')) ?></th>
<?php endforeach; ?>
</tr>
</thead>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<p class="text-sm text-gray-700 mb-2">관리자 페이지에서 사용할 지자체를 선택하세요. 선택한 지자체 기준으로 목록·등록이 표시됩니다.</p>
</section>
<div class="border border-gray-300 overflow-auto mt-2 p-4">
<div class="border border-gray-300 rounded-lg overflow-auto mt-2 p-4">
<?php if (empty($list)): ?>
<p class="text-gray-600 py-4">등록된 지자체가 없습니다. <a href="<?= base_url('admin/local-governments') ?>" class="text-blue-600 hover:underline">지자체 관리</a>에서 먼저 등록하세요.</p>
<?php else: ?>

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">주문 접수</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white">
<form action="<?= mgmt_url('shop-orders/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4">
@@ -38,7 +38,7 @@
</select>
</div>
</div>
<div class="border border-gray-300 p-2 bg-gray-50">
<div class="border border-gray-300 rounded-lg p-2 bg-gray-50">
<div class="text-sm font-bold text-gray-700 mb-2">지정판매소 정보</div>
<table class="w-full text-sm">
<tr><th class="text-left w-28 py-1">판매소 코드</th><td id="shop-info-code" class="py-1 text-gray-700">-</td></tr>
@@ -73,19 +73,19 @@
<label class="block text-sm font-bold text-gray-700">전화 주문 접수표</label>
<button type="button" id="add-order-row" class="border border-gray-300 bg-white px-3 py-1 rounded-sm text-xs text-gray-700 hover:bg-gray-50">행 추가</button>
</div>
<div class="border border-gray-300 overflow-auto">
<div class="border border-gray-300 rounded-lg p-4 overflow-auto">
<table class="w-full data-table text-sm">
<thead>
<tr>
<th class="w-14">순번</th>
<th class="w-48">품목</th>
<th class="w-36">1박스(낱장/판매가)</th>
<th class="w-36">1팩(낱장/판매가)</th>
<th class="w-24">단가</th>
<th class="w-28">주문수량</th>
<th class="w-28">금액</th>
<th class="w-32">포장(박스/팩/낱장)</th>
<th class="w-20">행삭제</th>
<th class="w-14 text-center">순번</th>
<th class="w-48 text-left">품목</th>
<th class="w-36 text-right">1박스(낱장/판매가)</th>
<th class="w-36 text-right">1팩(낱장/판매가)</th>
<th class="w-24 text-right">단가</th>
<th class="w-28 text-right">주문수량</th>
<th class="w-28 text-right">금액</th>
<th class="w-32 text-right">포장(박스/팩/낱장)</th>
<th class="w-20 text-center">행삭제</th>
</tr>
</thead>
<tbody id="order-rows">

View File

@@ -18,22 +18,22 @@
<a href="<?= mgmt_url('shop-orders') ?>" class="text-sm text-gray-500 hover:underline">초기화</a>
</form>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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>입금</th>
<th>수령</th>
<th>수량</th>
<th>금액</th>
<th class="w-20">상태</th>
<th class="w-24">작업</th>
<th class="w-16 text-center">번호</th>
<th class="text-left">판매소</th>
<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>
<th class="text-center">수령</th>
<th class="text-right">수량</th>
<th class="text-right">금액</th>
<th class="w-20 text-center">상태</th>
<th class="w-24 text-center">작업</th>
</tr>
</thead>
<tbody class="text-right">

View File

@@ -1,7 +1,7 @@
<section class="border-b border-gray-300 p-2 shrink-0 bg-control-panel">
<span class="text-sm font-bold text-gray-700">회원 등록</span>
</section>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-xl">
<form action="<?= base_url('admin/users/store') ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>
<div class="flex flex-wrap items-center gap-2">

View File

@@ -14,7 +14,7 @@ $editLoginLocked = $editLockUntil !== null && $editLockUntil !== '' && strtotime
</form>
</div>
<?php endif; ?>
<div class="border border-gray-300 p-4 mt-2 bg-white max-w-xl">
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-xl">
<form action="<?= base_url('admin/users/update/' . $member->mb_idx) ?>" method="POST" class="space-y-4">
<?= csrf_field() ?>
<div class="flex flex-wrap items-center gap-2">

View File

@@ -8,19 +8,19 @@
</div>
</div>
</section>
<div class="border border-gray-300 overflow-auto mt-2">
<div class="border border-gray-300 rounded-lg p-4 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>로그인 잠금</th>
<th>가입일</th>
<th>관리</th>
<th class="w-16 text-center">번호</th>
<th class="text-left">아이디</th>
<th class="text-left">이름</th>
<th class="text-left">이메일</th>
<th class="text-center">역할</th>
<th class="text-center">상태</th>
<th class="text-left">로그인 잠금</th>
<th class="text-left">가입일</th>
<th class="text-center">관리</th>
</tr>
</thead>
<tbody class="text-right">