'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
); }