From 36bac321b82b498f016baecd13e421e51537bec3 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Thu, 18 Dec 2025 13:26:11 +0900 Subject: [PATCH] =?UTF-8?q?=ED=9B=84=ED=8C=90=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EB=B0=A9=EC=8B=9D=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widgets/yard-3d/DigitalTwinEditor.tsx | 71 ++++++++-------- .../widgets/yard-3d/DigitalTwinViewer.tsx | 83 ++++++++++--------- 2 files changed, 75 insertions(+), 79 deletions(-) diff --git a/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinEditor.tsx b/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinEditor.tsx index f511a7b1..03abee6f 100644 --- a/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinEditor.tsx +++ b/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinEditor.tsx @@ -19,6 +19,7 @@ import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; +import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import dynamic from "next/dynamic"; import { useToast } from "@/hooks/use-toast"; import type { PlacedObject, ToolType, Warehouse, Area, Location, ObjectType } from "@/types/digitalTwin"; @@ -2141,45 +2142,39 @@ export default function DigitalTwinEditor({ layoutId, layoutName, onBack }: Digi 자재가 없습니다 ) : ( - - {materials.map((material, index) => { - const layerColumn = hierarchyConfig?.material?.layerColumn || "LOLAYER"; - const keyColumn = hierarchyConfig?.material?.keyColumn || "STKKEY"; - const displayColumns = hierarchyConfig?.material?.displayColumns || []; +
+ + + + + {(hierarchyConfig?.material?.displayColumns || []).map((col) => ( + + {col.label} + + ))} + + + + {materials.map((material, index) => { + const layerColumn = hierarchyConfig?.material?.layerColumn || "LOLAYER"; + const keyColumn = hierarchyConfig?.material?.keyColumn || "STKKEY"; + const displayColumns = hierarchyConfig?.material?.displayColumns || []; + const layerNumber = material[layerColumn] || index + 1; - const layerValue = material[layerColumn] || index + 1; - const keyValue = material[keyColumn] || `자재 ${index + 1}`; - - return ( - - -
- 층 {layerValue} - {keyValue} -
-
- - {displayColumns.length === 0 ? ( -

- 표시할 컬럼이 설정되지 않았습니다 -

- ) : ( -
- {displayColumns.map((item) => ( -
- {item.label}: - - {material[item.column] || "-"} - -
- ))} -
- )} -
-
- ); - })} - + return ( + + {layerNumber}단 + {displayColumns.map((col) => ( + + {material[col.column] || "-"} + + ))} + + ); + })} +
+
+
)} ) : selectedObject ? ( diff --git a/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinViewer.tsx b/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinViewer.tsx index 71462ebe..a702a047 100644 --- a/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinViewer.tsx +++ b/frontend/components/admin/dashboard/widgets/yard-3d/DigitalTwinViewer.tsx @@ -624,7 +624,7 @@ export default function DigitalTwinViewer({ layoutId }: DigitalTwinViewerProps) )} - {/* 자재 목록 (Location인 경우) - 아코디언 */} + {/* 자재 목록 (Location인 경우) - 테이블 형태 */} {(selectedObject.type === "location-bed" || selectedObject.type === "location-stp" || selectedObject.type === "location-temp" || @@ -640,47 +640,48 @@ export default function DigitalTwinViewer({ layoutId }: DigitalTwinViewerProps) ) : (
- - {materials.map((material, index) => { - const displayColumns = hierarchyConfig?.material?.displayColumns || []; - return ( -
- -
-
- - 층 {material[hierarchyConfig?.material?.layerColumn || "LOLAYER"]} - - {displayColumns[0] && ( - - {material[displayColumns[0].column]} - - )} -
-
- - - -
-
- {displayColumns.map((colConfig: any) => ( -
- {colConfig.label}: - {material[colConfig.column] || "-"} -
+ + {/* 테이블 형태로 전체 조회 */} +
+ + + + + {(hierarchyConfig?.material?.displayColumns || []).map((colConfig: any) => ( + ))} - - - ); - })} + + + + {materials.map((material, index) => { + const layerColumn = hierarchyConfig?.material?.layerColumn || "LOLAYER"; + const displayColumns = hierarchyConfig?.material?.displayColumns || []; + return ( + + + {displayColumns.map((colConfig: any) => ( + + ))} + + ); + })} + +
+ {colConfig.label} +
+ {material[layerColumn]}단 + + {material[colConfig.column] || "-"} +
+
)}