feat: [공정관리] 공정 복사 버튼 추가
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
|
||||
import { useState, useEffect, useCallback, useRef } from 'react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { ArrowLeft, Edit, GripVertical, Plus, Trash2 } from 'lucide-react';
|
||||
import { ArrowLeft, Copy, Edit, GripVertical, Plus, Trash2 } from 'lucide-react';
|
||||
import { ReorderButtons } from '@/components/molecules';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
@@ -23,7 +23,7 @@ import { usePermission } from '@/hooks/usePermission';
|
||||
import { toast } from 'sonner';
|
||||
import { DeleteConfirmDialog } from '@/components/ui/confirm-dialog';
|
||||
import { useDeleteDialog } from '@/hooks/useDeleteDialog';
|
||||
import { getProcessSteps, reorderProcessSteps, removeProcessItem, deleteProcess } from './actions';
|
||||
import { getProcessSteps, reorderProcessSteps, removeProcessItem, deleteProcess, duplicateProcess } from './actions';
|
||||
import type { Process, ProcessStep } from '@/types/process';
|
||||
|
||||
interface ProcessDetailProps {
|
||||
@@ -86,6 +86,21 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps)
|
||||
}
|
||||
};
|
||||
|
||||
const [isDuplicating, setIsDuplicating] = useState(false);
|
||||
|
||||
// 공정 복제
|
||||
const handleDuplicate = async () => {
|
||||
setIsDuplicating(true);
|
||||
const result = await duplicateProcess(process.id);
|
||||
setIsDuplicating(false);
|
||||
if (result.success && result.data) {
|
||||
toast.success('공정이 복제되었습니다.');
|
||||
router.push(`/ko/master-data/process-management/${result.data.id}?mode=view`);
|
||||
} else {
|
||||
toast.error(result.error || '공정 복제에 실패했습니다.');
|
||||
}
|
||||
};
|
||||
|
||||
// 네비게이션
|
||||
const handleEdit = () => {
|
||||
router.push(`/ko/master-data/process-management/${process.id}?mode=edit`);
|
||||
@@ -447,6 +462,16 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps)
|
||||
<Trash2 className="h-4 w-4 md:mr-2" />
|
||||
<span className="hidden md:inline">삭제</span>
|
||||
</Button>
|
||||
<Button
|
||||
variant="outline"
|
||||
onClick={handleDuplicate}
|
||||
disabled={isDuplicating}
|
||||
size="sm"
|
||||
className="md:size-default"
|
||||
>
|
||||
<Copy className="h-4 w-4 md:mr-2" />
|
||||
<span className="hidden md:inline">{isDuplicating ? '복사 중...' : '복사'}</span>
|
||||
</Button>
|
||||
<Button onClick={handleEdit} size="sm" className="md:size-default">
|
||||
<Edit className="h-4 w-4 md:mr-2" />
|
||||
<span className="hidden md:inline">수정</span>
|
||||
|
||||
Reference in New Issue
Block a user