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:
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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 ?>"/>
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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">
|
||||
종전
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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; ?>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)),
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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() ?>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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: ?>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -79,16 +79,16 @@ $prevAvgLabel = ($trendBasis ?? '') === 'month' ? '전년 동월' : '전년 평
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="m-2 border border-gray-300">
|
||||
<div class="m-2 border border-gray-300 rounded-lg">
|
||||
<div class="bg-gray-100 px-3 py-1.5 text-sm font-bold border-b">월별 판매 추이 분석 조회 내역</div>
|
||||
<div class="overflow-auto max-h-[28rem]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>대행소</th>
|
||||
<th class="w-24">판매소번호</th>
|
||||
<th class="w-24 text-center">판매소번호</th>
|
||||
<th>지정판매소</th>
|
||||
<th class="w-20">성명</th>
|
||||
<th class="w-20 text-center">성명</th>
|
||||
<th class="w-20 text-right"><?= esc($prevAvgLabel) ?></th>
|
||||
<th class="w-20 text-right">월 판매량</th>
|
||||
<th class="w-20 text-right">평균 차</th>
|
||||
|
||||
@@ -59,7 +59,7 @@ $seasonScope = $seasonMonthsLabel !== ''
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div class="m-2 border border-gray-300">
|
||||
<div class="m-2 border border-gray-300 rounded-lg">
|
||||
<div class="bg-gray-100 px-3 py-1.5 text-sm font-bold border-b">
|
||||
계절별 판매 추이 분석 조회 내역
|
||||
<?php if ($queried): ?> — <?= esc($seasonScope) ?><?php endif; ?>
|
||||
@@ -70,8 +70,8 @@ $seasonScope = $seasonMonthsLabel !== ''
|
||||
<tr>
|
||||
<th>대행소</th>
|
||||
<th>지정판매소</th>
|
||||
<th class="w-24">판매소번호</th>
|
||||
<th class="w-20">성명</th>
|
||||
<th class="w-24 text-center">판매소번호</th>
|
||||
<th class="w-20 text-center">성명</th>
|
||||
<th class="w-24 text-right">전년 계절평균</th>
|
||||
<th class="w-24 text-right">기준년 계절평균</th>
|
||||
<th class="w-20 text-right">평균 차</th>
|
||||
|
||||
@@ -36,18 +36,18 @@ $printExtra = [
|
||||
</section>
|
||||
|
||||
|
||||
<div class="m-2 border border-gray-300 overflow-auto">
|
||||
<div class="m-2 border border-gray-300 rounded-lg p-4 overflow-auto">
|
||||
<p class="text-center text-sm font-bold py-2 bg-gray-50 border-b">전년대비 판매 통계분석</p>
|
||||
<p class="text-xs text-gray-500 px-2 py-1 border-b">(단위: 매, 원) · <strong>판매(sale)</strong> 수량·금액만 집계합니다(반품·취소 제외). 증감은 전년·당해 판매량(또는 금액) 차이입니다.</p>
|
||||
<table class="w-full data-table text-xs">
|
||||
<thead>
|
||||
<tr>
|
||||
<th rowspan="2" class="w-32">품목</th>
|
||||
<th rowspan="2" class="w-14">구분</th>
|
||||
<th rowspan="2" class="w-12">년도</th>
|
||||
<th rowspan="2" class="w-16">계</th>
|
||||
<th rowspan="2" class="w-14 text-center">구분</th>
|
||||
<th rowspan="2" class="w-12 text-center">년도</th>
|
||||
<th rowspan="2" class="w-16 text-right">계</th>
|
||||
<?php foreach ($months as $mo): ?>
|
||||
<th class="w-14"><?= (int) $mo ?>월</th>
|
||||
<th class="w-14 text-right"><?= (int) $mo ?>월</th>
|
||||
<?php endforeach; ?>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -28,19 +28,19 @@ if (isset($pager) && $pager !== null) {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="border border-gray-300 overflow-auto">
|
||||
<div class="border border-gray-300 rounded-lg p-4 overflow-auto">
|
||||
<table class="data-table w-full">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-16">번호</th>
|
||||
<th class="w-24">코드</th>
|
||||
<th class="w-16 text-center">번호</th>
|
||||
<th class="w-24 text-center">코드</th>
|
||||
<th>코드명</th>
|
||||
<th class="w-24">범위</th>
|
||||
<th class="w-20">정렬순서</th>
|
||||
<th class="w-20">상태</th>
|
||||
<th class="w-24 text-center">범위</th>
|
||||
<th class="w-20 text-center">정렬순서</th>
|
||||
<th class="w-20 text-center">상태</th>
|
||||
<th>등록일</th>
|
||||
<?php if ($showActionsCol): ?>
|
||||
<th class="w-28">작업</th>
|
||||
<th class="w-28 text-center">작업</th>
|
||||
<?php endif; ?>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@@ -35,14 +35,14 @@ $stateBadge = static function (int $state): string {
|
||||
<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 w-12 text-center">번호</th>
|
||||
<th class="py-2.5 px-2 w-12 text-left">번호</th>
|
||||
<th class="py-2.5 px-2 w-20">코드</th>
|
||||
<th class="py-2.5 px-2">코드명</th>
|
||||
<th class="py-2.5 px-2 w-20 text-center">세부코드</th>
|
||||
<th class="py-2.5 px-2 w-16 text-center">상태</th>
|
||||
<th class="py-2.5 px-2 w-20 text-left">세부코드</th>
|
||||
<th class="py-2.5 px-2 w-16 text-left">상태</th>
|
||||
<th class="py-2.5 px-2 w-32">등록일</th>
|
||||
<?php if ($showKindActions): ?>
|
||||
<th class="py-2.5 px-2 w-28 text-center">작업</th>
|
||||
<th class="py-2.5 px-2 w-28 text-left">작업</th>
|
||||
<?php endif; ?>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -55,14 +55,14 @@ $stateBadge = static function (int $state): string {
|
||||
?>
|
||||
<tr class="border-b border-gray-200 last:border-0 cursor-pointer hover:bg-blue-50/60 <?= $isSelected ? 'bg-blue-50' : '' ?>"
|
||||
onclick="window.location.href='<?= esc($detailUrl, 'attr') ?>'">
|
||||
<td class="py-2.5 px-2 text-center text-gray-500"><?= (string) $i ?></td>
|
||||
<td class="py-2.5 px-2 text-center font-mono text-gray-700"><?= esc($row->ck_code) ?></td>
|
||||
<td class="py-2.5 px-2 text-left text-gray-500"><?= (string) $i ?></td>
|
||||
<td class="py-2.5 px-2 text-left font-mono text-gray-700"><?= esc($row->ck_code) ?></td>
|
||||
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->ck_name) ?></td>
|
||||
<td class="py-2.5 px-2 text-center text-gray-600"><?= (int) ($countMap[$row->ck_idx] ?? 0) ?>개</td>
|
||||
<td class="py-2.5 px-2 text-center"><?= $stateBadge((int) ($row->ck_state ?? 0)) ?></td>
|
||||
<td class="py-2.5 px-2 text-left text-gray-600"><?= (int) ($countMap[$row->ck_idx] ?? 0) ?>개</td>
|
||||
<td class="py-2.5 px-2 text-left"><?= $stateBadge((int) ($row->ck_state ?? 0)) ?></td>
|
||||
<td class="py-2.5 px-2 text-gray-500 text-[12px]"><?= esc($row->ck_regdate ?? '') ?></td>
|
||||
<?php if ($showKindActions): ?>
|
||||
<td class="py-2.5 px-2 text-center text-xs" onclick="event.stopPropagation()">
|
||||
<td class="py-2.5 px-2 text-left text-xs" onclick="event.stopPropagation()">
|
||||
<a href="<?= base_url('admin/code-kinds/edit/' . (int) $row->ck_idx) ?>" class="text-blue-600 hover:underline mr-1">수정</a>
|
||||
<form action="<?= base_url('admin/code-kinds/delete/' . (int) $row->ck_idx) ?>" method="POST" class="inline" onsubmit="return confirm('이 코드 종류를 삭제하시겠습니까?');">
|
||||
<?= csrf_field() ?>
|
||||
@@ -101,15 +101,15 @@ $stateBadge = static function (int $state): string {
|
||||
<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 w-12 text-center">번호</th>
|
||||
<th class="py-2.5 px-2 w-12 text-left">번호</th>
|
||||
<th class="py-2.5 px-2 w-20">코드</th>
|
||||
<th class="py-2.5 px-2">코드명</th>
|
||||
<th class="py-2.5 px-2 w-16 text-center">범위</th>
|
||||
<th class="py-2.5 px-2 w-14 text-center">정렬</th>
|
||||
<th class="py-2.5 px-2 w-16 text-center">상태</th>
|
||||
<th class="py-2.5 px-2 w-16 text-left">범위</th>
|
||||
<th class="py-2.5 px-2 w-14 text-left">정렬</th>
|
||||
<th class="py-2.5 px-2 w-16 text-left">상태</th>
|
||||
<th class="py-2.5 px-2 w-32">등록일</th>
|
||||
<?php if ($canManageDetails): ?>
|
||||
<th class="py-2.5 px-2 w-24 text-center">작업</th>
|
||||
<th class="py-2.5 px-2 w-24 text-left">작업</th>
|
||||
<?php endif; ?>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -121,17 +121,17 @@ $stateBadge = static function (int $state): string {
|
||||
$scopeLabel = $isPlatform ? '공통' : '지자체';
|
||||
?>
|
||||
<tr class="border-b border-gray-200 last:border-0 hover:bg-gray-50">
|
||||
<td class="py-2.5 px-2 text-center text-gray-500"><?= (string) $dNo ?></td>
|
||||
<td class="py-2.5 px-2 text-center font-mono text-gray-700"><?= esc($row->cd_code) ?></td>
|
||||
<td class="py-2.5 px-2 text-left text-gray-500"><?= (string) $dNo ?></td>
|
||||
<td class="py-2.5 px-2 text-left font-mono text-gray-700"><?= esc($row->cd_code) ?></td>
|
||||
<td class="py-2.5 px-2 font-medium text-gray-900"><?= esc($row->cd_name) ?></td>
|
||||
<td class="py-2.5 px-2 text-center">
|
||||
<td class="py-2.5 px-2 text-left">
|
||||
<span class="inline-block px-2 py-0.5 rounded-full text-[11px] font-medium <?= $isPlatform ? 'bg-blue-50 text-blue-700' : 'bg-amber-50 text-amber-700' ?>"><?= esc($scopeLabel) ?></span>
|
||||
</td>
|
||||
<td class="py-2.5 px-2 text-center text-gray-600"><?= (int) ($row->cd_sort ?? 0) ?></td>
|
||||
<td class="py-2.5 px-2 text-center"><?= $stateBadge((int) ($row->cd_state ?? 0)) ?></td>
|
||||
<td class="py-2.5 px-2 text-left text-gray-600"><?= (int) ($row->cd_sort ?? 0) ?></td>
|
||||
<td class="py-2.5 px-2 text-left"><?= $stateBadge((int) ($row->cd_state ?? 0)) ?></td>
|
||||
<td class="py-2.5 px-2 text-gray-500 text-[12px]"><?= esc($row->cd_regdate ?? '') ?></td>
|
||||
<?php if ($canManageDetails): ?>
|
||||
<td class="py-2.5 px-2 text-center text-xs">
|
||||
<td class="py-2.5 px-2 text-left text-xs">
|
||||
<?php if (! empty($rowCanEdit[$row->cd_idx])): ?>
|
||||
<a href="<?= base_url('admin/code-details/edit/' . (int) $row->cd_idx) ?>" class="text-blue-600 hover:underline">수정</a>
|
||||
<form action="<?= base_url('admin/code-details/delete/' . (int) $row->cd_idx) ?>" method="POST" class="ml-1 inline" onsubmit="return confirm('이 세부코드를 삭제하시겠습니까?');">
|
||||
|
||||
@@ -33,7 +33,7 @@ if ($initialRows === []) {
|
||||
<span class="text-sm font-bold text-gray-700">무료용 불출 처리</span>
|
||||
</section>
|
||||
|
||||
<div class="border border-gray-300 p-3 mt-2 bg-white">
|
||||
<div class="border border-gray-300 rounded-lg p-3 mt-2 bg-white">
|
||||
<form action="<?= base_url('bag/issue/store') ?>" method="POST" class="space-y-3" id="bag-issue-form">
|
||||
<?= csrf_field() ?>
|
||||
|
||||
@@ -111,18 +111,18 @@ if ($initialRows === []) {
|
||||
</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" id="issue-item-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">No</th>
|
||||
<th class="w-14 text-center">No</th>
|
||||
<th class="w-44">봉투코드</th>
|
||||
<th>봉투종류</th>
|
||||
<th class="w-28">수량</th>
|
||||
<th class="w-28 text-right">수량</th>
|
||||
<th class="w-28">포장</th>
|
||||
<th class="w-32">재고(낱장)</th>
|
||||
<th class="w-36">환산(낱장)</th>
|
||||
<th class="w-20">작업</th>
|
||||
<th class="w-32 text-right">재고(낱장)</th>
|
||||
<th class="w-36 text-right">환산(낱장)</th>
|
||||
<th class="w-20 text-center">작업</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="issue-item-body"></tbody>
|
||||
@@ -144,18 +144,18 @@ if ($initialRows === []) {
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-2 gap-2 mt-2">
|
||||
<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-[300px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-12">No</th>
|
||||
<th class="w-28">봉투코드</th>
|
||||
<th class="w-12 text-center">No</th>
|
||||
<th class="w-28 text-center">봉투코드</th>
|
||||
<th>봉투명</th>
|
||||
<th class="w-24">재고(낱장)</th>
|
||||
<th class="w-24">팩당 낱장</th>
|
||||
<th class="w-24">박스당 낱장</th>
|
||||
<th class="w-24 text-right">재고(낱장)</th>
|
||||
<th class="w-24 text-right">팩당 낱장</th>
|
||||
<th class="w-24 text-right">박스당 낱장</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -180,20 +180,20 @@ if ($initialRows === []) {
|
||||
</div>
|
||||
</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-[300px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-12">No</th>
|
||||
<th class="w-24">불출일</th>
|
||||
<th class="w-20">구분</th>
|
||||
<th class="w-12 text-center">No</th>
|
||||
<th class="w-24 text-center">불출일</th>
|
||||
<th class="w-20 text-center">구분</th>
|
||||
<th class="w-28">불출처</th>
|
||||
<th class="w-24">봉투코드</th>
|
||||
<th class="w-24 text-center">봉투코드</th>
|
||||
<th>봉투명</th>
|
||||
<th class="w-24">수량(낱장)</th>
|
||||
<th class="w-16">상태</th>
|
||||
<th class="w-24 text-right">수량(낱장)</th>
|
||||
<th class="w-16 text-center">상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -88,23 +88,23 @@
|
||||
<?php if ($deleteMode): ?>
|
||||
<form action="<?= base_url('bag/order/delete') ?>" method="post" class="mt-2 space-y-2">
|
||||
<?= csrf_field() ?>
|
||||
<div class="border border-gray-300 bg-white p-2 text-sm">
|
||||
<div class="border border-gray-300 rounded-lg bg-white p-2 text-sm">
|
||||
<span class="font-bold text-gray-700">발주월</span>
|
||||
<span class="ml-2"><?= esc($defaultOrderMonth) ?></span>
|
||||
<span class="text-gray-600 ml-2">왼쪽 목록에서 삭제할 발주를 선택한 뒤 「삭제 실행」을 누르세요.</span>
|
||||
</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-10">선택</th>
|
||||
<th class="w-28">발주일</th>
|
||||
<th>제작업체</th>
|
||||
<th>입고처</th>
|
||||
<th class="w-16">상태</th>
|
||||
<th class="w-10 text-center">선택</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>
|
||||
@@ -171,7 +171,7 @@
|
||||
<input type="hidden" name="order_return_month" value="<?= esc($orderReturnMonth) ?>" />
|
||||
<?php endif; ?>
|
||||
|
||||
<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>
|
||||
@@ -189,16 +189,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>
|
||||
@@ -222,7 +222,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"><?= $editMode ? '발주 변경 수정' : '발주 Form' ?></div>
|
||||
<div class="p-2 space-y-2">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-2">
|
||||
@@ -265,21 +265,21 @@
|
||||
</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-24">수량</th>
|
||||
<th class="w-24">단가</th>
|
||||
<th class="w-24">낱장환산</th>
|
||||
<th class="w-12 text-center">번호</th>
|
||||
<th class="w-16 text-center">선택</th>
|
||||
<th class="text-left">품명</th>
|
||||
<th class="w-24 text-right">수량</th>
|
||||
<th class="w-24 text-right">단가</th>
|
||||
<th class="w-24 text-right">낱장환산</th>
|
||||
<?php if ($editMode): ?>
|
||||
<th class="w-24">선정수량</th>
|
||||
<th class="w-20">LOT</th>
|
||||
<th class="w-24 text-right">선정수량</th>
|
||||
<th class="w-20 text-center">LOT</th>
|
||||
<?php endif; ?>
|
||||
<th class="w-28">금액</th>
|
||||
<th class="w-28 text-right">금액</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="selected-order-items-body"></tbody>
|
||||
@@ -299,7 +299,7 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="border border-gray-300 bg-gray-50 p-2 text-sm">
|
||||
<div class="border border-gray-300 rounded-lg bg-gray-50 p-2 text-sm">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-x-6 gap-y-1">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-gray-700">품목 금액 합계</span>
|
||||
@@ -331,19 +331,19 @@
|
||||
</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>
|
||||
<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>봉투 종류</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-12 text-center">번호</th>
|
||||
<th class="w-20 text-center">선택</th>
|
||||
<th class="text-left">봉투 종류</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>
|
||||
|
||||
@@ -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('bag/receiving/store') ?>" method="POST" class="space-y-4">
|
||||
<?= csrf_field() ?>
|
||||
|
||||
|
||||
@@ -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('bag/sale/store') ?>" method="POST" class="space-y-4">
|
||||
<?= csrf_field() ?>
|
||||
|
||||
|
||||
@@ -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-4xl">
|
||||
<div class="border border-gray-300 rounded-lg p-4 mt-2 bg-white max-w-4xl">
|
||||
<form action="<?= base_url('bag/shop-order/store') ?>" method="POST" class="space-y-4">
|
||||
<?= csrf_field() ?>
|
||||
|
||||
@@ -33,13 +33,13 @@
|
||||
|
||||
<div class="mt-4">
|
||||
<label class="block text-sm font-bold text-gray-700 mb-2">주문 품목</label>
|
||||
<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 class="w-16">순번</th>
|
||||
<th class="w-16 text-center">순번</th>
|
||||
<th>봉투</th>
|
||||
<th class="w-32">수량</th>
|
||||
<th class="w-32 text-right">수량</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -250,28 +250,28 @@ echo view('components/header_user_tools', [
|
||||
<!-- END: Control Panel -->
|
||||
<!-- BEGIN: Main Content Area (Table) -->
|
||||
<main class="main-content-area flex-grow bg-white p-2">
|
||||
<div class="border border-gray-300 h-full overflow-auto">
|
||||
<div class="border border-gray-300 rounded-lg p-4 h-full overflow-auto">
|
||||
<table class="w-full data-table border-collapse">
|
||||
<!-- BEGIN: Table Head -->
|
||||
<thead><tr>
|
||||
<th class="w-[100px] bg-gray-100 border border-gray-300" rowspan="2">일자</th>
|
||||
<th class="min-w-[200px] bg-gray-100 border border-gray-300" rowspan="2">품 목</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300" rowspan="2">전일재고</th>
|
||||
<th class="w-[100px] bg-gray-100 border border-gray-300 text-center" rowspan="2">일자</th>
|
||||
<th class="min-w-[200px] bg-gray-100 border border-gray-300 text-left" rowspan="2">품 목</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right" rowspan="2">전일재고</th>
|
||||
<th class="bg-gray-100 border border-gray-300" colspan="3">입고</th>
|
||||
<th class="bg-gray-100 border border-gray-300" colspan="5">출고</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300" rowspan="2">잔량</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right" rowspan="2">잔량</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Under 입고 -->
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300">입고</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300">반품</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300">입고계</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right">입고</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right">반품</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right">입고계</th>
|
||||
<!-- Under 출고 -->
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300">판매</th>
|
||||
<th class="w-[120px] bg-gray-100 border border-gray-300">일반불출/무료불출</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300">반품</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300">기타</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300">출고계</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right">판매</th>
|
||||
<th class="w-[120px] bg-gray-100 border border-gray-300 text-right">일반불출/무료불출</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right">반품</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right">기타</th>
|
||||
<th class="w-[80px] bg-gray-100 border border-gray-300 text-right">출고계</th>
|
||||
</tr></thead>
|
||||
<!-- END: Table Head -->
|
||||
<!-- BEGIN: Table Body -->
|
||||
|
||||
@@ -10,7 +10,7 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
<span class="text-sm font-bold text-gray-700">지정판매소 판매 취소</span>
|
||||
</section>
|
||||
|
||||
<div class="border border-gray-300 p-3 mt-2 bg-white space-y-3">
|
||||
<div class="border border-gray-300 rounded-lg p-3 mt-2 bg-white space-y-3">
|
||||
<form id="cancel-form" action="<?= base_url('bag/sale/designated-cancel/submit') ?>" method="POST" class="flex flex-wrap items-end gap-2">
|
||||
<?= csrf_field() ?>
|
||||
<input type="hidden" name="sale_date" value="<?= esc($saleDate) ?>"/>
|
||||
@@ -26,14 +26,14 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
</form>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-5 gap-3">
|
||||
<section class="xl:col-span-2 border border-gray-300">
|
||||
<section class="xl:col-span-2 border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">판매 리스트</div>
|
||||
<div class="max-h-64 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">번호</th>
|
||||
<th>지정판매소</th>
|
||||
<th class="w-14 text-center">번호</th>
|
||||
<th class="text-left">지정판매소</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="shop-list-body">
|
||||
@@ -52,17 +52,17 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="xl:col-span-3 border border-gray-300">
|
||||
<section class="xl:col-span-3 border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">판매 취소 리스트</div>
|
||||
<div class="max-h-64 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>품목</th>
|
||||
<th class="w-20">단가</th>
|
||||
<th class="w-24">판매액</th>
|
||||
<th class="w-14">취소</th>
|
||||
<th class="w-24">취소액</th>
|
||||
<th class="text-left">품목</th>
|
||||
<th class="w-20 text-right">단가</th>
|
||||
<th class="w-24 text-right">판매액</th>
|
||||
<th class="w-14 text-center">취소</th>
|
||||
<th class="w-24 text-right">취소액</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="item-list-body">
|
||||
@@ -85,17 +85,17 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<section class="border border-gray-300">
|
||||
<section class="border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">판매 취소 봉투 코드</div>
|
||||
<div class="max-h-72 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-36">봉투 코드</th>
|
||||
<th class="w-16">수량</th>
|
||||
<th class="w-20">단가</th>
|
||||
<th class="w-24">금액</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-36 text-center">봉투 코드</th>
|
||||
<th class="w-16 text-right">수량</th>
|
||||
<th class="w-20 text-right">단가</th>
|
||||
<th class="w-24 text-right">금액</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="code-list-body">
|
||||
@@ -116,14 +116,14 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
<table class="w-full data-table text-xs">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>지정판매소</th>
|
||||
<th class="w-14">주문</th>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-40">봉투 바코드</th>
|
||||
<th class="w-14">포장</th>
|
||||
<th class="w-12">수량</th>
|
||||
<th class="w-16">상태</th>
|
||||
<th class="w-36">등록일시</th>
|
||||
<th class="text-left">지정판매소</th>
|
||||
<th class="w-14 text-center">주문</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-40 text-center">봉투 바코드</th>
|
||||
<th class="w-14 text-center">포장</th>
|
||||
<th class="w-12 text-right">수량</th>
|
||||
<th class="w-16 text-center">상태</th>
|
||||
<th class="w-36 text-center">등록일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -8,7 +8,7 @@ $returns = is_array($returns ?? null) ? $returns : [];
|
||||
<span class="text-sm font-bold text-gray-700">지정판매소 반품 취소</span>
|
||||
</section>
|
||||
|
||||
<div class="border border-gray-300 p-3 mt-2 bg-white space-y-3">
|
||||
<div class="border border-gray-300 rounded-lg p-3 mt-2 bg-white space-y-3">
|
||||
<form id="return-cancel-form" action="<?= base_url('bag/sale/designated-return-cancel/save') ?>" method="POST" class="flex flex-wrap items-end gap-2">
|
||||
<?= csrf_field() ?>
|
||||
<input type="hidden" name="return_date" id="return-date-hidden" value="<?= esc($returnDate) ?>"/>
|
||||
@@ -22,15 +22,15 @@ $returns = is_array($returns ?? null) ? $returns : [];
|
||||
</form>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-5 gap-3">
|
||||
<section class="xl:col-span-2 border border-gray-300">
|
||||
<section class="xl:col-span-2 border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">지정판매소 리스트</div>
|
||||
<div class="max-h-64 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>지정판매소 상호명</th>
|
||||
<th class="w-24">대표자명</th>
|
||||
<th class="w-28">반품일자</th>
|
||||
<th class="text-left">지정판매소 상호명</th>
|
||||
<th class="w-24 text-center">대표자명</th>
|
||||
<th class="w-28 text-center">반품일자</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="shop-list-body">
|
||||
@@ -50,17 +50,17 @@ $returns = is_array($returns ?? null) ? $returns : [];
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="xl:col-span-3 border border-gray-300">
|
||||
<section class="xl:col-span-3 border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">반품 리스트</div>
|
||||
<div class="max-h-64 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>품목</th>
|
||||
<th class="w-20">단가</th>
|
||||
<th class="w-24">판매액</th>
|
||||
<th class="w-14">취소</th>
|
||||
<th class="w-24">취소액</th>
|
||||
<th class="text-left">품목</th>
|
||||
<th class="w-20 text-right">단가</th>
|
||||
<th class="w-24 text-right">판매액</th>
|
||||
<th class="w-14 text-center">취소</th>
|
||||
<th class="w-24 text-right">취소액</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="item-list-body">
|
||||
@@ -79,17 +79,17 @@ $returns = is_array($returns ?? null) ? $returns : [];
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<section class="border border-gray-300">
|
||||
<section class="border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">반품 취소 대상 봉투 코드</div>
|
||||
<div class="max-h-72 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-36">봉투코드</th>
|
||||
<th class="w-16">수량</th>
|
||||
<th class="w-20">단가</th>
|
||||
<th class="w-24">금액</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-36 text-center">봉투코드</th>
|
||||
<th class="w-16 text-right">수량</th>
|
||||
<th class="w-20 text-right">단가</th>
|
||||
<th class="w-24 text-right">금액</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="code-list-body">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<span class="text-sm font-bold text-gray-700">지정판매소 판매</span>
|
||||
</section>
|
||||
|
||||
<div class="border border-gray-300 p-3 mt-2 bg-white space-y-3">
|
||||
<div class="border border-gray-300 rounded-lg p-3 mt-2 bg-white space-y-3">
|
||||
<form id="sale-save-form" action="<?= base_url('bag/sale/designated/save') ?>" method="POST">
|
||||
<?= csrf_field() ?>
|
||||
<input type="hidden" name="so_idx" id="save-so-idx" value=""/>
|
||||
@@ -18,7 +18,7 @@
|
||||
<option value="<?= esc(trim(($shop->ds_shop_no ?? '') . ' ' . ($shop->ds_name ?? '') . ' ' . ($shop->ds_rep_name ?? '') . ' ' . ($shop->ds_tel ?? '') . ' ' . ($shop->ds_addr ?? ''))) ?>"></option>
|
||||
<?php endforeach; ?>
|
||||
</datalist>
|
||||
<div id="shop-search-suggest" class="hidden absolute left-0 top-full mt-1 w-[36rem] max-w-full max-h-56 overflow-auto border border-gray-300 bg-white shadow-lg z-20"></div>
|
||||
<div id="shop-search-suggest" class="hidden absolute left-0 top-full mt-1 w-[36rem] max-w-full max-h-56 overflow-auto border border-gray-300 rounded-lg bg-white shadow-lg z-20"></div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-gray-700 mb-1">봉투코드 입력(스캔)</label>
|
||||
@@ -35,7 +35,7 @@
|
||||
<div id="scan-message" class="text-sm text-gray-600"></div>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-5 gap-3">
|
||||
<section class="xl:col-span-2 border border-gray-300">
|
||||
<section class="xl:col-span-2 border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">지정판매소 정보</div>
|
||||
<table class="w-full text-sm">
|
||||
<tr><th class="text-left px-3 py-1.5 w-28">판매소 코드</th><td id="shop-info-code" class="px-3 py-1.5">-</td></tr>
|
||||
@@ -46,17 +46,17 @@
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section class="xl:col-span-3 border border-gray-300">
|
||||
<section class="xl:col-span-3 border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">주문 접수 리스트</div>
|
||||
<div class="max-h-56 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">번호</th>
|
||||
<th>판매소</th>
|
||||
<th class="w-28">접수일</th>
|
||||
<th class="w-28">배달일</th>
|
||||
<th class="w-16">상태</th>
|
||||
<th class="w-14 text-center">번호</th>
|
||||
<th class="text-left">판매소</th>
|
||||
<th class="w-28 text-center">접수일</th>
|
||||
<th class="w-28 text-center">배달일</th>
|
||||
<th class="w-16 text-center">상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="order-list-body"></tbody>
|
||||
@@ -79,14 +79,14 @@
|
||||
<table class="w-full data-table text-xs">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-28">출처</th>
|
||||
<th class="w-40">바코드(대표)</th>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-16">포장</th>
|
||||
<th class="w-10">수량</th>
|
||||
<th class="w-12">주문</th>
|
||||
<th class="w-14">상태</th>
|
||||
<th>비고(낱장범위 등)</th>
|
||||
<th class="w-28 text-left">출처</th>
|
||||
<th class="w-40 text-center">바코드(대표)</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-16 text-center">포장</th>
|
||||
<th class="w-10 text-right">수량</th>
|
||||
<th class="w-12 text-center">주문</th>
|
||||
<th class="w-14 text-center">상태</th>
|
||||
<th class="text-left">비고(낱장범위 등)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="dev-saleable-tbody">
|
||||
@@ -97,18 +97,18 @@
|
||||
</section>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-2 gap-3">
|
||||
<section class="border border-gray-300">
|
||||
<section class="border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">판매 내역</div>
|
||||
<div class="max-h-72 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">선택</th>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-20">접수량</th>
|
||||
<th class="w-20">판매량</th>
|
||||
<th class="w-20">단가</th>
|
||||
<th class="w-24">판매금액</th>
|
||||
<th class="w-14 text-center">선택</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-20 text-right">접수량</th>
|
||||
<th class="w-20 text-right">판매량</th>
|
||||
<th class="w-20 text-right">단가</th>
|
||||
<th class="w-24 text-right">판매금액</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="sale-items-body">
|
||||
@@ -118,16 +118,16 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="border border-gray-300">
|
||||
<section class="border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">판매 상세 내역</div>
|
||||
<div class="max-h-72 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-28">봉투 코드</th>
|
||||
<th class="w-16">수량</th>
|
||||
<th class="w-16">포장단위</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-28 text-center">봉투 코드</th>
|
||||
<th class="w-16 text-right">수량</th>
|
||||
<th class="w-16 text-center">포장단위</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="scan-detail-body">
|
||||
|
||||
@@ -5,7 +5,7 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
<span class="text-sm font-bold text-gray-700">지정판매소 반품</span>
|
||||
</section>
|
||||
|
||||
<div class="border border-gray-300 p-3 mt-2 bg-white space-y-3">
|
||||
<div class="border border-gray-300 rounded-lg p-3 mt-2 bg-white space-y-3">
|
||||
<form id="return-save-form" action="<?= base_url('bag/sale/designated-return/save') ?>" method="POST">
|
||||
<?= csrf_field() ?>
|
||||
<input type="hidden" name="ds_idx" id="save-ds-idx" value=""/>
|
||||
@@ -15,7 +15,7 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
<div class="relative">
|
||||
<label class="block text-xs font-bold text-gray-700 mb-1">판매소 검색</label>
|
||||
<input id="shop-search" type="text" class="border border-gray-300 rounded px-2 py-1.5 text-sm w-[36rem] max-w-full" placeholder="코드/상호/대표자/전화/주소"/>
|
||||
<div id="shop-search-suggest" class="hidden absolute left-0 top-full mt-1 w-[36rem] max-w-full max-h-56 overflow-auto border border-gray-300 bg-white shadow-lg z-20"></div>
|
||||
<div id="shop-search-suggest" class="hidden absolute left-0 top-full mt-1 w-[36rem] max-w-full max-h-56 overflow-auto border border-gray-300 rounded-lg bg-white shadow-lg z-20"></div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-gray-700 mb-1">봉투코드 입력</label>
|
||||
@@ -28,7 +28,7 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
<div id="scan-message" class="text-sm text-gray-600"></div>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-2 gap-3">
|
||||
<section class="border border-gray-300">
|
||||
<section class="border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">지정판매소 정보</div>
|
||||
<table class="w-full text-sm">
|
||||
<tr><th class="text-left px-3 py-1.5 w-28">판매소 코드</th><td id="shop-info-code" class="px-3 py-1.5">-</td></tr>
|
||||
@@ -39,18 +39,18 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section class="border border-gray-300">
|
||||
<section class="border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">반품 리스트</div>
|
||||
<div class="max-h-64 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">선택</th>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-20">수량</th>
|
||||
<th class="w-20">단가</th>
|
||||
<th class="w-24">금액</th>
|
||||
<th class="w-16">제거</th>
|
||||
<th class="w-14 text-center">선택</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-20 text-right">수량</th>
|
||||
<th class="w-20 text-right">단가</th>
|
||||
<th class="w-24 text-right">금액</th>
|
||||
<th class="w-16 text-center">제거</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="return-list-body">
|
||||
@@ -70,16 +70,16 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<section class="border border-gray-300">
|
||||
<section class="border border-gray-300 rounded-lg">
|
||||
<div class="px-3 py-2 border-b bg-gray-50 text-sm font-semibold text-gray-700">반품 봉투 코드</div>
|
||||
<div class="max-h-72 overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-36">봉투 코드</th>
|
||||
<th class="w-16">수량</th>
|
||||
<th class="w-20">금액</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-36 text-center">봉투 코드</th>
|
||||
<th class="w-16 text-right">수량</th>
|
||||
<th class="w-20 text-right">금액</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="return-code-body">
|
||||
@@ -100,14 +100,14 @@ $devSoldScans = is_array($devSoldScans ?? null) ? $devSoldScans : [];
|
||||
<table class="w-full data-table text-xs">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>지정판매소</th>
|
||||
<th class="w-14">주문</th>
|
||||
<th>봉투 종류</th>
|
||||
<th class="w-40">봉투 바코드</th>
|
||||
<th class="w-14">포장</th>
|
||||
<th class="w-12">수량</th>
|
||||
<th class="w-16">상태</th>
|
||||
<th class="w-36">등록일시</th>
|
||||
<th class="text-left">지정판매소</th>
|
||||
<th class="w-14 text-center">주문</th>
|
||||
<th class="text-left">봉투 종류</th>
|
||||
<th class="w-40 text-center">봉투 바코드</th>
|
||||
<th class="w-14 text-center">포장</th>
|
||||
<th class="w-12 text-right">수량</th>
|
||||
<th class="w-16 text-center">상태</th>
|
||||
<th class="w-36 text-center">등록일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -142,32 +142,32 @@ $tipPage = "조회 기간 동안 봉투 품목별 입고·출고·잔량을 집
|
||||
<table class="w-full data-table text-sm flow-report-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th rowspan="2" class="flow-col-date">일자</th>
|
||||
<th rowspan="2" class="flow-col-item">품목</th>
|
||||
<th rowspan="2" class="flow-col-num">
|
||||
<th rowspan="2" class="flow-col-date text-center">일자</th>
|
||||
<th rowspan="2" class="flow-col-item text-left">품목</th>
|
||||
<th rowspan="2" class="flow-col-num text-right">
|
||||
<span class="flow-lbl-screen">전일재고</span><span class="flow-lbl-print">전일</span>
|
||||
</th>
|
||||
<th colspan="4">입고</th>
|
||||
<th colspan="6">출고</th>
|
||||
<th rowspan="2" class="flow-col-num">잔량</th>
|
||||
<th rowspan="2" class="flow-col-num text-right">잔량</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="flow-col-num">입고</th>
|
||||
<th class="flow-col-num">반품</th>
|
||||
<th class="flow-col-num">기타</th>
|
||||
<th class="flow-col-num">
|
||||
<th class="flow-col-num text-right">입고</th>
|
||||
<th class="flow-col-num text-right">반품</th>
|
||||
<th class="flow-col-num text-right">기타</th>
|
||||
<th class="flow-col-num text-right">
|
||||
<span class="flow-lbl-screen">입고계</span><span class="flow-lbl-print">입계</span>
|
||||
</th>
|
||||
<th class="flow-col-num">판매</th>
|
||||
<th class="flow-col-num">
|
||||
<th class="flow-col-num text-right">판매</th>
|
||||
<th class="flow-col-num text-right">
|
||||
<span class="flow-lbl-screen">일반불출</span><span class="flow-lbl-print">일반</span>
|
||||
</th>
|
||||
<th class="flow-col-num">
|
||||
<th class="flow-col-num text-right">
|
||||
<span class="flow-lbl-screen">무료불출</span><span class="flow-lbl-print">무료</span>
|
||||
</th>
|
||||
<th class="flow-col-num">반품</th>
|
||||
<th class="flow-col-num">기타</th>
|
||||
<th class="flow-col-num">
|
||||
<th class="flow-col-num text-right">반품</th>
|
||||
<th class="flow-col-num text-right">기타</th>
|
||||
<th class="flow-col-num text-right">
|
||||
<span class="flow-lbl-screen">출고계</span><span class="flow-lbl-print">출계</span>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
@@ -47,16 +47,16 @@ foreach ($subtotals as $subtotal) {
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<div class="mt-2 border border-gray-300 bg-white p-2 print:p-0 print:border-0">
|
||||
<div class="mt-2 border border-gray-300 rounded-lg bg-white p-2 print:p-0 print:border-0">
|
||||
<div class="overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-36">품 목 구 분</th>
|
||||
<th>봉투/스티커 종류</th>
|
||||
<th class="w-32">계</th>
|
||||
<th class="w-32">시군구 재고</th>
|
||||
<th class="w-32">대행소 재고</th>
|
||||
<th class="w-36 text-center">품 목 구 분</th>
|
||||
<th class="text-left">봉투/스티커 종류</th>
|
||||
<th class="w-32 text-right">계</th>
|
||||
<th class="w-32 text-right">시군구 재고</th>
|
||||
<th class="w-32 text-right">대행소 재고</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -4,7 +4,7 @@ $items = is_array($items ?? null) ? $items : [];
|
||||
$status = (string) ($inspection['bis_status'] ?? '');
|
||||
?>
|
||||
<div class="space-y-3">
|
||||
<section class="border border-gray-300 bg-white p-3">
|
||||
<section class="border border-gray-300 rounded-lg bg-white p-3">
|
||||
<div class="flex flex-wrap items-center justify-between gap-2">
|
||||
<div class="text-sm text-gray-700">
|
||||
<span class="font-bold">실사번호:</span> <?= esc((string) ($inspection['bis_idx'] ?? '')) ?>
|
||||
@@ -17,19 +17,19 @@ $status = (string) ($inspection['bis_status'] ?? '');
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="border border-gray-300 bg-white p-3">
|
||||
<section class="border border-gray-300 rounded-lg bg-white p-3">
|
||||
<form method="post" action="<?= base_url('bag/inventory/inspection/' . (int) ($inspection['bis_idx'] ?? 0) . '/save') ?>" class="space-y-3">
|
||||
<?= csrf_field() ?>
|
||||
<div class="overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">번호</th>
|
||||
<th>품목명</th>
|
||||
<th class="w-24">전산수량</th>
|
||||
<th class="w-24">실사수량</th>
|
||||
<th class="w-24">차이수량</th>
|
||||
<th class="w-20">반영여부</th>
|
||||
<th class="w-14 text-center">번호</th>
|
||||
<th class="text-left">품목명</th>
|
||||
<th class="w-24 text-right">전산수량</th>
|
||||
<th class="w-24 text-right">실사수량</th>
|
||||
<th class="w-24 text-right">차이수량</th>
|
||||
<th class="w-20 text-center">반영여부</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -65,7 +65,7 @@ $status = (string) ($inspection['bis_status'] ?? '');
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="border border-gray-300 bg-white p-3">
|
||||
<section class="border border-gray-300 rounded-lg bg-white p-3">
|
||||
<form method="post" action="<?= base_url('bag/inventory/inspection/' . (int) ($inspection['bis_idx'] ?? 0) . '/apply') ?>" id="inspection-apply-form">
|
||||
<?= csrf_field() ?>
|
||||
<div class="flex items-center justify-between">
|
||||
|
||||
@@ -44,7 +44,7 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
?>
|
||||
|
||||
<div class="space-y-2">
|
||||
<section class="border border-gray-300 bg-white p-2">
|
||||
<section class="border border-gray-300 rounded-lg bg-white p-2">
|
||||
<form method="get" class="flex flex-wrap items-end justify-between gap-2 text-sm">
|
||||
<div class="flex flex-wrap items-end gap-2">
|
||||
<label class="font-bold text-gray-700">실사기간</label>
|
||||
@@ -74,17 +74,17 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
</section>
|
||||
|
||||
<section class="grid grid-cols-1 xl:grid-cols-2 gap-2">
|
||||
<div class="border border-gray-300 bg-white">
|
||||
<div 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-[500px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-24">실사일자</th>
|
||||
<th>종류</th>
|
||||
<th class="w-40">박스</th>
|
||||
<th class="w-20">전산재고</th>
|
||||
<th class="w-20">실사재고</th>
|
||||
<th class="w-24 text-center">실사일자</th>
|
||||
<th class="text-left">종류</th>
|
||||
<th class="w-40 text-center">박스</th>
|
||||
<th class="w-20 text-right">전산재고</th>
|
||||
<th class="w-20 text-right">실사재고</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -134,7 +134,7 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
<div class="border border-gray-300 bg-white">
|
||||
<div 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>
|
||||
<form method="post" action="<?= base_url('bag/inventory/inspection-select/save') ?>" id="inspection-save-form">
|
||||
<?= csrf_field() ?>
|
||||
@@ -152,13 +152,13 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>팩코드</th>
|
||||
<th class="w-16">포장량</th>
|
||||
<th class="w-16">재고</th>
|
||||
<th class="w-20">실사재고</th>
|
||||
<th class="w-16">차이</th>
|
||||
<th>낱장(시작)</th>
|
||||
<th>낱장(끝)</th>
|
||||
<th class="text-left">팩코드</th>
|
||||
<th class="w-16 text-center">포장량</th>
|
||||
<th class="w-16 text-right">재고</th>
|
||||
<th class="w-20 text-right">실사재고</th>
|
||||
<th class="w-16 text-right">차이</th>
|
||||
<th class="text-center">낱장(시작)</th>
|
||||
<th class="text-center">낱장(끝)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -224,17 +224,17 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="border border-gray-300 bg-white">
|
||||
<div 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-[240px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-12">No</th>
|
||||
<th>낱장</th>
|
||||
<th class="w-16">전산</th>
|
||||
<th class="w-16">실사</th>
|
||||
<th class="w-16">차이</th>
|
||||
<th class="w-12 text-center">No</th>
|
||||
<th class="text-left">낱장</th>
|
||||
<th class="w-16 text-right">전산</th>
|
||||
<th class="w-16 text-right">실사</th>
|
||||
<th class="w-16 text-right">차이</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -268,7 +268,7 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="border border-gray-300 bg-white p-2 text-sm text-gray-600">
|
||||
<div class="border border-gray-300 rounded-lg bg-white p-2 text-sm text-gray-600">
|
||||
실사 저장 시 차이수량이 즉시 장부 재고에 반영됩니다.
|
||||
</div>
|
||||
</div>
|
||||
@@ -276,7 +276,7 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
</div>
|
||||
|
||||
<div id="inspection-popup" class="fixed inset-0 bg-black/40 hidden items-center justify-center z-[999]">
|
||||
<div class="bg-white border border-gray-400 w-[min(720px,95vw)] max-h-[90vh] overflow-auto p-4">
|
||||
<div class="bg-white border border-gray-400 rounded-lg w-[min(720px,95vw)] max-h-[90vh] overflow-auto p-4">
|
||||
<div class="flex items-center justify-between mb-3">
|
||||
<h3 class="text-lg font-bold">실사 선별</h3>
|
||||
<button type="button" id="close-inspection-popup" class="text-gray-600 hover:text-gray-900">닫기</button>
|
||||
@@ -288,10 +288,10 @@ $sheetTotalDiff = $sheetTotalActual - $sheetTotalQty;
|
||||
<input type="date" name="work_date" value="<?= esc($workDate) ?>" class="border border-gray-300 rounded px-2 py-1 text-sm">
|
||||
</div>
|
||||
<p class="text-red-600 font-semibold">바코드가 없는 봉투는 실사에서 제외 됩니다.</p>
|
||||
<div class="overflow-auto border border-gray-300 max-h-[55vh]">
|
||||
<div class="overflow-auto border border-gray-300 rounded-lg max-h-[55vh]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr><th>종류</th><th class="w-20">선택구분</th></tr>
|
||||
<tr><th class="text-left">종류</th><th class="w-20 text-center">선택구분</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($popupItems as $row): ?>
|
||||
|
||||
@@ -29,7 +29,7 @@ foreach ($sheetRows as $row) {
|
||||
?>
|
||||
|
||||
<div class="space-y-2">
|
||||
<section class="border border-gray-300 bg-white p-2">
|
||||
<section class="border border-gray-300 rounded-lg bg-white p-2">
|
||||
<form method="get" class="flex flex-wrap items-end justify-between gap-2 text-sm">
|
||||
<div class="flex flex-wrap items-end gap-2">
|
||||
<label class="font-bold text-gray-700">실사기간</label>
|
||||
@@ -61,16 +61,16 @@ foreach ($sheetRows as $row) {
|
||||
</section>
|
||||
|
||||
<section class="grid grid-cols-1 xl:grid-cols-2 gap-2">
|
||||
<div class="border border-gray-300 bg-white">
|
||||
<div 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-[500px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-24">실사일자</th>
|
||||
<th>종류</th>
|
||||
<th class="w-40">박스</th>
|
||||
<th class="w-20">전산재고</th>
|
||||
<th class="w-24 text-center">실사일자</th>
|
||||
<th class="text-left">종류</th>
|
||||
<th class="w-40 text-center">박스</th>
|
||||
<th class="w-20 text-right">전산재고</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -114,17 +114,17 @@ foreach ($sheetRows as $row) {
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
<div class="border border-gray-300 bg-white">
|
||||
<div 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-[260px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>팩코드</th>
|
||||
<th class="w-16">포장량</th>
|
||||
<th class="w-16">재고</th>
|
||||
<th>낱장(시작)</th>
|
||||
<th>낱장(끝)</th>
|
||||
<th class="text-left">팩코드</th>
|
||||
<th class="w-16 text-center">포장량</th>
|
||||
<th class="w-16 text-right">재고</th>
|
||||
<th class="text-center">낱장(시작)</th>
|
||||
<th class="text-center">낱장(끝)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -169,15 +169,15 @@ foreach ($sheetRows as $row) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="border border-gray-300 bg-white">
|
||||
<div 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-[240px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-12">No</th>
|
||||
<th>낱장</th>
|
||||
<th class="w-16">수량</th>
|
||||
<th class="w-12 text-center">No</th>
|
||||
<th class="text-left">낱장</th>
|
||||
<th class="w-16 text-right">수량</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -207,7 +207,7 @@ foreach ($sheetRows as $row) {
|
||||
</div>
|
||||
|
||||
<div id="inspection-popup" class="fixed inset-0 bg-black/40 hidden items-center justify-center z-[999]">
|
||||
<div class="bg-white border border-gray-400 w-[min(720px,95vw)] max-h-[90vh] overflow-auto p-4">
|
||||
<div class="bg-white border border-gray-400 rounded-lg w-[min(720px,95vw)] max-h-[90vh] overflow-auto p-4">
|
||||
<div class="flex items-center justify-between mb-3">
|
||||
<h3 class="text-lg font-bold">실사 선별</h3>
|
||||
<button type="button" id="close-inspection-popup" class="text-gray-600 hover:text-gray-900">닫기</button>
|
||||
@@ -219,10 +219,10 @@ foreach ($sheetRows as $row) {
|
||||
<input type="date" name="work_date" value="<?= esc($workDate) ?>" class="border border-gray-300 rounded px-2 py-1 text-sm">
|
||||
</div>
|
||||
<p class="text-red-600 font-semibold">바코드가 없는 봉투는 실사에서 제외 됩니다.</p>
|
||||
<div class="overflow-auto border border-gray-300 max-h-[55vh]">
|
||||
<div class="overflow-auto border border-gray-300 rounded-lg max-h-[55vh]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr><th>종류</th><th class="w-20">선택구분</th></tr>
|
||||
<tr><th class="text-left">종류</th><th class="w-20 text-center">선택구분</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($popupItems as $row): ?>
|
||||
|
||||
@@ -12,7 +12,7 @@ $selectedBagCode = (string) ($selectedBagCode ?? '');
|
||||
?>
|
||||
|
||||
<div class="space-y-2">
|
||||
<div class="border border-gray-300 bg-white p-2">
|
||||
<div class="border border-gray-300 rounded-lg bg-white p-2">
|
||||
<form method="get" class="flex flex-wrap items-end gap-2 text-sm">
|
||||
<label class="font-bold text-gray-700">불출월</label>
|
||||
<select name="issue_month" class="border border-gray-300 rounded px-2 py-1 min-w-[9rem]">
|
||||
@@ -73,15 +73,15 @@ $selectedBagCode = (string) ($selectedBagCode ?? '');
|
||||
<input type="hidden" name="sel_bag_code" value="<?= esc($selectedBagCode) ?>"/>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-4 gap-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-[560px]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-20">불출일자</th>
|
||||
<th>불출처</th>
|
||||
<th class="w-16">건수</th>
|
||||
<th class="w-20 text-center">불출일자</th>
|
||||
<th class="text-left">불출처</th>
|
||||
<th class="w-16 text-right">건수</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -120,19 +120,19 @@ $selectedBagCode = (string) ($selectedBagCode ?? '');
|
||||
</section>
|
||||
|
||||
<div class="xl:col-span-3 grid grid-cols-1 gap-2">
|
||||
<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-[270px]">
|
||||
<table class="w-full data-table text-sm" id="detail-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">취소</th>
|
||||
<th class="w-12">No</th>
|
||||
<th class="w-24">일자</th>
|
||||
<th class="w-20">구분</th>
|
||||
<th>봉투종류</th>
|
||||
<th class="w-24">수량</th>
|
||||
<th class="w-24">취소수량</th>
|
||||
<th class="w-14 text-center">취소</th>
|
||||
<th class="w-12 text-center">No</th>
|
||||
<th class="w-24 text-center">일자</th>
|
||||
<th class="w-20 text-center">구분</th>
|
||||
<th class="text-left">봉투종류</th>
|
||||
<th class="w-24 text-right">수량</th>
|
||||
<th class="w-24 text-right">취소수량</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -196,18 +196,18 @@ $selectedBagCode = (string) ($selectedBagCode ?? '');
|
||||
</div>
|
||||
</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-[250px]">
|
||||
<table class="w-full data-table text-sm" id="code-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">취소</th>
|
||||
<th class="w-12">No</th>
|
||||
<th class="w-20">불출번호</th>
|
||||
<th>봉투코드</th>
|
||||
<th class="w-24">수량</th>
|
||||
<th class="w-24">취소수량</th>
|
||||
<th class="w-14 text-center">취소</th>
|
||||
<th class="w-12 text-center">No</th>
|
||||
<th class="w-20 text-center">불출번호</th>
|
||||
<th class="text-left">봉투코드</th>
|
||||
<th class="w-24 text-right">수량</th>
|
||||
<th class="w-24 text-right">취소수량</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -43,11 +43,22 @@ tailwind.config = {
|
||||
.embed-flash.ok { background: #ecfdf5; border: 1px solid #a7f3d0; color: #065f46; }
|
||||
.embed-flash.err { background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; }
|
||||
.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 { .no-print { display: none !important; } .embed-titlebar { display: none; } }
|
||||
/* 화면 설명 드로어(팝업) — 현재 화면 위 오른쪽에 겹쳐 띄움 */
|
||||
.help-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(460px, 92vw); background: #fff; box-shadow: -8px 0 26px rgba(0,0,0,.18); z-index: 9999; display: none; flex-direction: column; }
|
||||
.help-drawer.open { display: flex; }
|
||||
.help-drawer-head { display: flex; align-items: center; justify-content: space-between; padding: .5rem .75rem; background: #1a2b4b; color: #fff; font-size: .8rem; font-weight: 700; flex-shrink: 0; }
|
||||
.help-drawer-head .hd-btns { display: flex; gap: 4px; }
|
||||
.help-drawer-head .hd-btn { color: #fff; background: rgba(255,255,255,.14); border: 0; width: 26px; height: 26px; border-radius: 6px; cursor: pointer; font-size: 13px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
|
||||
.help-drawer-head .hd-btn:hover { background: rgba(255,255,255,.28); }
|
||||
.help-drawer iframe { flex: 1; width: 100%; border: 0; background: #fff; }
|
||||
.help-drawer-grip { position: absolute; left: -4px; top: 0; bottom: 0; width: 8px; cursor: col-resize; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -76,6 +87,20 @@ tailwind.config = {
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<!-- 화면 설명 드로어(팝업) -->
|
||||
<div id="helpDrawer" class="help-drawer no-print" aria-hidden="true">
|
||||
<div class="help-drawer-grip" id="helpDrawerGrip"></div>
|
||||
<div class="help-drawer-head">
|
||||
<span><i class="fa-regular fa-circle-question"></i> 화면 설명</span>
|
||||
<div class="hd-btns">
|
||||
<a id="helpDrawerTab" href="#" class="hd-btn" title="탭으로 열기"><i class="fa-solid fa-up-right-from-square"></i></a>
|
||||
<button type="button" id="helpDrawerClose" class="hd-btn" title="닫기">×</button>
|
||||
</div>
|
||||
</div>
|
||||
<iframe id="helpDrawerFrame" title="화면 설명"></iframe>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
// 세션 만료 등으로 iframe 안에서 로그인 페이지가 열리면 상위 프레임을 로그인으로 보낸다.
|
||||
@@ -106,19 +131,46 @@ tailwind.config = {
|
||||
return u.href;
|
||||
} catch (e) { return null; }
|
||||
}
|
||||
// "이 화면 설명" → 워크스페이스 새 탭으로 매뉴얼 열기(없으면 새 창)
|
||||
// "이 화면 설명" → 현재 화면 위 오른쪽 드로어(팝업)로 띄워 동시에 보기
|
||||
var drawer = document.getElementById('helpDrawer');
|
||||
var dFrame = document.getElementById('helpDrawerFrame');
|
||||
function withEmbedUrl(url) { try { var x = new URL(url, location.href); x.searchParams.set('embed', '1'); return x.href; } catch (e) { return url; } }
|
||||
function openHelp(url) {
|
||||
var u = withEmbedUrl(url);
|
||||
if (dFrame.getAttribute('data-src') !== u) { dFrame.src = u; dFrame.setAttribute('data-src', u); }
|
||||
var tab = document.getElementById('helpDrawerTab'); if (tab) tab.setAttribute('href', url);
|
||||
drawer.classList.add('open');
|
||||
}
|
||||
function closeHelp() { drawer.classList.remove('open'); }
|
||||
document.addEventListener('click', function (e) {
|
||||
var h = e.target.closest ? e.target.closest('a.embed-help') : null;
|
||||
if (!h) return;
|
||||
e.preventDefault(); e.stopPropagation();
|
||||
var url = h.getAttribute('href');
|
||||
try {
|
||||
if (window.parent && window.parent !== window && typeof window.parent.wsOpenTab === 'function') {
|
||||
window.parent.wsOpenTab(url, '도움말'); return;
|
||||
}
|
||||
} catch (err) {}
|
||||
window.open(url, '_blank');
|
||||
openHelp(h.getAttribute('href'));
|
||||
}, true);
|
||||
document.getElementById('helpDrawerClose').addEventListener('click', closeHelp);
|
||||
document.addEventListener('keydown', function (e) { if (e.key === 'Escape') closeHelp(); });
|
||||
// 드로어 헤더의 "탭으로 열기" → 워크스페이스 탭으로(없으면 새 창)
|
||||
document.getElementById('helpDrawerTab').addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
var url = this.getAttribute('href') || '';
|
||||
try { if (window.parent && window.parent !== window && typeof window.parent.wsOpenTab === 'function') { window.parent.wsOpenTab(url, '도움말'); closeHelp(); return; } } catch (err) {}
|
||||
window.open(url, '_blank');
|
||||
});
|
||||
// 드로어 폭 드래그 조절
|
||||
(function () {
|
||||
var grip = document.getElementById('helpDrawerGrip'), dragging = false;
|
||||
grip.addEventListener('mousedown', function (e) { e.preventDefault(); dragging = true; document.body.style.userSelect = 'none'; });
|
||||
document.addEventListener('mousemove', function (e) { if (!dragging) return; var w = window.innerWidth - e.clientX; drawer.style.width = Math.min(window.innerWidth * 0.92, Math.max(300, w)) + 'px'; });
|
||||
document.addEventListener('mouseup', function () { dragging = false; document.body.style.userSelect = ''; });
|
||||
})();
|
||||
|
||||
// 글씨 크기(zoom) — 상단바에서 조절한 값을 적용. localStorage 공유 + storage 이벤트로 실시간 반영.
|
||||
function applyFontScale() {
|
||||
try { var s = parseInt(localStorage.getItem('jrj_font_scale') || '100', 10); if (!(s >= 70 && s <= 150)) s = 100; document.documentElement.style.zoom = (s / 100); } catch (e) {}
|
||||
}
|
||||
applyFontScale();
|
||||
window.addEventListener('storage', function (e) { if (e.key === 'jrj_font_scale') applyFontScale(); });
|
||||
|
||||
document.addEventListener('click', function (e) {
|
||||
var a = e.target.closest ? e.target.closest('a[href]') : null;
|
||||
|
||||
@@ -50,10 +50,12 @@ html { font-size: 18px; }
|
||||
</style>
|
||||
<style data-purpose="table-layout">
|
||||
.data-table { width: 100%; border-collapse: collapse; font-family: '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; }
|
||||
.main-content-area { height: calc(100vh - 130px); overflow: auto; }
|
||||
body { overflow: hidden; }
|
||||
@media print {
|
||||
|
||||
@@ -72,10 +72,12 @@ tailwind.config = {
|
||||
<?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; }
|
||||
@@ -90,6 +92,11 @@ tailwind.config = {
|
||||
<?= view('home/_dashboard_gov_portal_brand', ['brandHref' => base_url('/')]) ?>
|
||||
<?= view('home/_dashboard_gov_portal_topnav_click', $navPartial) ?>
|
||||
<div class="portal-header-utils" style="display:flex;align-items:center;gap:.5rem;">
|
||||
<div class="ws-fontctl" title="글씨 크기 조절" style="display:inline-flex;align-items:center;gap:2px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:1px;">
|
||||
<button type="button" id="wsFontMinus" title="글씨 작게" style="width:24px;height:22px;border:0;background:transparent;color:#fff;cursor:pointer;font-size:11px;line-height:1;border-radius:5px;">A−</button>
|
||||
<span id="wsFontPct" style="min-width:34px;text-align:center;color:#fff;font-size:.68rem;font-weight:600;">100%</span>
|
||||
<button type="button" id="wsFontPlus" title="글씨 크게" style="width:24px;height:22px;border:0;background:transparent;color:#fff;cursor:pointer;font-size:14px;line-height:1;border-radius:5px;">A+</button>
|
||||
</div>
|
||||
<span class="user-line">
|
||||
<?php if ($lgLabel !== ''): ?><strong><?= esc($lgLabel) ?></strong> · <?php endif; ?>
|
||||
<?= esc($levelName) ?> · <?= esc($mbName) ?>님
|
||||
@@ -120,7 +127,7 @@ tailwind.config = {
|
||||
<div style="display:flex;align-items:center;justify-content:space-between;gap:.5rem;">
|
||||
<h1 class="work-titlebar" style="margin-bottom:0;"><i class="fa-solid fa-folder-open tb-ico"></i><?= esc($title) ?></h1>
|
||||
<?php if ($helpUrl !== ''): ?>
|
||||
<a href="<?= esc($helpUrl, 'attr') ?>" target="_blank" rel="noopener" class="no-print" style="display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:6px;background:#fff;border:1px solid var(--border);color:#1a2b4b;text-decoration:none;font-size:.75rem;font-weight:600;white-space:nowrap;">
|
||||
<a href="<?= esc($helpUrl, 'attr') ?>" rel="noopener" class="no-print portal-help" style="display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:6px;background:#fff;border:1px solid var(--border);color:#1a2b4b;text-decoration:none;font-size:.75rem;font-weight:600;white-space:nowrap;">
|
||||
<i class="fa-regular fa-circle-question"></i> 이 화면 설명
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
@@ -207,5 +214,62 @@ tailwind.config = {
|
||||
else run();
|
||||
})();
|
||||
</script>
|
||||
|
||||
<!-- 화면 설명 드로어(팝업) -->
|
||||
<style>
|
||||
.help-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(460px, 92vw); background: #fff; box-shadow: -8px 0 26px rgba(0,0,0,.18); z-index: 9999; display: none; flex-direction: column; }
|
||||
.help-drawer.open { display: flex; }
|
||||
.help-drawer-head { display: flex; align-items: center; justify-content: space-between; padding: .5rem .75rem; background: #1a2b4b; color: #fff; font-size: .8rem; font-weight: 700; flex-shrink: 0; }
|
||||
.help-drawer-head .hd-btn { color: #fff; background: rgba(255,255,255,.14); border: 0; width: 26px; height: 26px; border-radius: 6px; cursor: pointer; font-size: 13px; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; margin-left: 4px; }
|
||||
.help-drawer-head .hd-btn:hover { background: rgba(255,255,255,.28); }
|
||||
.help-drawer iframe { flex: 1; width: 100%; border: 0; }
|
||||
.help-drawer-grip { position: absolute; left: -4px; top: 0; bottom: 0; width: 8px; cursor: col-resize; }
|
||||
</style>
|
||||
<div id="helpDrawer" class="help-drawer no-print" aria-hidden="true">
|
||||
<div class="help-drawer-grip" id="helpDrawerGrip"></div>
|
||||
<div class="help-drawer-head">
|
||||
<span><i class="fa-regular fa-circle-question"></i> 화면 설명</span>
|
||||
<div><button type="button" id="helpDrawerClose" class="hd-btn" title="닫기">×</button></div>
|
||||
</div>
|
||||
<iframe id="helpDrawerFrame" title="화면 설명"></iframe>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var drawer = document.getElementById('helpDrawer'), dFrame = document.getElementById('helpDrawerFrame');
|
||||
function openHelp(url) {
|
||||
var u = url; try { var x = new URL(url, location.href); x.searchParams.set('embed', '1'); u = x.href; } catch (e) {}
|
||||
if (dFrame.getAttribute('data-src') !== u) { dFrame.src = u; dFrame.setAttribute('data-src', u); }
|
||||
drawer.classList.add('open');
|
||||
}
|
||||
function closeHelp() { drawer.classList.remove('open'); }
|
||||
document.addEventListener('click', function (e) {
|
||||
var h = e.target.closest ? e.target.closest('a.portal-help') : null;
|
||||
if (!h) return;
|
||||
e.preventDefault();
|
||||
openHelp(h.getAttribute('href'));
|
||||
});
|
||||
document.getElementById('helpDrawerClose').addEventListener('click', closeHelp);
|
||||
document.addEventListener('keydown', function (e) { if (e.key === 'Escape') closeHelp(); });
|
||||
var grip = document.getElementById('helpDrawerGrip'), dragging = false;
|
||||
grip.addEventListener('mousedown', function (e) { e.preventDefault(); dragging = true; document.body.style.userSelect = 'none'; });
|
||||
document.addEventListener('mousemove', function (e) { if (!dragging) return; var w = window.innerWidth - e.clientX; drawer.style.width = Math.min(window.innerWidth * 0.92, Math.max(300, w)) + 'px'; });
|
||||
document.addEventListener('mouseup', function () { dragging = false; document.body.style.userSelect = ''; });
|
||||
|
||||
// 글씨 크기 조절 — 본문(.work-main) 영역에 zoom 적용. 헤더/사이드바는 그대로.
|
||||
var FONT_KEY = 'jrj_font_scale';
|
||||
var target = document.querySelector('.work-main') || document.body;
|
||||
function curScale() { var s = parseInt(localStorage.getItem(FONT_KEY) || '100', 10); return (s >= 70 && s <= 150) ? s : 100; }
|
||||
function applyScale(s) {
|
||||
s = Math.min(150, Math.max(70, s));
|
||||
try { localStorage.setItem(FONT_KEY, String(s)); } catch (e) {}
|
||||
target.style.zoom = (s / 100);
|
||||
var pct = document.getElementById('wsFontPct'); if (pct) pct.textContent = s + '%';
|
||||
}
|
||||
applyScale(curScale());
|
||||
var plus = document.getElementById('wsFontPlus'), minus = document.getElementById('wsFontMinus');
|
||||
if (plus) plus.addEventListener('click', function () { applyScale(curScale() + 10); });
|
||||
if (minus) minus.addEventListener('click', function () { applyScale(curScale() - 10); });
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -76,6 +76,8 @@ if ($effectiveLgIdx) {
|
||||
.ws-drag-overlay.v { cursor: col-resize; }
|
||||
.ws-drag-overlay.h { cursor: row-resize; }
|
||||
.ws-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #94a3b8; font-size: .9rem; gap: .5rem; z-index: 2; background: #f0f4f8; }
|
||||
.ws-toast { position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%) translateY(10px); background: #243a5e; color: #fff; padding: .6rem 1rem; border-radius: 8px; font-size: .8rem; font-weight: 600; box-shadow: 0 8px 22px rgba(0,0,0,.25); opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; z-index: 10000; max-width: 80vw; text-align: center; }
|
||||
.ws-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
|
||||
</style>
|
||||
</head>
|
||||
<body class="gov-portal-shell">
|
||||
@@ -84,6 +86,11 @@ if ($effectiveLgIdx) {
|
||||
<?= view('home/_dashboard_gov_portal_brand', ['brandHref' => base_url('workspace')]) ?>
|
||||
<?= view('home/_dashboard_gov_portal_topnav_click', $navPartial) ?>
|
||||
<div class="portal-header-utils" style="display:flex;align-items:center;gap:.5rem;">
|
||||
<div class="ws-fontctl" title="글씨 크기 조절" style="display:inline-flex;align-items:center;gap:2px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:1px;">
|
||||
<button type="button" id="wsFontMinus" title="글씨 작게" style="width:24px;height:22px;border:0;background:transparent;color:#fff;cursor:pointer;font-size:11px;line-height:1;border-radius:5px;">A−</button>
|
||||
<span id="wsFontPct" style="min-width:34px;text-align:center;color:#fff;font-size:.68rem;font-weight:600;">100%</span>
|
||||
<button type="button" id="wsFontPlus" title="글씨 크게" style="width:24px;height:22px;border:0;background:transparent;color:#fff;cursor:pointer;font-size:14px;line-height:1;border-radius:5px;">A+</button>
|
||||
</div>
|
||||
<span class="user-line">
|
||||
<?php if ($lgLabel !== ''): ?><strong><?= esc($lgLabel) ?></strong> · <?php endif; ?>
|
||||
<?= esc($levelName) ?> · <?= esc($mbName) ?>님
|
||||
@@ -107,8 +114,10 @@ if ($effectiveLgIdx) {
|
||||
<button type="button" data-mode="lr" title="2분할 (좌우)"><i class="fa-solid fa-table-columns"></i></button>
|
||||
<button type="button" data-mode="tb" title="2분할 (상하)"><i class="fa-solid fa-table-columns fa-rotate-90"></i></button>
|
||||
<button type="button" data-mode="quad" title="4분할"><i class="fa-solid fa-table-cells-large"></i></button>
|
||||
<button type="button" id="wsCloseAll" title="모든 탭 닫기" style="margin-left:6px;width:auto;padding:0 8px;gap:4px;"><i class="fa-regular fa-rectangle-xmark"></i><span style="font-size:11px;">모두 닫기</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ws-toast" id="wsToast" role="status" aria-live="polite"></div>
|
||||
<div class="ws-panels" id="wsPanels">
|
||||
<div class="ws-empty" id="wsEmpty">
|
||||
<i class="fa-regular fa-window-restore" style="font-size:1.6rem;opacity:.5;"></i>
|
||||
@@ -133,6 +142,15 @@ if ($effectiveLgIdx) {
|
||||
var slots = [null]; // 칸별로 배치된 tab id (길이 = 칸 수)
|
||||
var focused = 0; // 포커스된 칸 인덱스
|
||||
|
||||
var toastEl = document.getElementById('wsToast'), toastTimer = null;
|
||||
function showToast(msg) {
|
||||
if (!toastEl) return;
|
||||
toastEl.textContent = msg;
|
||||
toastEl.classList.add('show');
|
||||
clearTimeout(toastTimer);
|
||||
toastTimer = setTimeout(function () { toastEl.classList.remove('show'); }, 2800);
|
||||
}
|
||||
|
||||
function norm(u) { try { var a = new URL(u, location.origin); return a.pathname + a.search; } catch (e) { return u; } }
|
||||
function withEmbed(u) {
|
||||
try { var a = new URL(u, location.origin); a.searchParams.set('embed', '1'); return a.pathname + a.search; }
|
||||
@@ -342,6 +360,20 @@ if ($effectiveLgIdx) {
|
||||
b.addEventListener('click', function () { setLayout(b.getAttribute('data-mode')); });
|
||||
});
|
||||
|
||||
// 모든 탭 닫기 — 기본 "업무 현황"(대시보드) 탭은 남긴다
|
||||
var DASH_URL = '<?= base_url('/') ?>';
|
||||
function closeAllTabs() {
|
||||
var dashId = norm(DASH_URL);
|
||||
var others = order.filter(function (id) { return id !== dashId; });
|
||||
if (!others.length) return; // 업무 현황만 있으면 닫을 것 없음
|
||||
if (!window.confirm('업무 현황을 제외한 모든 탭(' + others.length + '개)을 닫을까요?')) return;
|
||||
others.forEach(function (id) { closeTab(id); });
|
||||
if (!tabs[dashId]) openTab(DASH_URL, '업무 현황'); else placeInFocused(dashId);
|
||||
showToast('업무 현황만 남기고 모두 닫았습니다.');
|
||||
}
|
||||
var closeAllBtn = document.getElementById('wsCloseAll');
|
||||
if (closeAllBtn) closeAllBtn.addEventListener('click', closeAllTabs);
|
||||
|
||||
function reloadTab(id) {
|
||||
var t = tabs[id];
|
||||
if (!t) return;
|
||||
@@ -362,7 +394,11 @@ if ($effectiveLgIdx) {
|
||||
function openTab(url, title, opts) {
|
||||
var id = norm(url);
|
||||
if (tabs[id]) { if (!(opts && opts.noFocus)) placeInFocused(id); return; }
|
||||
if (order.length >= MAX) { closeTab(order[0]); } // 오래된 탭 정리
|
||||
// 최대치 도달 시: 자동 삭제하지 않고 안내만 (복원 중에는 안내 생략)
|
||||
if (order.length >= MAX) {
|
||||
if (!(opts && opts.noFocus)) showToast('탭은 최대 ' + MAX + '개까지 열 수 있습니다. 사용하지 않는 탭을 닫아 주세요.');
|
||||
return;
|
||||
}
|
||||
var frame = document.createElement('iframe');
|
||||
frame.className = 'ws-frame';
|
||||
frame.src = withEmbed(url);
|
||||
@@ -430,6 +466,22 @@ if ($effectiveLgIdx) {
|
||||
}
|
||||
document.addEventListener('keydown', handleShortcut);
|
||||
|
||||
// 글씨 크기 조절 — 각 탭(iframe) 내용에 zoom 적용. localStorage 공유 + storage 이벤트로 새 탭/실시간 반영.
|
||||
var FONT_KEY = 'jrj_font_scale';
|
||||
function curFontScale() { var s = parseInt(localStorage.getItem(FONT_KEY) || '100', 10); return (s >= 70 && s <= 150) ? s : 100; }
|
||||
function setFontScale(s) {
|
||||
s = Math.min(150, Math.max(70, s));
|
||||
try { localStorage.setItem(FONT_KEY, String(s)); } catch (e) {}
|
||||
var pct = document.getElementById('wsFontPct'); if (pct) pct.textContent = s + '%';
|
||||
Object.keys(tabs).forEach(function (k) { try { tabs[k].frame.contentDocument.documentElement.style.zoom = (s / 100); } catch (e) {} });
|
||||
}
|
||||
(function () {
|
||||
var pct = document.getElementById('wsFontPct'); if (pct) pct.textContent = curFontScale() + '%';
|
||||
var plus = document.getElementById('wsFontPlus'), minus = document.getElementById('wsFontMinus');
|
||||
if (plus) plus.addEventListener('click', function () { setFontScale(curFontScale() + 10); });
|
||||
if (minus) minus.addEventListener('click', function () { setFontScale(curFontScale() - 10); });
|
||||
})();
|
||||
|
||||
// 좌측 사이드바 소메뉴 클릭 → 포커스 칸에 열기
|
||||
document.querySelector('.sidebar').addEventListener('click', function (e) {
|
||||
var a = e.target.closest('a[href]');
|
||||
|
||||
@@ -191,7 +191,7 @@ $mbName = session()->get('mb_name') ?? '담당자';
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<section class="bg-white border border-gray-200 rounded-lg shadow-sm overflow-hidden mb-4">
|
||||
<section class="bg-white border border-gray-200 rounded-lg p-4 shadow-sm overflow-hidden mb-4">
|
||||
<div class="px-4 py-3 border-b border-gray-200 flex flex-wrap items-center justify-between gap-2 bg-gray-50/80">
|
||||
<h3 class="font-semibold text-gray-800"><i class="fa-solid fa-list-ul text-[#2b4c8c] mr-2"></i>지정판매소 구매신청 (최근)</h3>
|
||||
<button type="button" class="text-xs text-sky-700 hover:underline font-medium">전체 보기</button>
|
||||
|
||||
@@ -82,7 +82,7 @@ $requestRows = [
|
||||
</section>
|
||||
|
||||
<section class="grid grid-cols-1 xl:grid-cols-2 gap-3">
|
||||
<article class="bg-white border border-gray-200 rounded-lg shadow-sm overflow-hidden">
|
||||
<article class="bg-white border border-gray-200 rounded-lg p-4 shadow-sm overflow-hidden">
|
||||
<div class="px-3 py-2 border-b border-gray-100 bg-gray-50 flex items-center justify-between">
|
||||
<h3 class="text-xs font-semibold text-gray-800">재고 상태 요약</h3>
|
||||
<a href="<?= base_url('bag/inventory') ?>" class="text-[10px] text-blue-600 hover:underline">상세</a>
|
||||
@@ -112,7 +112,7 @@ $requestRows = [
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="bg-white border border-gray-200 rounded-lg shadow-sm overflow-hidden">
|
||||
<article class="bg-white border border-gray-200 rounded-lg p-4 shadow-sm overflow-hidden">
|
||||
<div class="px-3 py-2 border-b border-gray-100 bg-gray-50 flex items-center justify-between">
|
||||
<h3 class="text-xs font-semibold text-gray-800">최근 구매신청 처리 현황</h3>
|
||||
<a href="<?= base_url('bag/order/create') ?>" class="text-[10px] text-blue-600 hover:underline">등록</a>
|
||||
|
||||
@@ -181,25 +181,25 @@ $hasResult = $result !== null && ($result['ok'] ?? false);
|
||||
<table class="w-full border border-gray-300 border-collapse">
|
||||
<thead>
|
||||
<tr class="bg-gray-100">
|
||||
<th class="border border-gray-300 px-2 py-1 text-left">단위</th>
|
||||
<th class="border border-gray-300 px-2 py-1 text-left">입력 예시</th>
|
||||
<th class="border border-gray-300 px-2 py-1 text-left">설명</th>
|
||||
<th class="border border-gray-300 rounded-lg px-2 py-1 text-left">단위</th>
|
||||
<th class="border border-gray-300 rounded-lg px-2 py-1 text-left">입력 예시</th>
|
||||
<th class="border border-gray-300 rounded-lg px-2 py-1 text-left">설명</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">LOT</td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top"><code>OQXCKH</code></td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">LOT</td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top"><code>OQXCKH</code></td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">
|
||||
발주 LOT 번호만 입력합니다.<br>
|
||||
바코드: <code>OQXCKH - - -</code><br>
|
||||
인쇄숫자/인식번호는 LOT 기준으로만 표시됩니다.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">박스</td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top"><code>OQXCKH-000008-B001</code></td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">박스</td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top"><code>OQXCKH-000008-B001</code></td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">
|
||||
박스 바코드(LOT-입고번호-B박스번호)를 그대로 입력합니다.<br>
|
||||
바코드: <code>LOT 입고번호 B박스 -</code><br>
|
||||
인쇄숫자: <code>입고번호 박스번호 -</code><br>
|
||||
@@ -207,9 +207,9 @@ $hasResult = $result !== null && ($result['ok'] ?? false);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">팩</td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top"><code>OQXCKH-000008-P299</code></td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">팩</td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top"><code>OQXCKH-000008-P299</code></td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">
|
||||
팩 바코드(LOT-입고번호-P팩번호)를 그대로 입력합니다.<br>
|
||||
바코드: <code>LOT 입고번호 P팩 -</code><br>
|
||||
인쇄숫자: <code>입고번호 팩번호 -</code><br>
|
||||
@@ -217,9 +217,9 @@ $hasResult = $result !== null && ($result['ok'] ?? false);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">낱장</td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top"><code>OQXCKH-000008-P299-S00125</code></td>
|
||||
<td class="border border-gray-300 px-2 py-1 align-top">
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">낱장</td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top"><code>OQXCKH-000008-P299-S00125</code></td>
|
||||
<td class="border border-gray-300 rounded-lg px-2 py-1 align-top">
|
||||
낱장 바코드(LOT-입고번호-P팩-S장번호)를 그대로 입력합니다.<br>
|
||||
바코드: <code>LOT 입고번호 P팩 S장번호</code><br>
|
||||
인쇄숫자: <code>입고번호 팩번호 장번호</code><br>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<div class="border border-red-300 bg-red-50 text-red-800 px-3 py-2 text-sm"><?= esc((string) session()->getFlashdata('error')) ?></div>
|
||||
<?php endif; ?>
|
||||
|
||||
<form method="get" action="<?= base_url('bag/order/change') ?>" class="border border-gray-300 bg-white p-3 flex flex-wrap items-end gap-4">
|
||||
<form method="get" action="<?= base_url('bag/order/change') ?>" class="border border-gray-300 rounded-lg bg-white p-3 flex flex-wrap items-end gap-4">
|
||||
<div class="flex items-center gap-2">
|
||||
<label for="hub_month" class="text-sm font-bold text-gray-700">발주월</label>
|
||||
<select id="hub_month" name="month" class="border border-gray-300 rounded px-2 py-1 w-44 text-sm">
|
||||
@@ -55,15 +55,15 @@
|
||||
</form>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-12 gap-2">
|
||||
<section class="lg:col-span-5 border border-gray-300 bg-white">
|
||||
<section class="lg: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-[min(420px,60vh)]">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-28">발주일</th>
|
||||
<th>제작업체</th>
|
||||
<th class="w-20">상태</th>
|
||||
<th class="w-28 text-center">발주일</th>
|
||||
<th class="text-left">제작업체</th>
|
||||
<th class="w-20 text-center">상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -24,7 +24,7 @@ for ($year = $baseYear - 2; $year <= $baseYear + 2; $year++) {
|
||||
<span class="text-sm font-bold text-gray-700">LOT-No 디스켓 불출</span>
|
||||
</section>
|
||||
|
||||
<section class="border border-gray-300 p-2 mt-2 bg-white">
|
||||
<section class="border border-gray-300 rounded-lg p-2 mt-2 bg-white">
|
||||
<form method="get" class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-6 gap-2 text-sm">
|
||||
<div class="flex items-center gap-2 min-w-0">
|
||||
<label class="font-bold text-gray-700 whitespace-nowrap shrink-0">시작월</label>
|
||||
@@ -65,20 +65,20 @@ for ($year = $baseYear - 2; $year <= $baseYear + 2; $year++) {
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="border border-gray-300 mt-2 bg-white">
|
||||
<section class="border border-gray-300 rounded-lg mt-2 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">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-20">작업</th>
|
||||
<th class="w-24">발주일</th>
|
||||
<th class="w-28">LOT-No</th>
|
||||
<th>제작업체</th>
|
||||
<th class="w-24">품목수</th>
|
||||
<th class="w-24">박스합계</th>
|
||||
<th class="w-28">낱장합계</th>
|
||||
<th class="w-20">상태</th>
|
||||
<th class="w-20 text-center">작업</th>
|
||||
<th class="w-24 text-center">발주일</th>
|
||||
<th class="w-28 text-center">LOT-No</th>
|
||||
<th class="text-left">제작업체</th>
|
||||
<th class="w-24 text-right">품목수</th>
|
||||
<th class="w-24 text-right">박스합계</th>
|
||||
<th class="w-28 text-right">낱장합계</th>
|
||||
<th class="w-20 text-center">상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<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">
|
||||
<?php if (session()->getFlashdata('success')): ?>
|
||||
<div class="mb-3 border border-emerald-300 bg-emerald-50 text-emerald-800 px-3 py-2 rounded-sm text-sm">
|
||||
<?= esc(session()->getFlashdata('success')) ?>
|
||||
@@ -33,7 +33,7 @@
|
||||
<label class="block text-sm font-bold text-gray-700 w-28">판매소 검색</label>
|
||||
<div class="relative flex-1 min-w-[20rem]">
|
||||
<input id="shop-search" class="border border-gray-300 rounded px-3 py-1.5 text-sm w-[34rem] max-w-full" type="text" autocomplete="off" placeholder="코드/사업자번호/대표자명/상호/전화/주소 중 하나 입력"/>
|
||||
<div id="shop-search-suggest" class="hidden absolute left-0 top-full mt-1 w-[48rem] max-w-[90vw] max-h-72 overflow-auto border border-gray-300 bg-white shadow-lg z-30"></div>
|
||||
<div id="shop-search-suggest" class="hidden absolute left-0 top-full mt-1 w-[48rem] max-w-[90vw] max-h-72 overflow-auto border border-gray-300 rounded-lg bg-white shadow-lg z-30"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
</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 class="py-1 text-gray-800 font-semibold"><?= esc((string) ($receiptNo ?? 1)) ?></td></tr>
|
||||
@@ -73,7 +73,7 @@
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-2 gap-4">
|
||||
<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>
|
||||
@@ -85,7 +85,7 @@
|
||||
</table>
|
||||
</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>
|
||||
<div class="flex flex-wrap items-center gap-2 mb-2">
|
||||
<label class="block text-sm font-bold text-gray-700 w-24">결제구분 <span class="text-red-500">*</span></label>
|
||||
@@ -110,19 +110,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-14 text-center">구분</th>
|
||||
<th class="w-56">품목</th>
|
||||
<th class="w-40">1박스(낱장/판매가)</th>
|
||||
<th class="w-40">1팩(낱장/판매가)</th>
|
||||
<th class="w-24">단가</th>
|
||||
<th class="w-28">주문수량</th>
|
||||
<th class="w-28">금액</th>
|
||||
<th class="w-44">포장(박스/팩/낱장)</th>
|
||||
<th class="w-20">삭제</th>
|
||||
<th class="w-40 text-right">1박스(낱장/판매가)</th>
|
||||
<th class="w-40 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-44 text-right">포장(박스/팩/낱장)</th>
|
||||
<th class="w-20 text-center">삭제</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="order-rows">
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
</section>
|
||||
|
||||
<div class="grid grid-cols-1 xl:grid-cols-5 gap-3 mt-2">
|
||||
<section class="xl:col-span-2 border border-gray-300 bg-white">
|
||||
<section class="xl:col-span-2 border border-gray-300 rounded-lg bg-white">
|
||||
<div class="px-3 py-2 border-b border-gray-200 bg-gray-50 text-sm font-semibold text-gray-700">접수 리스트(전화)</div>
|
||||
<div class="max-h-[72vh] overflow-auto">
|
||||
<table class="w-full data-table text-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">번호</th>
|
||||
<th>판매소</th>
|
||||
<th class="w-28">접수일</th>
|
||||
<th class="w-24">상태</th>
|
||||
<th class="w-14 text-center">번호</th>
|
||||
<th class="text-left">판매소</th>
|
||||
<th class="w-28 text-center">접수일</th>
|
||||
<th class="w-24 text-center">상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="order-list-body">
|
||||
@@ -38,7 +38,7 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="xl:col-span-3 border border-gray-300 bg-white">
|
||||
<section class="xl:col-span-3 border border-gray-300 rounded-lg bg-white">
|
||||
<div class="px-3 py-2 border-b border-gray-200 bg-gray-50 text-sm font-semibold text-gray-700">상세 정보</div>
|
||||
|
||||
<form id="order-detail-form" action="<?= base_url('bag/order/phone/manage/update') ?>" method="POST" class="p-3 space-y-3">
|
||||
@@ -46,28 +46,28 @@
|
||||
<input type="hidden" name="so_idx" id="detail-so-idx" value=""/>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-2 text-sm">
|
||||
<div class="border border-gray-200 p-2 bg-gray-50">
|
||||
<div class="border border-gray-200 rounded-lg p-2 bg-gray-50">
|
||||
<div><span class="font-semibold text-gray-700">접수번호:</span> <span id="detail-so-no">-</span></div>
|
||||
<div><span class="font-semibold text-gray-700">판매소:</span> <span id="detail-shop-name">-</span></div>
|
||||
<div><span class="font-semibold text-gray-700">결제구분:</span> <span id="detail-payment">-</span></div>
|
||||
</div>
|
||||
<div class="border border-gray-200 p-2 bg-gray-50">
|
||||
<div class="border border-gray-200 rounded-lg p-2 bg-gray-50">
|
||||
<div><span class="font-semibold text-gray-700">접수일:</span> <span id="detail-order-date">-</span></div>
|
||||
<div><span class="font-semibold text-gray-700">배달일:</span> <span id="detail-delivery-date">-</span></div>
|
||||
<div><span class="font-semibold text-gray-700">상태:</span> <span id="detail-status">-</span></div>
|
||||
</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">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">번호</th>
|
||||
<th>품목</th>
|
||||
<th class="w-24">단가</th>
|
||||
<th class="w-24">접수량</th>
|
||||
<th class="w-28">접수금액</th>
|
||||
<th class="w-40">포장단위(박스/팩/낱장)</th>
|
||||
<th class="w-14 text-center">번호</th>
|
||||
<th class="text-left">품목</th>
|
||||
<th class="w-24 text-right">단가</th>
|
||||
<th class="w-24 text-right">접수량</th>
|
||||
<th class="w-28 text-right">접수금액</th>
|
||||
<th class="w-40 text-right">포장단위(박스/팩/낱장)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="detail-items-body">
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user