From f72142f6cc46c7be5bf90803d365c2ecd144c53d Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Mon, 1 Sep 2025 10:22:55 +0000 Subject: (김준회) MDG 자재마스터 정보 조회 기능 및 메뉴 추가, 회원가입시 공급품목 선택 기능 추가 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/material/table/material-detail-dialog.tsx | 359 ++++++++++++++++++++++++++ 1 file changed, 359 insertions(+) create mode 100644 lib/material/table/material-detail-dialog.tsx (limited to 'lib/material/table/material-detail-dialog.tsx') diff --git a/lib/material/table/material-detail-dialog.tsx b/lib/material/table/material-detail-dialog.tsx new file mode 100644 index 00000000..aed0485c --- /dev/null +++ b/lib/material/table/material-detail-dialog.tsx @@ -0,0 +1,359 @@ +"use client" + +import * as React from "react" +import { getMaterialDetail } from "../services" +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog" +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table" +import { + Tabs, + TabsContent, + TabsList, + TabsTrigger, +} from "@/components/ui/tabs" +import { Skeleton } from "@/components/ui/skeleton" +import { Badge } from "@/components/ui/badge" + +import { formatDate } from "@/lib/utils" + +interface MaterialDetailDialogProps { + open: boolean + onOpenChange: (open: boolean) => void + matnr: string | null +} + +export function MaterialDetailDialog({ + open, + onOpenChange, + matnr, +}: MaterialDetailDialogProps) { + const [data, setData] = React.useState> | null>(null) + const [loading, setLoading] = React.useState(false) + + React.useEffect(() => { + if (open && matnr) { + setLoading(true) + getMaterialDetail(matnr) + .then(setData) + .finally(() => setLoading(false)) + } + }, [open, matnr]) + + if (!matnr) return null + + return ( + + + + 자재마스터 상세정보 + + 자재코드: {matnr} + + + + {loading ? ( +
+ + + +
+ ) : data ? ( + + + 기본정보 + 특성할당 + 클래스할당 + 설명 + 단위 + + +
+ + +
+
+

기본 자재 정보

+ + + + 자재코드 (MATNR) + {data.material.MATNR || "-"} + + + 자재명 (ZZNAME) + {data.material.ZZNAME || "-"} + + + 프로젝트 (ZZPJT) + {data.material.ZZPJT || "-"} + + + 구 자재번호 (BISMT) + {data.material.BISMT || "-"} + + + 자재그룹 (MATKL) + {data.material.MATKL || "-"} + + + 자재유형 (MTART) + {data.material.MTART || "-"} + + + 기본단위 (MEINS) + {data.material.MEINS || "-"} + + + 산업섹터 (MBRSH) + {data.material.MBRSH || "-"} + + + 사업부 (SPART) + {data.material.SPART || "-"} + + + 규격 (ZZSPEC) + {data.material.ZZSPEC || "-"} + + + 설명 (ZZDESC) + {data.material.ZZDESC || "-"} + + + PLM ID (ZZPLMID) + {data.material.ZZPLMID || "-"} + + + 삭제플래그 (LVORM) + + {data.material.LVORM ? ( + 삭제됨 + ) : ( + 활성 + )} + + + + 자재상태 (MSTAE) + {data.material.MSTAE || "-"} + + + 총 중량 (BRGEW) + {data.material.BRGEW || "-"} + + + 순 중량 (NTGEW) + {data.material.NTGEW || "-"} + + + 중량단위 (GEWEI) + {data.material.GEWEI || "-"} + + + 크기/치수 (GROES) + {data.material.GROES || "-"} + + + 생성일시 + {formatDate(data.material.createdAt, "KR")} + + + 수정일시 + {formatDate(data.material.updatedAt, "KR")} + + +
+
+
+
+ + +
+

특성 할당 정보

+ {data.characteristics.length === 0 && ( +

특성 할당 정보가 없습니다.

+ )} + + + + 특성명 (ATNAM) + 특성값 (ATWRT) + 특성내역 (ATBEZ) + 특성값내역 (ATWTB) + 클래스번호 (CLASS) + 클래스유형 (KLART) + 측정단위 (ATAWE) + + + + {data.characteristics.length > 0 ? ( + data.characteristics.map((char, index) => ( + + {char.ATNAM || "-"} + {char.ATWRT || "-"} + {char.ATBEZ || "-"} + {char.ATWTB || "-"} + {char.CLASS || "-"} + {char.KLART || "-"} + {char.ATAWE || "-"} + + )) + ) : ( + + + 데이터가 없습니다 + + + )} + +
+
+
+ + +
+

클래스 할당 정보

+ {data.classifications.length === 0 && ( +

클래스 할당 정보가 없습니다.

+ )} + + + + 클래스번호 (CLASS) + 클래스유형 (KLART) + 생성일시 + 수정일시 + + + + {data.classifications.length > 0 ? ( + data.classifications.map((cls, index) => ( + + {cls.CLASS || "-"} + {cls.KLART || "-"} + {formatDate(cls.createdAt, "KR")} + {formatDate(cls.updatedAt, "KR")} + + )) + ) : ( + + + 데이터가 없습니다 + + + )} + +
+
+
+ + +
+

자재 설명 정보

+ {data.descriptions.length === 0 && ( +

자재 설명 정보가 없습니다.

+ )} + + + + 자재설명 (MAKTX) + 언어 (SPRAS) + 생성일시 + 수정일시 + + + + {data.descriptions.length > 0 ? ( + data.descriptions.map((desc, index) => ( + + {desc.MAKTX || "-"} + {desc.SPRAS || "-"} + {formatDate(desc.createdAt, "KR")} + {formatDate(desc.updatedAt, "KR")} + + )) + ) : ( + + + 데이터가 없습니다 + + + )} + +
+
+
+ + +
+

단위 정보

+ {data.units.length === 0 && ( +

단위 정보가 없습니다.

+ )} + + + + 대체단위 (MEINH) + 분모 (UMREN) + 분자 (UMREZ) + 길이 (LAENG) + 폭 (BREIT) + 높이 (HOEHE) + 부피 (VOLUM) + 부피단위 (VOLEH) + 총중량 (BRGEW) + 중량단위 (GEWEI) + 치수단위 (MEABM) + + + + {data.units.length > 0 ? ( + data.units.map((unit, index) => ( + + {unit.MEINH || "-"} + {unit.UMREN || "-"} + {unit.UMREZ || "-"} + {unit.LAENG || "-"} + {unit.BREIT || "-"} + {unit.HOEHE || "-"} + {unit.VOLUM || "-"} + {unit.VOLEH || "-"} + {unit.BRGEW || "-"} + {unit.GEWEI || "-"} + {unit.MEABM || "-"} + + )) + ) : ( + + + 데이터가 없습니다 + + + )} + +
+
+
+
+
+ ) : ( +
+

데이터를 찾을 수 없습니다.

+
+ )} +
+
+ ) +} -- cgit v1.2.3