diff --git a/apps/nowait-admin/src/hooks/Reservation/useUpdateReservationStatus.tsx b/apps/nowait-admin/src/hooks/Reservation/useUpdateReservationStatus.tsx
index 742452e0..5dee5c5f 100644
--- a/apps/nowait-admin/src/hooks/Reservation/useUpdateReservationStatus.tsx
+++ b/apps/nowait-admin/src/hooks/Reservation/useUpdateReservationStatus.tsx
@@ -1,18 +1,21 @@
import { useMutation } from "@tanstack/react-query";
import AdminApi from "../../utils/AdminApi";
+interface UpdateReservationParams {
+ storeId: number;
+ userId: number;
+ status: "WAITING" | "CALLING" | "CONFIRMED" | "CANCELLED" | "NO_SHOW";
+}
+
export const useUpdateReservationStatus = () => {
return useMutation({
mutationFn: async ({
- reservationId,
+ storeId,
+ userId,
status,
- }: {
- reservationId: number;
- status: "WAITING" | "CALLING" | "CONFIRMED" | "CANCELLED" | "NO_SHOW";
- }) => {
+ }: UpdateReservationParams) => {
const res = await AdminApi.patch(
- `/reservations/admin/updates/${reservationId}`,
- { status }
+ `/reservations/admin/update/${storeId}/${userId}/${status}`
);
return res.data;
},
diff --git a/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx b/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx
index b76bde79..000fa152 100644
--- a/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx
+++ b/apps/nowait-admin/src/pages/AdminAnalytics/AdminAnalytics.tsx
@@ -57,7 +57,7 @@ const boothData: BoothRanking[] = [
const AdminAnalytics = () => {
// const { data, isLoading, isError } = useGetTopSales();
return (
-
+
diff --git a/apps/nowait-admin/src/pages/AdminAnalytics/components/BoothSalesRankingCard .tsx b/apps/nowait-admin/src/pages/AdminAnalytics/components/BoothSalesRankingCard .tsx
index 4f182cd8..8f3770d2 100644
--- a/apps/nowait-admin/src/pages/AdminAnalytics/components/BoothSalesRankingCard .tsx
+++ b/apps/nowait-admin/src/pages/AdminAnalytics/components/BoothSalesRankingCard .tsx
@@ -20,7 +20,7 @@ const BoothSalesRankingCard: React.FC
= ({
data,
}) => {
return (
-
+
부스별 판매순위
@@ -43,21 +43,24 @@ const BoothSalesRankingCard: React.FC
= ({
: ""
}`}
>
-
+
{item.rank}
-
-
{item.name}
+
+
+ {item.name}
+
{item.department}
-
-
+
+
+
{item.salesCount}건
diff --git a/apps/nowait-admin/src/pages/AdminAnalytics/components/HeaderStatus.tsx b/apps/nowait-admin/src/pages/AdminAnalytics/components/HeaderStatus.tsx
index e44a7c7d..7a9cd503 100644
--- a/apps/nowait-admin/src/pages/AdminAnalytics/components/HeaderStatus.tsx
+++ b/apps/nowait-admin/src/pages/AdminAnalytics/components/HeaderStatus.tsx
@@ -4,7 +4,7 @@ import TotalSalesCard from "./TotalSalesCard";
const HeaderStatus = () => {
return (
-
+
{/* 오늘 매출 */}
= ({ today, previous }) => {
{/* 이전,다음 이동 버튼 */}
+ {/* 이전 버튼: 오늘 매출일 때만 활성화 */}
setIsHoverBack(true)}
- onMouseLeave={() => setIsHoverBack(false)}
- onClick={() => setShowToday(false)}
+ src={
+ showToday ? activeBackIcon : backIcon // 비활성 이미지로 고정
+ }
+ className={`h-5 w-5 cursor-pointer`}
+ onMouseEnter={() => showToday && setIsHoverBack(true)}
+ onMouseLeave={() => showToday && setIsHoverBack(false)}
+ onClick={() => showToday && setShowToday(false)}
/>
+
+ {/* 다음 버튼: 이전 매출일 때만 활성화 */}
setIsHoverForward(true)}
- onMouseLeave={() => setIsHoverForward(false)}
- onClick={() => setShowToday(true)}
+ src={!showToday ? activeForwardIcon : forwardIcon}
+ className={`h-5 w-5 cursor-pointer `}
+ onMouseEnter={() => !showToday && setIsHoverForward(true)}
+ onMouseLeave={() => !showToday && setIsHoverForward(false)}
+ onClick={() => !showToday && setShowToday(true)}
/>
@@ -66,10 +71,12 @@ const SalesCard: React.FC
= ({ today, previous }) => {
>
)}
-
- 어제보다 {today.diffAmount.toLocaleString()}원{" "}
- {today.diffAmount >= 0 ? "더 벌었어요!" : "덜 벌었어요!"}
-
+ {showToday && (
+
+ 어제보다 {today.diffAmount.toLocaleString()}원{" "}
+ {today.diffAmount >= 0 ? "더 벌었어요!" : "덜 벌었어요!"}
+
+ )}
);
diff --git a/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx b/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx
index fdd11fd0..0584055b 100644
--- a/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx
+++ b/apps/nowait-admin/src/pages/AdminBooth/AdminBooth.tsx
@@ -315,7 +315,7 @@ const MenuSection = () => {
const BoothForm = () => {
const width = useWindowWidth();
const isTablet = width >= 768 && width <= 1024;
- const [activeTab, setActiveTab] = useState<"booth" | "menu">("booth");
+ const [activeTab, setActiveTab] = useState<"booth" | "menu">("menu");
const [boothName, setBoothName] = useState("");
const [boothIntro, setBoothIntro] = useState("");
const [isFocused, setIsFocused] = useState(false);
diff --git a/apps/nowait-admin/src/pages/AdminHome/AdminHome.tsx b/apps/nowait-admin/src/pages/AdminHome/AdminHome.tsx
index eae8aebd..408be5ca 100644
--- a/apps/nowait-admin/src/pages/AdminHome/AdminHome.tsx
+++ b/apps/nowait-admin/src/pages/AdminHome/AdminHome.tsx
@@ -13,6 +13,7 @@ type WaitingStatus = "WAITING" | "CALLING" | "CONFIRMED" | "CANCELLED";
interface Reservation {
id: number;
+ userId: number;
time: string;
requestedAt: string;
waitMinutes: number;
@@ -36,7 +37,7 @@ const AdminHome = () => {
const { data: completedList } = useGetCompletedList(storeId); //canceled, conformed
console.log(waitingList);
-
+ console.log(completedList);
const toggle = () => setIsOn((prev) => !prev);
//대기 중 카드 개수
const waitingCount = reservations.filter(
@@ -84,15 +85,14 @@ const AdminHome = () => {
}, [reservations, activeTab]);
// 호출 버튼 클릭 이벤트
- const handleCall = (id: number) => {
- // 상태 변화 api 호출 --> 성공시 --> reservation status 변경(호출 시간 calledAt추가해야 됨)
+ const handleCall = (userId: number) => {
updateStatus(
- { reservationId: id, status: "CALLING" },
+ { storeId, userId, status: "CALLING" },
{
onSuccess: () => {
setReservations((prev) =>
prev.map((res) =>
- res.id === id
+ res.id === userId
? {
...res,
status: "CALLING",
@@ -109,14 +109,14 @@ const AdminHome = () => {
);
};
- const handleEnter = (id: number) => {
+ const handleEnter = (userId: number) => {
updateStatus(
- { reservationId: id, status: "CONFIRMED" },
+ { storeId, userId, status: "CONFIRMED" },
{
onSuccess: () => {
setReservations((prev) =>
prev.map((res) =>
- res.id === id ? { ...res, status: "CONFIRMED" } : res
+ res.id === userId ? { ...res, status: "CONFIRMED" } : res
)
);
},
@@ -124,14 +124,14 @@ const AdminHome = () => {
);
};
- const handleClose = (id: number) => {
+ const handleClose = (userId: number) => {
updateStatus(
- { reservationId: id, status: "CANCELLED" },
+ { storeId, userId, status: "CANCELLED" },
{
onSuccess: () => {
setReservations((prev) =>
prev.map((res) =>
- res.id === id ? { ...res, status: "CANCELLED" } : res
+ res.id === userId ? { ...res, status: "CANCELLED" } : res
)
);
},
@@ -152,9 +152,11 @@ const AdminHome = () => {
const normalize = (res: any): Reservation => {
const requested = new Date(res.createdAt ?? "");
- const called = new Date(res.calledAt ?? "");
+ const calledAtValid = res.calledAt && !isNaN(Date.parse(res.calledAt));
+ const called = calledAtValid ? new Date(res.calledAt) : undefined;
return {
id: Number(res.id),
+ userId: Number(res.userId),
requestedAt: res.createdAt,
time: requested.toLocaleTimeString("ko-KR", {
hour: "2-digit",
@@ -166,7 +168,8 @@ const AdminHome = () => {
name: res.userName,
phone: "010-****-****",
status: res.status,
- calledAt: res.status === "CALLING" ? called.toISOString() : undefined,
+ calledAt:
+ res.status === "CALLING" && called ? called.toISOString() : undefined,
};
};
@@ -253,10 +256,10 @@ const AdminHome = () => {
phone="010-1234-1234"
status={res.status}
calledAt={res.calledAt}
- isNoShow={noShowIds.includes(res.id)}
- onCall={() => handleCall(res.id)}
- onEnter={() => handleEnter(res.id)}
- onClose={() => handleClose(res.id)}
+ isNoShow={noShowIds.includes(res.userId)}
+ onCall={() => handleCall(res.userId)}
+ onEnter={() => handleEnter(res.userId)}
+ onClose={() => handleClose(res.userId)}
onDelete={() => setShowModal(true)}
onNoShow={() => handleNoShow(res.id)}
/>
diff --git a/apps/nowait-admin/src/pages/AdminHome/components/WaitingCard.tsx b/apps/nowait-admin/src/pages/AdminHome/components/WaitingCard.tsx
index f21601e7..e3f48e3b 100644
--- a/apps/nowait-admin/src/pages/AdminHome/components/WaitingCard.tsx
+++ b/apps/nowait-admin/src/pages/AdminHome/components/WaitingCard.tsx
@@ -23,7 +23,7 @@ interface WaitingCardProps {
onDelete: () => void;
}
const truncateName = (name: string, maxLength: number = 3) => {
- return name.length > maxLength ? name.slice(0, maxLength) + "..." : name;
+ return name?.length > maxLength ? name.slice(0, maxLength) + "..." : name;
};
export function WaitingCard({
@@ -137,13 +137,13 @@ export function WaitingCard({
<>
@@ -155,7 +155,7 @@ export function WaitingCard({
@@ -163,13 +163,13 @@ export function WaitingCard({
))}
{status === "CANCELLED" && (
-
+
취소된 입장
)}
{status === "CONFIRMED" && (
-