From 8b23b471638a155fd1bfa3a8c853b26d9315b272 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 26 Sep 2025 09:57:24 +0000 Subject: (대표님) 권한관리, 문서업로드, rfq첨부, SWP문서룰 등 (최겸) 입찰 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vendor-table/basic-contract-sign-dialog.tsx | 9 +- .../table/bidding-detail-vendor-create-dialog.tsx | 2 +- lib/bidding/list/create-bidding-dialog.tsx | 43 +- .../bidding-pre-quote-vendor-create-dialog.tsx | 2 +- lib/bidding/service.ts | 6 +- lib/docu-list-rule/number-type-configs/service.ts | 7 +- .../table/number-type-configs-edit-dialog.tsx | 277 ++-- .../table/number-type-configs-toolbar-actions.tsx | 251 ++-- lib/docu-list-rule/types.ts | 1 + .../editor/template-content-editor.tsx | 6 - lib/email-template/table/create-template-sheet.tsx | 10 +- lib/email-template/table/update-template-sheet.tsx | 6 - lib/permissions/permission-assignment-actions.ts | 83 ++ lib/permissions/permission-group-actions.ts | 270 ++++ lib/permissions/permission-settings-actions.ts | 229 ++++ lib/permissions/service.ts | 434 ++++++ lib/rfq-last/service.ts | 20 +- lib/rfq-last/table/create-general-rfq-dialog.tsx | 44 +- lib/rfq-last/table/rfq-table-columns.tsx | 18 +- .../editor/quotation-items-table.tsx | 6 +- .../vendor-response/rfq-attachments-dialog.tsx | 4 +- .../vendor/batch-update-conditions-dialog.tsx | 2 + lib/rfqs/service.ts | 2 + lib/sedp/sync-form.ts | 40 +- lib/tags/service.ts | 348 ++--- .../plant/document-stage-actions.ts | 0 .../plant/document-stage-dialogs.tsx | 1433 +++++++------------- .../plant/document-stage-toolbar.tsx | 2 +- .../plant/document-stages-columns.tsx | 316 ++--- .../plant/document-stages-service.ts | 458 +++++-- .../plant/document-stages-table.tsx | 234 ++-- .../plant/excel-import-export.ts | 788 ----------- .../plant/excel-import-stage copy 2.tsx | 899 ++++++++++++ .../plant/excel-import-stage copy.tsx | 908 +++++++++++++ .../plant/excel-import-stage.tsx | 899 ++++++++++++ lib/vendor-document-list/plant/upload/columns.tsx | 13 +- lib/vendor-document-list/plant/upload/table.tsx | 25 + lib/vendors/contacts-table/add-contact-dialog.tsx | 81 +- lib/vendors/contacts-table/contact-table.tsx | 25 + lib/vendors/contacts-table/edit-contact-dialog.tsx | 231 ++++ lib/vendors/repository.ts | 20 + lib/vendors/service.ts | 34 + lib/vendors/validations.ts | 24 +- 43 files changed, 5861 insertions(+), 2649 deletions(-) create mode 100644 lib/permissions/permission-assignment-actions.ts create mode 100644 lib/permissions/permission-group-actions.ts create mode 100644 lib/permissions/permission-settings-actions.ts create mode 100644 lib/permissions/service.ts delete mode 100644 lib/vendor-document-list/plant/document-stage-actions.ts delete mode 100644 lib/vendor-document-list/plant/excel-import-export.ts create mode 100644 lib/vendor-document-list/plant/excel-import-stage copy 2.tsx create mode 100644 lib/vendor-document-list/plant/excel-import-stage copy.tsx create mode 100644 lib/vendor-document-list/plant/excel-import-stage.tsx create mode 100644 lib/vendors/contacts-table/edit-contact-dialog.tsx (limited to 'lib') diff --git a/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx b/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx index 635993fb..759f7cac 100644 --- a/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx +++ b/lib/basic-contract/vendor-table/basic-contract-sign-dialog.tsx @@ -177,8 +177,11 @@ const canCompleteCurrentContract = React.useMemo(() => { const handleOpenChange = (isOpen: boolean) => { if (!isOpen && !allCompleted && completedCount > 0) { // 완료되지 않은 계약서가 있으면 확인 대화상자 + // const confirmClose = window.confirm( + // `${completedCount}/${totalCount}개 계약서가 완료되었습니다. 정말 나가시겠습니까?` + // ); const confirmClose = window.confirm( - `${completedCount}/${totalCount}개 계약서가 완료되었습니다. 정말 나가시겠습니까?` + `정말 나가시겠습니까?` ); if (!confirmClose) return; } @@ -618,7 +621,7 @@ const canCompleteCurrentContract = React.useMemo(() => { )} {dialogTitle} {/* 진행 상황 표시 */} - { )} > {completedCount}/{totalCount} 완료 - + */} {/* 추가 파일 로딩 표시 */} {isLoadingAttachments && ( diff --git a/lib/bidding/detail/table/bidding-detail-vendor-create-dialog.tsx b/lib/bidding/detail/table/bidding-detail-vendor-create-dialog.tsx index c1471a69..d0f85b14 100644 --- a/lib/bidding/detail/table/bidding-detail-vendor-create-dialog.tsx +++ b/lib/bidding/detail/table/bidding-detail-vendor-create-dialog.tsx @@ -79,7 +79,7 @@ export function BiddingDetailVendorCreateDialog({ // 벤더 로드 const loadVendors = React.useCallback(async () => { try { - const result = await searchVendorsForBidding('', biddingId, 50) // 빈 검색어로 모든 벤더 로드 + const result = await searchVendorsForBidding('', biddingId) // 빈 검색어로 모든 벤더 로드 setVendorList(result || []) } catch (error) { console.error('Failed to load vendors:', error) diff --git a/lib/bidding/list/create-bidding-dialog.tsx b/lib/bidding/list/create-bidding-dialog.tsx index cb91a984..e99ac06f 100644 --- a/lib/bidding/list/create-bidding-dialog.tsx +++ b/lib/bidding/list/create-bidding-dialog.tsx @@ -137,6 +137,7 @@ export function CreateBiddingDialog() { const [activeTab, setActiveTab] = React.useState("basic") const [showSuccessDialog, setShowSuccessDialog] = React.useState(false) // 추가 const [createdBiddingId, setCreatedBiddingId] = React.useState(null) // 추가 + const [showCloseConfirmDialog, setShowCloseConfirmDialog] = React.useState(false) // 닫기 확인 다이얼로그 상태 // Procurement 데이터 상태들 const [paymentTermsOptions, setPaymentTermsOptions] = React.useState>([]) @@ -686,9 +687,23 @@ export function CreateBiddingDialog() { // 다이얼로그 핸들러 function handleDialogOpenChange(nextOpen: boolean) { if (!nextOpen) { + // 닫으려 할 때 확인 창을 먼저 띄움 + setShowCloseConfirmDialog(true) + } else { + // 열 때는 바로 적용 + setOpen(nextOpen) + } + } + + // 닫기 확인 핸들러 + const handleCloseConfirm = (confirmed: boolean) => { + setShowCloseConfirmDialog(false) + if (confirmed) { + // 사용자가 "예"를 선택한 경우 실제로 닫기 resetAllStates() + setOpen(false) } - setOpen(nextOpen) + // "아니오"를 선택한 경우는 아무것도 하지 않음 (다이얼로그 유지) } // 입찰 생성 버튼 클릭 핸들러 추가 @@ -2172,10 +2187,7 @@ export function CreateBiddingDialog() {