From 3e59693e017742d971f490eb7c58870cb745a98d Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Fri, 18 Jul 2025 03:58:34 +0000 Subject: (김준회) 결재 모듈 개발 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/knox/approval/ApprovalManager.tsx | 190 +++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 components/knox/approval/ApprovalManager.tsx (limited to 'components/knox/approval/ApprovalManager.tsx') diff --git a/components/knox/approval/ApprovalManager.tsx b/components/knox/approval/ApprovalManager.tsx new file mode 100644 index 00000000..cac534c4 --- /dev/null +++ b/components/knox/approval/ApprovalManager.tsx @@ -0,0 +1,190 @@ +'use client' + +import { useState } from 'react'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Badge } from '@/components/ui/badge'; +import { Switch } from '@/components/ui/switch'; +import { Label } from '@/components/ui/label'; +import { Separator } from '@/components/ui/separator'; +import { FileText, Eye, XCircle, List, History, Settings } from 'lucide-react'; + +// 결재 컴포넌트들 +import ApprovalSubmit from './ApprovalSubmit'; +import ApprovalDetail from './ApprovalDetail'; +import ApprovalCancel from './ApprovalCancel'; +import ApprovalList from './ApprovalList'; + +interface ApprovalManagerProps { + useFakeData?: boolean; + systemId?: string; + defaultTab?: string; +} + +export default function ApprovalManager({ + useFakeData = false, + systemId = 'EVCP_SYSTEM', + defaultTab = 'submit' +}: ApprovalManagerProps) { + const [currentTab, setCurrentTab] = useState(defaultTab); + const [isTestMode, setIsTestMode] = useState(useFakeData); + const [selectedApInfId, setSelectedApInfId] = useState(''); + + const handleSubmitSuccess = (apInfId: string) => { + setSelectedApInfId(apInfId); + setCurrentTab('detail'); + }; + + const handleCancelSuccess = (apInfId: string) => { + setSelectedApInfId(apInfId); + setCurrentTab('detail'); + }; + + const handleListItemClick = (apInfId: string) => { + setSelectedApInfId(apInfId); + setCurrentTab('detail'); + }; + + const handleTestModeChange = (checked: boolean) => { + setIsTestMode(checked); + }; + + return ( +
+ {/* 헤더 */} + + + + + Knox 결재 시스템 + + + 결재 상신, 조회, 취소 등 모든 결재 업무를 관리할 수 있습니다. + + + + +
+
+
+ + +
+ {isTestMode && ( + + 테스트 모드 활성화 + + )} +
+ +
+ 시스템 ID: + {systemId} +
+
+
+
+ + {/* 메인 탭 */} + + + + + 상신 + + + + 상세조회 + + + + 취소 + + + + 상신함 + + + + 이력 + + + + {/* 결재 상신 탭 */} + + + + + {/* 결재 상세 조회 탭 */} + + + + + {/* 결재 취소 탭 */} + + + + + {/* 상신함 탭 */} + + + + + {/* 결재 이력 탭 */} + + + + + + {/* 하단 정보 */} + + +
+
+
+ + Knox API 결재 시스템 +
+ +
+ Next.js 15 + shadcn/ui + TypeScript +
+
+ +
+ 버전: + v1.0.0 +
+
+
+
+
+ ); +} \ No newline at end of file -- cgit v1.2.3