From b9a109073d11262dd7ed84e25ff3cd0144c0c391 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 4 Jul 2025 00:21:05 +0000 Subject: (최겸) 0703 평가기준표 대표님 작업사항 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table/reg-eval-criteria-update-sheet.tsx | 574 +++++++++++++-------- 1 file changed, 365 insertions(+), 209 deletions(-) (limited to 'lib/evaluation-criteria/table/reg-eval-criteria-update-sheet.tsx') diff --git a/lib/evaluation-criteria/table/reg-eval-criteria-update-sheet.tsx b/lib/evaluation-criteria/table/reg-eval-criteria-update-sheet.tsx index 7f40b318..bbf4f36d 100644 --- a/lib/evaluation-criteria/table/reg-eval-criteria-update-sheet.tsx +++ b/lib/evaluation-criteria/table/reg-eval-criteria-update-sheet.tsx @@ -30,9 +30,8 @@ import { REG_EVAL_CRITERIA_CATEGORY2, REG_EVAL_CRITERIA_ITEM, type RegEvalCriteriaDetails, - type RegEvalCriteriaView, + type RegEvalCriteria, // RegEvalCriteriaView 대신 RegEvalCriteria 사용 } from '@/db/schema'; -import { ScrollArea } from '@/components/ui/scroll-area'; import { Select, SelectContent, @@ -47,6 +46,7 @@ import { SheetHeader, SheetTitle, } from '@/components/ui/sheet'; +import { Separator } from '@/components/ui/separator'; import { Textarea } from '@/components/ui/textarea'; import { toast } from 'sonner'; import { useForm, useFieldArray } from 'react-hook-form'; @@ -64,6 +64,11 @@ const regEvalCriteriaFormSchema = z.object({ classification: z.string().min(1, '구분은 필수 항목입니다.'), range: z.string().nullable().optional(), remarks: z.string().nullable().optional(), + // 새로운 필드들 추가 + scoreType: z.enum(['fixed', 'variable']).default('fixed'), + variableScoreMin: z.coerce.number().nullable().optional(), + variableScoreMax: z.coerce.number().nullable().optional(), + variableScoreUnit: z.string().nullable().optional(), criteriaDetails: z.array( z.object({ id: z.number().optional(), @@ -75,18 +80,22 @@ const regEvalCriteriaFormSchema = z.object({ }) ).min(1, '최소 1개의 평가 내용이 필요합니다.'), }); + type RegEvalCriteriaFormData = z.infer; + interface CriteriaDetailFormProps { index: number form: any onRemove: () => void canRemove: boolean disabled?: boolean + scoreType: 'fixed' | 'variable' } + interface RegEvalCriteriaUpdateSheetProps { open: boolean, onOpenChange: (open: boolean) => void, - criteriaViewData: RegEvalCriteriaView, + criteriaData: RegEvalCriteria, // criteriaViewData → criteriaData로 변경 onSuccess: () => void, }; @@ -99,13 +108,14 @@ function CriteriaDetailForm({ onRemove, canRemove, disabled = false, + scoreType, }: CriteriaDetailFormProps) { return (
- Detail Item - {index + 1} + 평가 옵션 {index + 1} {canRemove && (