@extends('web.layouts.subpage') @php $mypageActive = $mypageActive ?? 'usage'; $filters = $filters ?? ['q'=>'','method'=>'','status'=>'','from'=>'','to'=>'']; $listQuery = request()->only(['q', 'method', 'status', 'from', 'to', 'page']); $listQuery = array_filter($listQuery, fn($v) => $v !== null && $v !== ''); $methodLabel = function ($m) { $m = (string)$m; return match ($m) { 'card' => '카드', 'phone' => '휴대폰', 'wire' => '계좌이체', 'vact' => '가상계좌', default => $m ?: '-', }; }; // 상태는 "결제완료/결제취소" 중심 + 화면 깨짐 방지 최소 처리 $payStatusLabel = function ($r) { $aCancel = (string)($r->attempt_cancel_status ?? 'none'); $oCancel = (string)($r->order_cancel_status ?? 'none'); if ($aCancel === 'success' || $oCancel === 'success') return '결제취소'; $aStatus = (string)($r->attempt_status ?? ''); $oPay = (string)($r->order_stat_pay ?? ''); if ($aStatus === 'paid' || $oPay === 'p') return '결제완료'; if ($aStatus === 'failed' || $oPay === 'f') return '결제실패'; if ($aStatus === 'issued' || $oPay === 'w') return '입금대기'; return '진행중'; }; $issueStatusLabel = function ($r) use ($payStatusLabel) { $pay = $payStatusLabel($r); // 결제취소면 발행 상태는 의미 없음 if ($pay === '결제취소') return '-'; $issuedCount = (int)($r->issued_count ?? 0); return $issuedCount > 0 ? '발행완료' : '발행대기'; }; $payStatusClass = function ($label) { return match ($label) { '결제취소' => 'pill--danger', '결제완료' => 'pill--ok', '결제실패' => 'pill--danger', '입금대기' => 'pill--wait', default => 'pill--muted', }; }; $issueStatusClass = function ($label) { return match ($label) { '발행완료' => 'pill--ok', '발행대기' => 'pill--wait', default => 'pill--muted', }; }; $formatDate = function ($v) { $s = (string)$v; if ($s === '') return '-'; try { return \Carbon\Carbon::parse($s)->format('Y-m-d H:i'); // 분까지 } catch (\Throwable $e) { return mb_substr($s, 0, 16); } }; @endphp @section('title', $pageTitle ?? '구매내역d') @section('subcontent')
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif
{{-- 검색/필터 --}}
~
초기화
{{-- 모바일: 카드 리스트 (가로 스크롤 없음) --}}
@forelse(($rows ?? []) as $idx => $r) @php $no = (method_exists($rows, 'firstItem') && $rows->firstItem()) ? ($rows->firstItem() + $idx) : ($idx + 1); $name = (string)($r->product_name ?? ''); $item = (string)($r->item_name ?? ''); $qty = (int)($r->total_qty ?? 0); $money = (int)($r->pay_money ?? 0); $method = (string)($r->pay_method ?? ''); $paySt = $payStatusLabel($r); $payStCls = $payStatusClass($paySt); $issueSt = $issueStatusLabel($r); $issueStCls = $issueStatusClass($issueSt); $dt = $formatDate($r->created_at ?? ''); $href = route('web.mypage.usage.show', array_merge(['attemptId' => $r->attempt_id], $listQuery)); @endphp
No. {{ $no }}
{{ $paySt }} {{ $issueSt }}
{{ $name !== '' ? $name : '-' }}
결제수단 {{ $methodLabel($method) }}
수량 {{ $qty }}
금액 {{ number_format($money) }}원
일시 {{ $dt }}
@empty
구매내역이 없습니다.
@endforelse
{{-- 데스크톱: 테이블 (행 클릭으로 상세 이동) --}}
@forelse(($rows ?? []) as $idx => $r) @php $no = (method_exists($rows, 'firstItem') && $rows->firstItem()) ? ($rows->firstItem() + $idx) : ($idx + 1); $name = (string)($r->product_name ?? ''); $item = (string)($r->item_name ?? ''); $qty = (int)($r->total_qty ?? 0); $money = (int)($r->pay_money ?? 0); $method = (string)($r->pay_method ?? ''); $paySt = $payStatusLabel($r); $payStCls = $payStatusClass($paySt); $issueSt = $issueStatusLabel($r); $issueStCls = $issueStatusClass($issueSt); $dt = $formatDate($r->created_at ?? ''); $href = route('web.mypage.usage.show', array_merge(['attemptId' => $r->attempt_id], $listQuery)); @endphp @empty @endforelse
No. 상품명 결제수단 수량 금액 결제 상태 일시
구매내역이 없습니다.
@if($rows->hasPages())
{{ $rows->links('web.partials.pagination') }}
@endif
@endsection