@@ -19,12 +19,12 @@ type Ticket = {
1919 startDate : string ;
2020 remainDays : string ;
2121 hashtags : string [ ] ;
22- onlineType : " ONLINE" | " OFFLINE" ; // onlineType 추가
22+ onlineType : ' ONLINE' | ' OFFLINE' ; // onlineType 추가
2323 } ;
2424 ticketQrCode : string ;
2525 ticketName : string ;
2626 ticketPrice : number ;
27- orderStatus : " COMPLETED" | " PENDING" | " CANCELED" ;
27+ orderStatus : ' COMPLETED' | ' PENDING' | ' CANCELED' ;
2828 checkIn : boolean ;
2929} ;
3030
@@ -39,7 +39,7 @@ const MyTicketPage = () => {
3939 const response = await readTicket . getAll ( 0 , 10 ) ;
4040 setMyTickets ( response . result || [ ] ) ;
4141 } catch ( error ) {
42- console . error ( " 티켓 목록 불러오기 실패:" , error ) ;
42+ console . error ( ' 티켓 목록 불러오기 실패:' , error ) ;
4343 }
4444 } ;
4545 fetchMyTickets ( ) ;
@@ -49,37 +49,40 @@ const MyTicketPage = () => {
4949 < TicketHostLayout image = { TicketLogo } centerContent = "내 티켓" showText = { true } >
5050 { /* 이벤트 카드 목록 */ }
5151 < div className = "grid grid-cols-2 gap-4 mx-6 mt-28 md:grid-cols-2 lg:grid-cols-2 pb-4" >
52- { myTickets . map ( ( ticket ) => (
53- < EventCard
54- key = { ticket . id }
55- id = { ticket . id }
56- img = { ticket . event . bannerImageUrl }
57- eventTitle = { ticket . event . title }
58- dDay = { ticket . event . remainDays }
59- host = { ticket . event . hostChannelName }
60- eventDate = { ticket . event . startDate }
61- location = { ticket . event . address }
62- hashtags = { ticket . event . hashtags }
63- onClick = { ( ) => {
64- setSelectedTicket ( ticket ) ;
65- setIsModalOpen ( true ) ;
66- } }
67- >
68- < div className = "flex items-center text-xs text-gray-500" >
69- < img src = { ticketImg } alt = "날짜" className = "w-3 h-3 mr-1" />
70- { ticket . ticketName }
71- </ div >
72- < div className = "flex items-center text-xs text-gray-500" >
73- < img
74- src = { ticket . orderStatus === 'COMPLETED' ? completedImg : pendingImg }
75- alt = { ticket . orderStatus === 'COMPLETED' ? '승인됨' : '대기 중' }
76- className = "w-3 h-3 mr-1"
77- />
78- { ticket . orderStatus === 'COMPLETED' ? '승인됨' : '대기 중' }
79- </ div >
80-
81- </ EventCard >
82- ) ) }
52+ { myTickets . length > 0 ? (
53+ myTickets . map ( ticket => (
54+ < EventCard
55+ key = { ticket . id }
56+ id = { ticket . id }
57+ img = { ticket . event . bannerImageUrl }
58+ eventTitle = { ticket . event . title }
59+ dDay = { ticket . event . remainDays }
60+ host = { ticket . event . hostChannelName }
61+ eventDate = { ticket . event . startDate }
62+ location = { ticket . event . address }
63+ hashtags = { ticket . event . hashtags }
64+ onClick = { ( ) => {
65+ setSelectedTicket ( ticket ) ;
66+ setIsModalOpen ( true ) ;
67+ } }
68+ >
69+ < div className = "flex items-center text-xs text-gray-500" >
70+ < img src = { ticketImg } alt = "날짜" className = "w-3 h-3 mr-1" />
71+ { ticket . ticketName }
72+ </ div >
73+ < div className = "flex items-center text-xs text-gray-500" >
74+ < img
75+ src = { ticket . orderStatus === 'COMPLETED' ? completedImg : pendingImg }
76+ alt = { ticket . orderStatus === 'COMPLETED' ? '승인됨' : '대기 중' }
77+ className = "w-3 h-3 mr-1"
78+ />
79+ { ticket . orderStatus === 'COMPLETED' ? '승인됨' : '대기 중' }
80+ </ div >
81+ </ EventCard >
82+ ) )
83+ ) : (
84+ < p className = "col-span-2 text-center text-sm md:text-base" > 구매하신 티켓 정보가 없습니다.</ p >
85+ ) }
8386 </ div >
8487
8588 { isModalOpen && selectedTicket && (
0 commit comments