diff --git a/app/Http/Controllers/Sales/SalesDashboardController.php b/app/Http/Controllers/Sales/SalesDashboardController.php index 0f64fc80..c548cafb 100644 --- a/app/Http/Controllers/Sales/SalesDashboardController.php +++ b/app/Http/Controllers/Sales/SalesDashboardController.php @@ -15,6 +15,26 @@ class SalesDashboardController extends Controller * 대시보드 화면 */ public function index(Request $request): View + { + $data = $this->getDashboardData($request); + + return view('sales.dashboard.index', $data); + } + + /** + * HTMX 부분 새로고침용 데이터 반환 + */ + public function refresh(Request $request): View + { + $data = $this->getDashboardData($request); + + return view('sales.dashboard.partials.data-container', $data); + } + + /** + * 대시보드 데이터 조회 + */ + private function getDashboardData(Request $request): array { // 기간 설정 $period = $request->input('period', 'month'); // month or custom @@ -73,7 +93,7 @@ public function index(Request $request): View 'confirmed_commission' => 0, // 확정 가입비 수당 ]; - return view('sales.dashboard.index', compact( + return compact( 'stats', 'commissionByRole', 'totalCommissionRatio', @@ -83,6 +103,6 @@ public function index(Request $request): View 'month', 'startDate', 'endDate' - )); + ); } } diff --git a/resources/views/sales/dashboard/index.blade.php b/resources/views/sales/dashboard/index.blade.php index d3c15742..b6b7cb4f 100644 --- a/resources/views/sales/dashboard/index.blade.php +++ b/resources/views/sales/dashboard/index.blade.php @@ -2,6 +2,20 @@ @section('title', '영업관리 대시보드') +@push('styles') + +@endpush + @section('content')
@@ -24,349 +38,9 @@
- -
-

전체 누적 실적

-
- -
-
- 총 가입비 -
- - - -
-
-

₩{{ number_format($stats['total_membership_fee']) }}

-

전체 누적 가입비

-
- - -
-
- 총 수당 -
- - - -
-
-

₩{{ number_format($stats['total_commission']) }}

-

지급 승인 완료 기준 ({{ $stats['commission_rate'] }}%)

-
- - -
-
- 전체 건수 -
- - - -
-
-

{{ number_format($stats['total_contracts']) }}건

-

전체 계약 건수

-
- - -
-
- 가입 승인 대기 -
- - - -
-
-

{{ number_format($stats['pending_membership_approval']) }}건

-

조직 내 가입 승인 대기

-
- - -
-
- 지급 승인 대기 -
- - - -
-
-

{{ number_format($stats['pending_payment_approval']) }}건

-

조직 내 지급 승인 대기

-
-
-
- - -
-
- - - -

기간별 조회

-
- -
-
- - -
- - -
- {{ $year }}년 {{ $month }}월 -
- - -
- - ~ - - -
-
-
- - -
-
- - - -

역할별 수당 상세

-
- -
- @foreach($commissionByRole as $role) -
-
-
- - - - {{ $role['name'] }} -
- @if($role['rate'] !== null) - {{ $role['rate'] }}% - @else - 별도 - @endif -
- @if($role['amount'] !== null) -

₩{{ number_format($role['amount']) }}

- @else -

운영팀 산정

- @endif -
- @endforeach -
- - -
-
-
-

₩{{ number_format($totalCommissionRatio) }}

-

총 가입비 대비 수당

-
-
-
-
- - - @if($stats['total_contracts'] == 0) -
-
-
- - - -
-

실적 데이터가 존재하지 않습니다

-

선택한 기간 내에 등록된 계약 정보나 조직 구성 데이터가 없습니다.

-

아직 실적이 발생하지 않았거나, 시스템 동기화 중일 수 있습니다.

- -
-
- @endif - - -
-
-
- - - -
-

수익 및 테넌트 관리

-
- -
- -
-
- 관리 테넌트 -
- - - -
-
-

{{ number_format($tenantStats['total_tenants'] ?? 0) }}개

-

등록된 총 업체 수

-
- - -
-
- 총 가입비 실적 -
- - - -
-
-

₩{{ number_format($tenantStats['total_membership_revenue'] ?? 0) }}

-

전체 가입비 합계

-
- - -
-
- 누적 가입비 수당 -
- - - -
-
-

₩{{ number_format($tenantStats['total_commission_accumulated'] ?? 0) }}

-

전체 가입비 수당 합계

-
- - -
-
- 확정 가입비 수당 (지급대상) -
- - - -
-
-

₩{{ number_format($tenantStats['confirmed_commission'] ?? 0) }}

-

운영팀 승인 완료된 금액 (지급: 계약 익월 말일)

-
-
+ +
+ @include('sales.dashboard.partials.data-container')
- -@push('scripts') - -@endpush @endsection diff --git a/resources/views/sales/dashboard/partials/commission-by-role.blade.php b/resources/views/sales/dashboard/partials/commission-by-role.blade.php new file mode 100644 index 00000000..9887529e --- /dev/null +++ b/resources/views/sales/dashboard/partials/commission-by-role.blade.php @@ -0,0 +1,67 @@ +{{-- 역할별 수당 상세 --}} +
+
+ + + +

역할별 수당 상세

+
+ +
+ @foreach($commissionByRole as $role) +
+
+
+ + + + {{ $role['name'] }} +
+ @if($role['rate'] !== null) + {{ $role['rate'] }}% + @else + 별도 + @endif +
+ @if($role['amount'] !== null) +

₩{{ number_format($role['amount']) }}

+ @else +

운영팀 산정

+ @endif +
+ @endforeach +
+ + +
+
+
+

₩{{ number_format($totalCommissionRatio) }}

+

총 가입비 대비 수당

+
+
+
+
diff --git a/resources/views/sales/dashboard/partials/data-container.blade.php b/resources/views/sales/dashboard/partials/data-container.blade.php new file mode 100644 index 00000000..a0f767d9 --- /dev/null +++ b/resources/views/sales/dashboard/partials/data-container.blade.php @@ -0,0 +1,98 @@ +{{-- 대시보드 데이터 컨테이너 (HTMX로 새로고침되는 영역) --}} + +{{-- 전체 누적 실적 --}} +@include('sales.dashboard.partials.stats') + +{{-- 기간별 조회 --}} +
+
+ + + +

기간별 조회

+
+ +
+
+ + +
+ + +
+ {{ $year }}년 {{ $month }}월 +
+ + +
+ + ~ + + +
+ + +
+ + + + +
+
+
+ +{{-- 역할별 수당 상세 --}} +@include('sales.dashboard.partials.commission-by-role') + +{{-- 실적 데이터 없음 안내 --}} +@include('sales.dashboard.partials.no-data') + +{{-- 수익 및 테넌트 관리 --}} +@include('sales.dashboard.partials.tenant-stats') + + diff --git a/resources/views/sales/dashboard/partials/no-data.blade.php b/resources/views/sales/dashboard/partials/no-data.blade.php new file mode 100644 index 00000000..95725e7b --- /dev/null +++ b/resources/views/sales/dashboard/partials/no-data.blade.php @@ -0,0 +1,26 @@ +{{-- 실적 데이터 없음 안내 --}} +@if($stats['total_contracts'] == 0) +
+
+
+ + + +
+

실적 데이터가 존재하지 않습니다

+

선택한 기간 내에 등록된 계약 정보나 조직 구성 데이터가 없습니다.

+

아직 실적이 발생하지 않았거나, 시스템 동기화 중일 수 있습니다.

+ +
+
+@endif diff --git a/resources/views/sales/dashboard/partials/stats.blade.php b/resources/views/sales/dashboard/partials/stats.blade.php new file mode 100644 index 00000000..12e1ef6b --- /dev/null +++ b/resources/views/sales/dashboard/partials/stats.blade.php @@ -0,0 +1,75 @@ +{{-- 전체 누적 실적 --}} +
+

전체 누적 실적

+
+ +
+
+ 총 가입비 +
+ + + +
+
+

₩{{ number_format($stats['total_membership_fee']) }}

+

전체 누적 가입비

+
+ + +
+
+ 총 수당 +
+ + + +
+
+

₩{{ number_format($stats['total_commission']) }}

+

지급 승인 완료 기준 ({{ $stats['commission_rate'] }}%)

+
+ + +
+
+ 전체 건수 +
+ + + +
+
+

{{ number_format($stats['total_contracts']) }}건

+

전체 계약 건수

+
+ + +
+
+ 가입 승인 대기 +
+ + + +
+
+

{{ number_format($stats['pending_membership_approval']) }}건

+

조직 내 가입 승인 대기

+
+ + +
+
+ 지급 승인 대기 +
+ + + +
+
+

{{ number_format($stats['pending_payment_approval']) }}건

+

조직 내 지급 승인 대기

+
+
+
diff --git a/resources/views/sales/dashboard/partials/tenant-stats.blade.php b/resources/views/sales/dashboard/partials/tenant-stats.blade.php new file mode 100644 index 00000000..ef61b021 --- /dev/null +++ b/resources/views/sales/dashboard/partials/tenant-stats.blade.php @@ -0,0 +1,69 @@ +{{-- 수익 및 테넌트 관리 --}} +
+
+
+ + + +
+

수익 및 테넌트 관리

+
+ +
+ +
+
+ 관리 테넌트 +
+ + + +
+
+

{{ number_format($tenantStats['total_tenants'] ?? 0) }}개

+

등록된 총 업체 수

+
+ + +
+
+ 총 가입비 실적 +
+ + + +
+
+

₩{{ number_format($tenantStats['total_membership_revenue'] ?? 0) }}

+

전체 가입비 합계

+
+ + +
+
+ 누적 가입비 수당 +
+ + + +
+
+

₩{{ number_format($tenantStats['total_commission_accumulated'] ?? 0) }}

+

전체 가입비 수당 합계

+
+ + +
+
+ 확정 가입비 수당 (지급대상) +
+ + + +
+
+

₩{{ number_format($tenantStats['confirmed_commission'] ?? 0) }}

+

운영팀 승인 완료된 금액 (지급: 계약 익월 말일)

+
+
+
diff --git a/routes/web.php b/routes/web.php index 115ca085..8c23e32c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -790,6 +790,7 @@ Route::middleware(['auth', 'hq.member'])->prefix('sales')->name('sales.')->group(function () { // 영업관리 대시보드 Route::get('salesmanagement/dashboard', [\App\Http\Controllers\Sales\SalesDashboardController::class, 'index'])->name('salesmanagement.dashboard'); + Route::get('salesmanagement/dashboard/refresh', [\App\Http\Controllers\Sales\SalesDashboardController::class, 'refresh'])->name('salesmanagement.dashboard.refresh'); // 영업 담당자 관리 Route::resource('managers', \App\Http\Controllers\Sales\SalesManagerController::class);