"use client" import * as React from "react" import { Loader, Send } from "lucide-react" import { toast } from "sonner" import { useMediaQuery } from "@/hooks/use-media-query" import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer" import { requestTbe } from "../service" // 첨부파일 타입 type RfqAttachment = { id: number serialNo: string originalFileName: string attachmentType: string currentRevision: string } interface TbeRequestDialogProps extends React.ComponentPropsWithoutRef { rfqId: number attachments: RfqAttachment[] showTrigger?: boolean onSuccess?: () => void } export function TbeRequestDialog({ rfqId, attachments, showTrigger = true, onSuccess, ...props }: TbeRequestDialogProps) { const [isRequestPending, startRequestTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") function onRequest() { startRequestTransition(async () => { const attachmentIds = attachments.map(attachment => attachment.id) const result = await requestTbe(rfqId, attachmentIds) if (!result.success) { toast.error(result.message) return } props.onOpenChange?.(false) toast.success(result.message) onSuccess?.() }) } const attachmentCount = attachments.length const attachmentText = attachmentCount === 1 ? "문서" : "문서들" if (isDesktop) { return ( {showTrigger ? ( ) : null} TBE 요청을 전송하시겠습니까?
선택된 {attachmentCount}개의 {attachmentText}에 대해 벤더들에게 기술평가(TBE) 요청을 전송합니다.
RFQ 상태가 "TBE started"로 변경됩니다.
{attachmentCount <= 5 && (
TBE 요청 대상:
    {attachments.map((attachment) => (
  • • {attachment.serialNo}: {attachment.originalFileName} ({attachment.currentRevision})
  • ))}
)}
) } return ( {showTrigger ? ( ) : null} TBE 요청을 전송하시겠습니까?
선택된 {attachmentCount}개의 {attachmentText}에 대해 벤더들에게 기술평가(TBE) 요청을 전송합니다.
RFQ 상태가 "TBE started"로 변경됩니다.
{attachmentCount <= 5 && (
TBE 요청 대상:
    {attachments.map((attachment) => (
  • • {attachment.serialNo}: {attachment.originalFileName} ({attachment.currentRevision})
  • ))}
)}
) }