summaryrefslogtreecommitdiff
path: root/lib/bidding/failure
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-11-24 20:50:31 +0900
committerjoonhoekim <26rote@gmail.com>2025-11-24 20:50:31 +0900
commit41bdba862edf3095c240ed316c3df31b31021ed8 (patch)
treeeb56d5f62eca58088ee56d7a1814dff74cc1ab8e /lib/bidding/failure
parent6bc4162b19f06ad4f919270ebcd4ef18f31cd490 (diff)
(김준회) bidding: 빌드 오류 수정
Diffstat (limited to 'lib/bidding/failure')
-rw-r--r--lib/bidding/failure/biddings-closure-dialog.tsx62
1 files changed, 26 insertions, 36 deletions
diff --git a/lib/bidding/failure/biddings-closure-dialog.tsx b/lib/bidding/failure/biddings-closure-dialog.tsx
index 93ba0eda..f331167b 100644
--- a/lib/bidding/failure/biddings-closure-dialog.tsx
+++ b/lib/bidding/failure/biddings-closure-dialog.tsx
@@ -21,26 +21,13 @@ interface BiddingsClosureDialogProps {
biddingNumber: string;
} | null;
onSuccess?: () => void;
- onApprovalPreview?: (data: {
- templateName: string
- variables: Record<string, string>
- title: string
- description: string
- files?: File[]
- }) => void
}
-
-interface ClosureFormData {
- description: string;
- files: File[];
-}
export function BiddingsClosureDialog({
open,
onOpenChange,
bidding,
- onSuccess,
- onApprovalPreview
+ onSuccess
}: BiddingsClosureDialogProps) {
const { data: session } = useSession()
const [description, setDescription] = useState('')
@@ -55,34 +42,37 @@ interface ClosureFormData {
return
}
- // 결재 템플릿 변수 준비
- const { mapBiddingClosureToTemplateVariables } = await import('@/lib/bidding/handlers')
+ setIsSubmitting(true)
try {
- const variables = await mapBiddingClosureToTemplateVariables({
+ const result = await requestBiddingClosureWithApproval({
biddingId: bidding.id,
description: description.trim(),
- requestedAt: new Date()
+ files,
+ currentUser: {
+ id: session?.user?.id ? Number(session.user.id) : 0,
+ epId: session?.user?.epId || null,
+ email: session?.user?.email || undefined,
+ },
})
- // 상위 컴포넌트로 결재 미리보기 데이터 전달
- if (onApprovalPreview) {
- onApprovalPreview({
- templateName: '폐찰 품의 요청서',
- variables,
- title: `폐찰 - ${bidding.title}`,
- description: description.trim(),
- files
- })
+ if (result.status === 'pending_approval') {
+ toast.success('폐찰 결재가 상신되었습니다.')
+ onOpenChange(false)
+ // 폼 초기화
+ setDescription('')
+ setFiles([])
+ if (onSuccess) {
+ onSuccess()
+ }
+ } else {
+ toast.error('결재 상신에 실패했습니다.')
}
-
- onOpenChange(false)
- // 폼 초기화
- setDescription('')
- setFiles([])
} catch (error) {
- console.error('폐찰 템플릿 변수 준비 실패:', error)
- toast.error('결재 문서 준비 중 오류가 발생했습니다.')
+ console.error('폐찰 결재 상신 실패:', error)
+ toast.error(error instanceof Error ? error.message : '결재 상신 중 오류가 발생했습니다.')
+ } finally {
+ setIsSubmitting(false)
}
}
@@ -158,6 +148,6 @@ interface ClosureFormData {
</form>
</DialogContent>
</Dialog>
- </>
- )
+ )
+ }
\ No newline at end of file