Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
173b5cf
pull
jeongbin-ha Feb 20, 2025
7f280b4
체크 아이콘
jeongbin-ha Feb 20, 2025
1172093
Merge pull request #124 from MUIT-UMC/feat-49-api-연결
Remi1001100 Feb 20, 2025
0850b61
시야관리 상세페이지 api연결
jeongbin-ha Feb 20, 2025
71ee7c6
Merge pull request #125 from MUIT-UMC/feat-관리자페이지-api-연결
jeongbin-ha Feb 20, 2025
6ffb3f5
상세디테일
Feb 20, 2025
ee83e6f
Merge pull request #126 from MUIT-UMC/114/refactor-디테일-수정
ddhi7 Feb 20, 2025
13d0c6e
[STYLE] 사이드바 문구 수정
Remi1001100 Feb 20, 2025
058e4db
Home페이지 오픈예정 api수정
jeongbin-ha Feb 20, 2025
e9c18d9
결제방식 변경
Feb 20, 2025
d93af1a
Merge pull request #127 from MUIT-UMC/114/refactor-디테일-수정
ddhi7 Feb 20, 2025
d848a5d
시야관리 상세페이지 업데이트
jeongbin-ha Feb 20, 2025
1eee7b6
Merge pull request #128 from MUIT-UMC/feat-관리자페이지-api-연결
jeongbin-ha Feb 20, 2025
106b2f4
[FEAT] 댓글 신고 엔드포인트 변경
jiwon234 Feb 20, 2025
9beddb1
[FEAT] 디테일페이지 스타일 수정, 하위페이지의 데이터가 없을 경우의 처리
jiwon234 Feb 20, 2025
fdbe141
[CHORE] 단어 수정
jiwon234 Feb 20, 2025
e6c6767
[CHORE] 1:1문의 관리자 기본 답변 설정
jiwon234 Feb 20, 2025
f61ecc1
Merge pull request #130 from MUIT-UMC/129-fix
jiwon234 Feb 20, 2025
723ea3e
디데이 정리
Feb 20, 2025
1beb519
Merge pull request #131 from MUIT-UMC/114/refactor-디테일-수정
ddhi7 Feb 20, 2025
620fd64
로그아웃 추가
Feb 20, 2025
3adccdd
Merge pull request #132 from MUIT-UMC/114/refactor-디테일-수정
ddhi7 Feb 20, 2025
f38c37f
사이드바 수정
jeongbin-ha Feb 20, 2025
a7e41cc
오픈예정페이지 단건 링크
jeongbin-ha Feb 20, 2025
f45db3c
컨테이너 크기 조정
jeongbin-ha Feb 20, 2025
43a18eb
Merge pull request #133 from MUIT-UMC/feat-오픈예정페이지-링크
jeongbin-ha Feb 20, 2025
c96a3c3
[FIX] 게시판 레이아웃 수정, 데이터 의존성 추가
jiwon234 Feb 20, 2025
cfe7992
Merge pull request #135 from MUIT-UMC/134-fix
jiwon234 Feb 20, 2025
e065249
[FIX] 댓글 작성/삭제 후 바로 새로고침
jiwon234 Feb 21, 2025
5c6fed3
Merge pull request #136 from MUIT-UMC/134-fix
jiwon234 Feb 21, 2025
07dd786
[FIX] 답댓글 작성/삭제 시 새로고침 추가
jiwon234 Feb 21, 2025
8083ec8
출연진 거리 조회
Feb 21, 2025
580b968
[STYLE] 랭킹페이지 포스터 hover 추가
jiwon234 Feb 21, 2025
eaa550b
[STYLE] Upcoming hover 추가
jiwon234 Feb 21, 2025
876d0a1
결제 오류 해결
Feb 21, 2025
fd997b4
Merge pull request #137 from MUIT-UMC/114/refactor-디테일-수정
ddhi7 Feb 21, 2025
3e5ffdb
[STYLE] 소극장 디테일 메인배너 수정
jiwon234 Feb 21, 2025
8c235f3
Merge branch 'dev' of https://github.com/MUIT-UMC/Frontend into dev
jiwon234 Feb 21, 2025
e8ae362
[FIX] 게시판 페이지네이션 페이지 유지
jiwon234 Feb 21, 2025
251079e
Revert "[FIX] 게시판 페이지네이션 페이지 유지"
jiwon234 Feb 21, 2025
6490004
Merge pull request #138 from MUIT-UMC/feat-49-api-연결
Remi1001100 Feb 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ import AdminEvent from "./pages/adminpage/event/AdminEvent";
import AdminEventDetail from "./pages/adminpage/event/AdminEventDetail";
import AdminVision from "./pages/adminpage/vision/AdminVision";
import AdminVisionDetail from "./pages/adminpage/vision/AdminVisionDetail";
import AdminVisionUpdate from "./pages/adminpage/vision/AdminVisionUpdate";
import AdminQuery from "./pages/adminpage/query/AdminQuery";
import AdminQueryDetail from "./pages/adminpage/query/AdminQueryDetail";
import AdminMypage from "./pages/adminpage/mypage/AdminMypage";
Expand Down Expand Up @@ -171,6 +172,7 @@ function App() {
<Route path="event/detail/:musicalId" element={<AdminEventDetail />} />
<Route path="vision" element={<AdminVision />} />
<Route path="vision/detail/:placeId" element={<AdminVisionDetail />} />
<Route path="vision/detail/:placeId/update" element={<AdminVisionUpdate />} />
<Route path="query" element={<AdminQuery />} />
<Route path="query/detail/:queryId" element={<AdminQueryDetail />} />
<Route path="mypage" element={<AdminMypage />} />
Expand Down
6 changes: 0 additions & 6 deletions src/assets/icons/CheckRed.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 9 additions & 3 deletions src/components/Navbar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -220,21 +220,27 @@ function Sidebar({onClose}) {
}
};

const isLoggedIn = !!localStorage.getItem("accessToken");

return (
<SidebarOverlay onClick={handleOverlayClick}>
<SidebarContainer onClick={handleContainerClick}>
<SideMenuArea>
<MenuTop>
<SideMenuLink to="/">홈</SideMenuLink>
<SideMenuLink to="/vision">시야 확인</SideMenuLink>
<SideMenuLink to="/small-theater">소극장 공연</SideMenuLink>
<SideMenuLink to="/event-check">이벤트 확인</SideMenuLink>
<SideMenuLink to="/small-theater">소극장 연극</SideMenuLink>
<SideMenuLink to="/board/item/lost" >게시판</SideMenuLink>
</MenuTop>
<Bar><img src={DivideBarIcon} alt="Bar Icon" /></Bar>
<MenuBottom>
<SideMenuLink to="/login">로그인</SideMenuLink>
<SideMenuLink to="/signup">회원가입</SideMenuLink>
{!isLoggedIn && (
<>
<SideMenuLink to="/login">로그인</SideMenuLink>
<SideMenuLink to="/signup">회원가입</SideMenuLink>
</>
)}
<SideMenuLink to="/mypage" onClick={handleLinkClick}>마이 페이지</SideMenuLink>
</MenuBottom>
</SideMenuArea>
Expand Down
30 changes: 20 additions & 10 deletions src/components/board/PageNavigator.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,42 @@ import ChevronLeft from "../../assets/icons/ChevronLeft.svg";
import ChevronRight from "../../assets/icons/ChevronRight.svg";

const PageNavigator = ({ currentPage, totalPages, onPageChange }) => {
const pagesPerGroup = 5; // 5개씩 끊어서 표시
const currentGroup = Math.floor(currentPage / pagesPerGroup);
const startPage = currentGroup * pagesPerGroup;
const endPage = Math.min(startPage + pagesPerGroup, totalPages);

const handlePageClick = (page) => {
if (page >= 0 && page <= totalPages) {
if (page >= 0 && page < totalPages) {
onPageChange(page);
}
};

return (
<PageNavigatorWrapper>
{/* 이전 5개 이동 */}
<Img
src={ChevronLeft}
visibility={currentPage === 0 ? "hidden" : "visible"}
onClick={() => handlePageClick(currentPage - 1)}
visibility={currentGroup === 0 ? "hidden" : "visible"}
onClick={() => handlePageClick(startPage - pagesPerGroup)}
/>
{Array.from({ length: totalPages }, (_, index) => (

{/* 현재 그룹의 페이지 번호 표시 */}
{Array.from({ length: endPage - startPage }, (_, index) => (
<PageNumber
key={index}
color={currentPage === index ? "#A00000" : undefined}
onClick={() => handlePageClick(index)}
key={startPage + index}
color={currentPage === startPage + index ? "#A00000" : undefined}
onClick={() => handlePageClick(startPage + index)}
>
{index + 1}
{startPage + index + 1}
</PageNumber>
))}

{/* 다음 5개 이동 */}
<Img
src={ChevronRight}
visibility={currentPage === totalPages-1 ? "hidden" : "visible"}
onClick={() => handlePageClick(currentPage + 1)}
visibility={endPage >= totalPages ? "hidden" : "visible"}
onClick={() => handlePageClick(startPage + pagesPerGroup)}
/>
</PageNavigatorWrapper>
);
Expand Down
37 changes: 34 additions & 3 deletions src/components/board/PostList.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,7 @@ const PostListWrapper = styled.table`
margin-top: 32px;
font-family: Pretendard, sans-serif;
text-align: center;


table-layout: fixed; /* 고정된 레이아웃 */

th, td {

Expand All @@ -118,24 +117,56 @@ const PostListWrapper = styled.table`
td:nth-child(1) {
text-align: left;
padding-left: 50px;
min-width: 40%;
max-width: 50%;
}
td:nth-child(2) {
text-align: left;
padding-left: 50px;
width: 20%;
max-width: 190px;
}
td:nth-child(3) {
text-align: left;
padding-left: 50px;
width: 20%;
}
td:nth-child(4) {
text-align: left;
padding-left: 50px;
width: 20%;
}
th:nth-child(1) {
text-align: left;
padding-left: 94px;
min-width: 40%;
max-width: 50%;
}
th:nth-child(2) {
width:20%;
}
th:nth-child(3) {
width:20%;
} th:nth-child(4) {
width:20%;
}

td {
color: #000;
border-bottom: 1px solid #E6E6E6;
padding-top: 18px;
padding-bottom: 18px;

padding-right: 20px;
/* Body-tiny-md */
font-family: Pretendard;
font-size: 14px;
font-style: normal;
font-weight: 500;
line-height: normal;

overflow: hidden; /* 넘치는 내용 숨김 */
white-space: nowrap; /* 줄바꿈 방지 */
text-overflow: ellipsis; /* ... 처리 */
}

tbody tr:hover {
Expand Down
13 changes: 9 additions & 4 deletions src/components/board/PostList2.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,20 @@ const NavWrapper = styled.div`
`

const Text = styled.div`
color: ${(props) => props.color ? props.color: '#000'};

/* Body-me */
color: ${(props) => props.color || "#000"};
font-family: Pretendard;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: 25px; /* 156.25% */
`
text-align:left;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-word;
`;
const Img = styled.img`
height: 88px;
width: 88px;
Expand Down
21 changes: 11 additions & 10 deletions src/components/buy/Step2.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const Step2 = () => {
const navigate = useNavigate();
const location = useLocation();
const peopleCount = location.state?.peopleCount || 1;
const [selectedTicketId, setSelectedTicketId] = useState("1");
const [selectedTicketName, setSelectedTicketName] = useState("일반 예매");

const url = `/tickets/${amateurId}/ticketInfo`;
const { data, error, loading } = useCustomFetch(url, {
Expand All @@ -32,18 +32,19 @@ const Step2 = () => {


// 🎯 선택된 티켓 정보 찾기
const selectedTicket = ticketInfo.tickets.find(ticket => ticket.amateurTicketId === selectedTicketId);
const selectedTicket = ticketInfo.tickets.find(ticket => ticket.ticketName === selectedTicketName);
const ticketPrice = selectedTicket ? selectedTicket.price : 0;

// 🎯 할인 선택 핸들러
const handleDiscountChange = (event) => {
setSelectedTicketId(event.target.value);
setSelectedTicketName(event.target.value);
};

const handleNextStep = () => {
navigate('../step3', {
state: {
peopleCount,
selectedTicketId,
selectedTicketName,
ticketInfo,
},
});
Expand All @@ -69,22 +70,22 @@ const Step2 = () => {
<Option>
<RadioButton type="radio"
name="discount"
value="1"
checked={selectedTicketId === "1"}
value="일반 예매"
checked={selectedTicketName === "일반 예매"}
onChange={handleDiscountChange} /> 할인 없음
</Option>
<Option>
<RadioButton type="radio"
name="discount"
value="2"
checked={selectedTicketId === "2"}
value="홍대생 할인"
checked={selectedTicketName === "홍대생 할인"}
onChange={handleDiscountChange} /> 홍대생 할인
</Option>
<Option>
<RadioButton type="radio"
name="discount"
value="2"
checked={selectedTicketId === "2"}
value="홍대생 할인"
checked={selectedTicketName === "홍대생 할인"}
onChange={handleDiscountChange} /> 지인 할인
</Option>
</Options>
Expand Down
10 changes: 4 additions & 6 deletions src/components/buy/Step3.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const Step3 = () => {
const {amateurId} = useParams();
const navigate = useNavigate();
const location = useLocation();
const { peopleCount = 1, selectedTicketId = '1' } = location.state || {};
const { peopleCount = 1, selectedTicketName="일반 예매" } = location.state || {};

const url = `/tickets/${amateurId}/ticketInfo`;
const { data, error, loading } = useCustomFetch(url, {
Expand All @@ -32,9 +32,7 @@ const Step3 = () => {
const memberInfo = data.result.reserveConfirmMemberDTO;

// 선택된 티켓 정보 찾기
const selectedTicket = ticketInfo.tickets.find(
(ticket) => ticket.amateurTicketId === selectedTicketId
);
const selectedTicket = ticketInfo.tickets.find(ticket => ticket.ticketName === selectedTicketName);
const ticketPrice = selectedTicket ? selectedTicket.price : 0;
// 총 결제 금액 계산
const totalAmount = ticketPrice * peopleCount;
Expand All @@ -43,12 +41,12 @@ const Step3 = () => {
navigate('../step4', {
state: {
peopleCount,
selectedTicketId,
selectedTicketName,
ticketInfo,
amateurTicketId: selectedTicket.amateurTicketId,
},
});
};


return (
<Container>
Expand Down
12 changes: 5 additions & 7 deletions src/components/buy/Step4.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@ const token = localStorage.getItem("accessToken");

const Step4 = () => {
const navigate = useNavigate();
const { amateurId } = useParams();
// const { amateurTicketId } = useParams();
const [accountName, setAccountName] = useState("");
const [isSubmitting, setIsSubmitting] = useState(false);
const isButtonActive = accountName.trim().length > 0;
const location = useLocation();
const { peopleCount, selectedTicketId,ticketInfo } = location.state || {};
const { peopleCount, selectedTicketName="일반 예매",ticketInfo,amateurTicketId } = location.state || {};
console.log("ticketId",amateurTicketId)

const handleSubmit = async () => {
if (!isButtonActive || isSubmitting) return;

setIsSubmitting(true);

const url = `${import.meta.env.VITE_APP_SERVER_URL}/tickets/purchase/${amateurId}`;

const url = `${import.meta.env.VITE_APP_SERVER_URL}/tickets/purchase/${amateurTicketId}`;
try {
const response = await fetch(url, {
method: 'POST',
Expand Down Expand Up @@ -51,9 +51,7 @@ const Step4 = () => {
}
};
// 선택된 티켓 정보 찾기
const selectedTicket = ticketInfo.tickets.find(
(ticket) => ticket.amateurTicketId === selectedTicketId
);
const selectedTicket = ticketInfo.tickets.find(ticket => ticket.ticketName === selectedTicketName);
const ticketPrice = selectedTicket ? selectedTicket.price : 0;
// 총 결제 금액 계산
const totalAmount = ticketPrice * peopleCount;
Expand Down
Loading
Loading