diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-25 03:28:27 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-25 03:28:27 +0000 |
| commit | 4c2d4c235bd80368e31cae9c375e9a585f6a6844 (patch) | |
| tree | 7fd1847e1e30ef2052281453bfb7a1c45ac6627a /lib/vendor-document-list | |
| parent | f69e125f1a0b47bbc22e2784208bf829bcdd24f8 (diff) | |
(대표님) archiver 추가, 데이터룸구현
Diffstat (limited to 'lib/vendor-document-list')
| -rw-r--r-- | lib/vendor-document-list/plant/document-stage-dialogs.tsx | 169 |
1 files changed, 90 insertions, 79 deletions
diff --git a/lib/vendor-document-list/plant/document-stage-dialogs.tsx b/lib/vendor-document-list/plant/document-stage-dialogs.tsx index 4c1861b9..14035562 100644 --- a/lib/vendor-document-list/plant/document-stage-dialogs.tsx +++ b/lib/vendor-document-list/plant/document-stage-dialogs.tsx @@ -429,7 +429,7 @@ React.useEffect(() => { {/* Document Number Preview */} <div className="mt-3 p-2 bg-white dark:bg-gray-900 border rounded"> <Label className="text-xs text-gray-600 dark:text-gray-400"> - {activeTab === "SHI" ? "Document Number" : "Vendor Document Number"} Preview: + {activeTab === "SHI" ? "Document Number" : "Project Document Number"} Preview: </Label> <div className="font-mono text-sm font-medium text-blue-600 dark:text-blue-400"> {generatePreviewDocNumber()} @@ -525,85 +525,96 @@ React.useEffect(() => { ) } - return ( - <Dialog open={open} onOpenChange={onOpenChange}> - <DialogContent className="sm:max-w-[700px] h-[80vh] flex flex-col"> - <DialogHeader className="flex-shrink-0"> - <DialogTitle>Add New Document</DialogTitle> - <DialogDescription> - Enter the basic information for the new document. - </DialogDescription> - </DialogHeader> + return ( +<Dialog open={open} onOpenChange={onOpenChange}> + <DialogContent className="sm:max-w-[700px] max-h-[80vh] flex flex-col overflow-hidden"> + <DialogHeader className="flex-shrink-0"> + <DialogTitle>Add New Document</DialogTitle> + <DialogDescription> + Enter the basic information for the new document. + </DialogDescription> + </DialogHeader> + + {!shiType && !cpyType ? ( + <div className="flex-1 flex items-center justify-center"> + <Alert className="max-w-md"> + <AlertTriangle className="h-4 w-4" /> + <AlertDescription> + Required Document Number Type (SHI, CPY) is not configured. Please configure it first in the Number Types management. + </AlertDescription> + </Alert> + </div> + ) : ( + <> + <Tabs + value={activeTab} + onValueChange={(v) => handleTabChange(v as "SHI" | "CPY")} + className="flex-1 min-h-0 flex flex-col" + > + {/* 고정 영역 */} + <TabsList className="grid w-full grid-cols-2 flex-shrink-0"> + <TabsTrigger value="SHI" disabled={!shiType}> + SHI (Document No.) + {!shiType && <AlertTriangle className="ml-2 h-3 w-3" />} + </TabsTrigger> + <TabsTrigger value="CPY" disabled={!cpyType}> + CPY (Project Document No.) + {!cpyType && <AlertTriangle className="ml-2 h-3 w-3" />} + </TabsTrigger> + </TabsList> + + {/* 스크롤 영역 */} + <div className="flex-1 min-h-0 mt-4 overflow-y-auto pr-2"> + <TabsContent + value="SHI" + className="data-[state=inactive]:hidden" + > + {shiType ? ( + <DocumentForm /> + ) : ( + <Alert> + <AlertTriangle className="h-4 w-4" /> + <AlertDescription> + SHI Document Number Type is not configured. + </AlertDescription> + </Alert> + )} + </TabsContent> - {!shiType && !cpyType ? ( - <div className="flex-1 flex items-center justify-center"> - <Alert className="max-w-md"> - <AlertTriangle className="h-4 w-4" /> - <AlertDescription> - 필수 Document Number Type (SHI, CPY)이 설정되지 않았습니다. - 먼저 Number Types 관리에서 설정해주세요. - </AlertDescription> - </Alert> + <TabsContent + value="CPY" + className="data-[state=inactive]:hidden" + > + {cpyType ? ( + <DocumentForm /> + ) : ( + <Alert> + <AlertTriangle className="h-4 w-4" /> + <AlertDescription> + CPY Document Number Type is not configured. + </AlertDescription> + </Alert> + )} + </TabsContent> </div> - ) : ( - <> - <Tabs value={activeTab} onValueChange={(v) => handleTabChange(v as "SHI" | "CPY")} className="flex-1 flex flex-col"> - <TabsList className="grid w-full grid-cols-2"> - <TabsTrigger value="SHI" disabled={!shiType}> - SHI (삼성중공업 도서번호) - {!shiType && <AlertTriangle className="ml-2 h-3 w-3" />} - </TabsTrigger> - <TabsTrigger value="CPY" disabled={!cpyType}> - CPY (프로젝트 문서번호) - {!cpyType && <AlertTriangle className="ml-2 h-3 w-3" />} - </TabsTrigger> - </TabsList> - - <div className="flex-1 overflow-y-auto pr-2 mt-4"> - <TabsContent value="SHI" className="mt-0"> - {shiType ? ( - <DocumentForm /> - ) : ( - <Alert> - <AlertTriangle className="h-4 w-4" /> - <AlertDescription> - SHI Document Number Type이 설정되지 않았습니다. - </AlertDescription> - </Alert> - )} - </TabsContent> - - <TabsContent value="CPY" className="mt-0"> - {cpyType ? ( - <DocumentForm /> - ) : ( - <Alert> - <AlertTriangle className="h-4 w-4" /> - <AlertDescription> - CPY Document Number Type이 설정되지 않았습니다. - </AlertDescription> - </Alert> - )} - </TabsContent> - </div> - </Tabs> + </Tabs> - <DialogFooter className="flex-shrink-0"> - <Button variant="outline" onClick={() => onOpenChange(false)} disabled={isSubmitting}> - Cancel - </Button> - <Button - onClick={handleSubmit} - disabled={isSubmitting || !isFormValid() || (!shiType && !cpyType)} - > - {isSubmitting ? <Loader2 className="h-4 w-4 animate-spin mr-2" /> : null} - Add Document - </Button> - </DialogFooter> - </> - )} - </DialogContent> - </Dialog> + <DialogFooter className="flex-shrink-0 border-t pt-4 mt-4"> + <Button variant="outline" onClick={() => onOpenChange(false)} disabled={isSubmitting}> + Cancel + </Button> + <Button + onClick={handleSubmit} + disabled={isSubmitting || !isFormValid() || (!shiType && !cpyType)} + > + {isSubmitting ? <Loader2 className="h-4 w-4 animate-spin mr-2" /> : null} + Add Document + </Button> + </DialogFooter> + </> + )} + </DialogContent> +</Dialog> ) } // ============================================================================= @@ -736,12 +747,12 @@ export function EditDocumentDialog({ {/* Vendor Document Number (Plant project only) */} {isPlantProject && ( <div className="grid gap-2"> - <Label htmlFor="edit-vendorDocNumber">Vendor Document Number</Label> + <Label htmlFor="edit-vendorDocNumber">Project Document Number</Label> <Input id="edit-vendorDocNumber" value={formData.vendorDocNumber} onChange={(e) => setFormData({ ...formData, vendorDocNumber: e.target.value })} - placeholder="Vendor provided document number" + placeholder="Project provided document number" /> </div> )} |
