This commit is contained in:
유병철
2026-01-21 20:56:38 +09:00
21 changed files with 2846 additions and 31 deletions

View File

@@ -8,7 +8,7 @@
import { useState, useEffect, useCallback } from 'react';
import { useRouter } from 'next/navigation';
import { X, Edit2, FileText } from 'lucide-react';
import { ArrowLeft, FileText, X, Edit2, Loader2 } from 'lucide-react';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
@@ -28,9 +28,12 @@ import { AssigneeSelectModal } from './AssigneeSelectModal';
import { toast } from 'sonner';
import { isNextRedirectError } from '@/lib/utils/redirect-error';
import { createWorkOrder, getProcessOptions, type ProcessOption } from './actions';
import { type SalesOrder } from './types';
import { PROCESS_TYPE_LABELS, type ProcessType, type SalesOrder } from './types';
import { workOrderCreateConfig } from './workOrderConfig';
import { useDevFill } from '@/components/dev';
import { generateWorkOrderData } from '@/components/dev/generators/workOrderData';
// Validation 에러 타입
interface ValidationErrors {
[key: string]: string;
@@ -113,6 +116,32 @@ export function WorkOrderCreate() {
loadProcessOptions();
}, []);
// DevToolbar 자동 채우기
useDevFill(
'workOrder',
useCallback(() => {
const sampleData = generateWorkOrderData({ processOptions });
// 수동 등록 모드로 변경
setMode('manual');
// 폼 데이터 채우기
setFormData(prev => ({
...prev,
client: '테스트 거래처',
projectName: '테스트 현장',
orderNo: '',
itemCount: 0,
processId: sampleData.processId,
shipmentDate: sampleData.shipmentDate,
priority: sampleData.priority,
note: sampleData.note,
}));
toast.success('[Dev] 작업지시 폼이 자동으로 채워졌습니다.');
}, [processOptions])
);
// 수주 선택 핸들러
const handleSelectOrder = (order: SalesOrder) => {
setFormData({