From 08549146be75bd575825b408d4684c5a2b125924 Mon Sep 17 00:00:00 2001 From: chpark Date: Fri, 15 May 2026 00:37:00 +0900 Subject: [PATCH] =?UTF-8?q?fix(margin):=20=EC=A2=8C=EC=B8=A1=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20/=20=EC=9A=B0=EC=B8=A1=20=EC=B0=A8?= =?UTF-8?q?=ED=8A=B8=2050:50=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20+=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=8A=A4=ED=81=AC=EB=A1=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(main)/m/admin/statistics/margin/page.tsx | 118 ++++++++++-------- 1 file changed, 63 insertions(+), 55 deletions(-) diff --git a/src/app/(main)/m/admin/statistics/margin/page.tsx b/src/app/(main)/m/admin/statistics/margin/page.tsx index c9c805a..68ed896 100644 --- a/src/app/(main)/m/admin/statistics/margin/page.tsx +++ b/src/app/(main)/m/admin/statistics/margin/page.tsx @@ -98,62 +98,70 @@ export default function MarginPage() { -
-

마진 TOP 10 품목

-
- {loading ? ( -
불러오는 중...
- ) : chartData.length === 0 ? ( -
데이터가 없습니다.
- ) : ( - - - - - `${(v / 10000).toFixed(0)}만`} /> - `₩${fmt(Number(v))}`} - labelFormatter={(_, payload) => (payload?.[0]?.payload as { fullName: string })?.fullName ?? ""} - /> - - - - - - )} -
-
- -
- - - - - - - - - - - - - {rows.length === 0 ? ( - - ) : rows.map((r) => { - const pct = Number(r.REVENUE) ? ((Number(r.MARGIN) / Number(r.REVENUE)) * 100).toFixed(1) : "0.0"; - return ( - - - - - - - + {/* 좌: 품목 리스트 / 우: 차트 — 50/50, 화면 높이 내 스크롤 */} +
+
+
+ 품목별 상세 ({rows.length}건) +
+
+
품목판매수량매출원가마진마진율
데이터가 없습니다.
{r.ITEM_NAME}{fmt(r.QTY)}₩{fmt(r.REVENUE)}₩{fmt(r.COST)}₩{fmt(r.MARGIN)}{pct}%
+ + + + + + + + - ); - })} - -
품목수량매출원가마진%
+ + + {rows.length === 0 ? ( + {loading ? "조회 중..." : "데이터가 없습니다."} + ) : rows.map((r) => { + const pct = Number(r.REVENUE) ? ((Number(r.MARGIN) / Number(r.REVENUE)) * 100).toFixed(1) : "0.0"; + return ( + + {r.ITEM_NAME} + {fmt(r.QTY)} + ₩{fmt(r.REVENUE)} + ₩{fmt(r.COST)} + ₩{fmt(r.MARGIN)} + {pct}% + + ); + })} + + +
+ + +
+

마진 TOP 10 품목

+
+ {loading ? ( +
불러오는 중...
+ ) : chartData.length === 0 ? ( +
데이터가 없습니다.
+ ) : ( + + + + + `${(v / 10000).toFixed(0)}만`} /> + `₩${fmt(Number(v))}`} + labelFormatter={(_, payload) => (payload?.[0]?.payload as { fullName: string })?.fullName ?? ""} + /> + + + + + + )} +
+
);