Files
sam-manage/resources/views/barobill/members/partials/stats.blade.php
pro f60f84670a feat: 바로빌 회원사관리 CRUD 기능 구현
레거시(sam/sales/barobill/registration)를 Laravel 스타일로 마이그레이션

- Migration: barobill_members 테이블 생성
- Model: BarobillMember (상태 라벨, 사업자번호 포맷팅 등)
- API Controller: CRUD + 통계 조회 (HTMX HTML 반환 지원)
- API Routes: /api/admin/barobill/members/*
- Views:
  - index.blade.php (통계 카드, 필터, 테이블, 모달)
  - partials/table.blade.php (HTMX 테이블)
  - partials/stats.blade.php (통계 카드)
  - partials/modal-form.blade.php (등록/수정 폼, 자동완성)

기능:
- 회원사 목록 조회 (검색, 상태 필터)
- 회원사 등록 (사업자번호 중복 체크)
- 회원사 수정 (모달)
- 회원사 삭제 (확인 후)
- 테스트 데이터 자동완성

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 08:49:25 +09:00

56 lines
3.0 KiB
PHP

<!-- 연동 회원사 -->
<div class="bg-white rounded-lg p-6 shadow-sm border border-gray-100">
<div class="flex items-start justify-between mb-2">
<h3 class="text-xs font-semibold text-gray-400 uppercase">연동 회원사</h3>
<div class="p-1.5 rounded-lg bg-blue-50 text-blue-600">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
</svg>
</div>
</div>
<div class="text-2xl font-bold text-gray-900">{{ number_format($stats['total']) }}</div>
<div class="text-xs text-gray-400 mt-1">DB 실시간 합계</div>
</div>
<!-- 활성 회원사 -->
<div class="bg-white rounded-lg p-6 shadow-sm border border-gray-100">
<div class="flex items-start justify-between mb-2">
<h3 class="text-xs font-semibold text-gray-400 uppercase">활성 회원사</h3>
<div class="p-1.5 rounded-lg bg-green-50 text-green-600">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
</div>
<div class="text-2xl font-bold text-gray-900">{{ number_format($stats['active']) }}</div>
<div class="text-xs text-gray-400 mt-1">정상 운영 </div>
</div>
<!-- 비활성 회원사 -->
<div class="bg-white rounded-lg p-6 shadow-sm border border-gray-100">
<div class="flex items-start justify-between mb-2">
<h3 class="text-xs font-semibold text-gray-400 uppercase">비활성</h3>
<div class="p-1.5 rounded-lg bg-gray-100 text-gray-600">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636" />
</svg>
</div>
</div>
<div class="text-2xl font-bold text-gray-900">{{ number_format($stats['inactive']) }}</div>
<div class="text-xs text-gray-400 mt-1">일시 중지</div>
</div>
<!-- 대기중 -->
<div class="bg-white rounded-lg p-6 shadow-sm border border-gray-100">
<div class="flex items-start justify-between mb-2">
<h3 class="text-xs font-semibold text-gray-400 uppercase">대기중</h3>
<div class="p-1.5 rounded-lg bg-yellow-50 text-yellow-600">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
</div>
<div class="text-2xl font-bold text-gray-900">{{ number_format($stats['pending']) }}</div>
<div class="text-xs text-gray-400 mt-1">승인 대기</div>
</div>