summaryrefslogtreecommitdiff
path: root/lib/evaluation-criteria/table/reg-eval-criteria-form-sheet.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/evaluation-criteria/table/reg-eval-criteria-form-sheet.tsx')
-rw-r--r--lib/evaluation-criteria/table/reg-eval-criteria-form-sheet.tsx1138
1 files changed, 569 insertions, 569 deletions
diff --git a/lib/evaluation-criteria/table/reg-eval-criteria-form-sheet.tsx b/lib/evaluation-criteria/table/reg-eval-criteria-form-sheet.tsx
index 3362d810..8f4c4413 100644
--- a/lib/evaluation-criteria/table/reg-eval-criteria-form-sheet.tsx
+++ b/lib/evaluation-criteria/table/reg-eval-criteria-form-sheet.tsx
@@ -1,586 +1,586 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
+// /* eslint-disable @typescript-eslint/no-explicit-any */
-'use client';
+// 'use client';
-/* IMPORT */
-import { Button } from '@/components/ui/button';
-import {
- Card,
- CardContent,
- CardDescription,
- CardHeader,
- CardTitle,
-} from '@/components/ui/card';
-import {
- createRegEvalCriteriaWithDetails,
- getRegEvalCriteriaWithDetails,
- modifyRegEvalCriteriaWithDetails,
-} from '../service';
-import {
- Form,
- FormControl,
- FormField,
- FormItem,
- FormLabel,
- FormMessage,
-} from '@/components/ui/form';
-import { Input } from '@/components/ui/input';
-import { Plus, Trash2 } from 'lucide-react';
-import {
- REG_EVAL_CRITERIA_CATEGORY,
- REG_EVAL_CRITERIA_CATEGORY2,
- REG_EVAL_CRITERIA_ITEM,
- type RegEvalCriteriaDetails,
- type RegEvalCriteriaView,
-} from '@/db/schema';
-import { ScrollArea } from '@/components/ui/scroll-area';
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue
-} from '@/components/ui/select';
-import {
- Sheet,
- SheetContent,
- SheetDescription,
- SheetHeader,
- SheetTitle,
-} from '@/components/ui/sheet';
-import { Textarea } from '@/components/ui/textarea';
-import { toast } from 'sonner';
-import { useForm, useFieldArray } from 'react-hook-form';
-import { useEffect, useTransition } from 'react';
-import { z } from 'zod';
-import { zodResolver } from '@hookform/resolvers/zod';
+// /* IMPORT */
+// import { Button } from '@/components/ui/button';
+// import {
+// Card,
+// CardContent,
+// CardDescription,
+// CardHeader,
+// CardTitle,
+// } from '@/components/ui/card';
+// import {
+// createRegEvalCriteriaWithDetails,
+// getRegEvalCriteriaWithDetails,
+// modifyRegEvalCriteriaWithDetails,
+// } from '../service';
+// import {
+// Form,
+// FormControl,
+// FormField,
+// FormItem,
+// FormLabel,
+// FormMessage,
+// } from '@/components/ui/form';
+// import { Input } from '@/components/ui/input';
+// import { Plus, Trash2 } from 'lucide-react';
+// import {
+// REG_EVAL_CRITERIA_CATEGORY,
+// REG_EVAL_CRITERIA_CATEGORY2,
+// REG_EVAL_CRITERIA_ITEM,
+// type RegEvalCriteriaDetails,
+// type RegEvalCriteriaView,
+// } from '@/db/schema';
+// import { ScrollArea } from '@/components/ui/scroll-area';
+// import {
+// Select,
+// SelectContent,
+// SelectItem,
+// SelectTrigger,
+// SelectValue
+// } from '@/components/ui/select';
+// import {
+// Sheet,
+// SheetContent,
+// SheetDescription,
+// SheetHeader,
+// SheetTitle,
+// } from '@/components/ui/sheet';
+// import { Textarea } from '@/components/ui/textarea';
+// import { toast } from 'sonner';
+// import { useForm, useFieldArray } from 'react-hook-form';
+// import { useEffect, useTransition } from 'react';
+// import { z } from 'zod';
+// import { zodResolver } from '@hookform/resolvers/zod';
-// ----------------------------------------------------------------------------------------------------
+// // ----------------------------------------------------------------------------------------------------
-/* TYPES */
-const regEvalCriteriaFormSchema = z.object({
- category: z.string().min(1, '평가부문은 필수 항목입니다.'),
- category2: z.string().min(1, '점수구분은 필수 항목입니다.'),
- item: z.string().min(1, '항목은 필수 항목입니다.'),
- classification: z.string().min(1, '구분은 필수 항목입니다.'),
- range: z.string().nullable().optional(),
- remarks: z.string().nullable().optional(),
- criteriaDetails: z.array(
- z.object({
- id: z.number().optional(),
- detail: z.string().min(1, '평가내용은 필수 항목입니다.'),
- scoreEquipShip: z.coerce.number().nullable().optional(),
- scoreEquipMarine: z.coerce.number().nullable().optional(),
- scoreBulkShip: z.coerce.number().nullable().optional(),
- scoreBulkMarine: z.coerce.number().nullable().optional(),
- })
- ).min(1, '최소 1개의 평가 내용이 필요합니다.'),
-});
-type RegEvalCriteriaFormData = z.infer<typeof regEvalCriteriaFormSchema>;
-interface CriteriaDetailFormProps {
- index: number
- form: any
- onRemove: () => void
- canRemove: boolean
- disabled?: boolean
-}
-interface RegEvalCriteriaFormSheetProps {
- open: boolean,
- onOpenChange: (open: boolean) => void,
- criteriaViewData: RegEvalCriteriaView | null,
- onSuccess: () => void,
-};
+// /* TYPES */
+// const regEvalCriteriaFormSchema = z.object({
+// category: z.string().min(1, '평가부문은 필수 항목입니다.'),
+// category2: z.string().min(1, '점수구분은 필수 항목입니다.'),
+// item: z.string().min(1, '항목은 필수 항목입니다.'),
+// classification: z.string().min(1, '구분은 필수 항목입니다.'),
+// range: z.string().nullable().optional(),
+// remarks: z.string().nullable().optional(),
+// criteriaDetails: z.array(
+// z.object({
+// id: z.number().optional(),
+// detail: z.string().min(1, '평가내용은 필수 항목입니다.'),
+// scoreEquipShip: z.coerce.number().nullable().optional(),
+// scoreEquipMarine: z.coerce.number().nullable().optional(),
+// scoreBulkShip: z.coerce.number().nullable().optional(),
+// scoreBulkMarine: z.coerce.number().nullable().optional(),
+// })
+// ).min(1, '최소 1개의 평가 내용이 필요합니다.'),
+// });
+// type RegEvalCriteriaFormData = z.infer<typeof regEvalCriteriaFormSchema>;
+// interface CriteriaDetailFormProps {
+// index: number
+// form: any
+// onRemove: () => void
+// canRemove: boolean
+// disabled?: boolean
+// }
+// interface RegEvalCriteriaFormSheetProps {
+// open: boolean,
+// onOpenChange: (open: boolean) => void,
+// criteriaViewData: RegEvalCriteriaView | null,
+// onSuccess: () => void,
+// };
-// ----------------------------------------------------------------------------------------------------
+// // ----------------------------------------------------------------------------------------------------
-/* CRITERIA DETAIL FORM COPONENT */
-function CriteriaDetailForm({
- index,
- form,
- onRemove,
- canRemove,
- disabled = false,
-}: CriteriaDetailFormProps) {
+// /* CRITERIA DETAIL FORM COPONENT */
+// function CriteriaDetailForm({
+// index,
+// form,
+// onRemove,
+// canRemove,
+// disabled = false,
+// }: CriteriaDetailFormProps) {
- return (
- <Card>
- <CardHeader>
- <div className="flex items-center justify-between">
- <CardTitle className="text-lg">Detail Item - {index + 1}</CardTitle>
- {canRemove && (
- <Button
- type="button"
- variant="ghost"
- size="sm"
- onClick={onRemove}
- className="text-destructive hover:text-destructive"
- disabled={disabled}
- >
- <Trash2 className="w-4 h-4" />
- </Button>
- )}
- </div>
- </CardHeader>
- <CardContent className="space-y-4">
- <FormField
- control={form.control}
- name={`criteriaDetails.${index}.id`}
- render={({ field }) => (
- <Input type="hidden" {...field} />
- )}
- />
- <FormField
- control={form.control}
- name={`criteriaDetails.${index}.detail`}
- render={({ field }) => (
- <FormItem>
- <FormLabel>평가내용</FormLabel>
- <FormControl>
- <Textarea
- placeholder="평가내용을 입력하세요."
- {...field}
- disabled={disabled}
- />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name={`criteriaDetails.${index}.scoreEquipShip`}
- render={({ field }) => (
- <FormItem>
- <FormLabel>배점/기자재/조선</FormLabel>
- <FormControl>
- <Input
- type="number"
- step="0.1"
- placeholder="배점/기자재/조선"
- {...field}
- value={field.value ?? 0}
- disabled={disabled}
- />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name={`criteriaDetails.${index}.scoreEquipMarine`}
- render={({ field }) => (
- <FormItem>
- <FormLabel>배점/기자재/해양</FormLabel>
- <FormControl>
- <Input
- type="number"
- step="0.1"
- placeholder="배점/기자재/해양"
- {...field}
- value={field.value ?? 0}
- disabled={disabled}
- />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name={`criteriaDetails.${index}.scoreBulkShip`}
- render={({ field }) => (
- <FormItem>
- <FormLabel>배점/벌크/조선</FormLabel>
- <FormControl>
- <Input
- type="number"
- step="0.1"
- placeholder="배점/벌크/조선"
- {...field}
- value={field.value ?? 0}
- disabled={disabled}
- />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name={`criteriaDetails.${index}.scoreBulkMarine`}
- render={({ field }) => (
- <FormItem>
- <FormLabel>배점/벌크/해양</FormLabel>
- <FormControl>
- <Input
- type="number"
- step="0.1"
- placeholder="배점/벌크/해양"
- {...field}
- value={field.value ?? 0}
- disabled={disabled}
- />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- </CardContent>
- </Card>
- )
-}
+// return (
+// <Card>
+// <CardHeader>
+// <div className="flex items-center justify-between">
+// <CardTitle className="text-lg">Detail Item - {index + 1}</CardTitle>
+// {canRemove && (
+// <Button
+// type="button"
+// variant="ghost"
+// size="sm"
+// onClick={onRemove}
+// className="text-destructive hover:text-destructive"
+// disabled={disabled}
+// >
+// <Trash2 className="w-4 h-4" />
+// </Button>
+// )}
+// </div>
+// </CardHeader>
+// <CardContent className="space-y-4">
+// <FormField
+// control={form.control}
+// name={`criteriaDetails.${index}.id`}
+// render={({ field }) => (
+// <Input type="hidden" {...field} />
+// )}
+// />
+// <FormField
+// control={form.control}
+// name={`criteriaDetails.${index}.detail`}
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>평가내용</FormLabel>
+// <FormControl>
+// <Textarea
+// placeholder="평가내용을 입력하세요."
+// {...field}
+// disabled={disabled}
+// />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name={`criteriaDetails.${index}.scoreEquipShip`}
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>배점/기자재/조선</FormLabel>
+// <FormControl>
+// <Input
+// type="number"
+// step="0.1"
+// placeholder="배점/기자재/조선"
+// {...field}
+// value={field.value ?? 0}
+// disabled={disabled}
+// />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name={`criteriaDetails.${index}.scoreEquipMarine`}
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>배점/기자재/해양</FormLabel>
+// <FormControl>
+// <Input
+// type="number"
+// step="0.1"
+// placeholder="배점/기자재/해양"
+// {...field}
+// value={field.value ?? 0}
+// disabled={disabled}
+// />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name={`criteriaDetails.${index}.scoreBulkShip`}
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>배점/벌크/조선</FormLabel>
+// <FormControl>
+// <Input
+// type="number"
+// step="0.1"
+// placeholder="배점/벌크/조선"
+// {...field}
+// value={field.value ?? 0}
+// disabled={disabled}
+// />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name={`criteriaDetails.${index}.scoreBulkMarine`}
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>배점/벌크/해양</FormLabel>
+// <FormControl>
+// <Input
+// type="number"
+// step="0.1"
+// placeholder="배점/벌크/해양"
+// {...field}
+// value={field.value ?? 0}
+// disabled={disabled}
+// />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// </CardContent>
+// </Card>
+// )
+// }
-/* CRITERIA FORM SHEET COPONENT */
-function RegEvalCriteriaFormSheet({
- open,
- onOpenChange,
- criteriaViewData,
- onSuccess,
-}: RegEvalCriteriaFormSheetProps) {
- const [isPending, startTransition] = useTransition();
- const isUpdateMode = !!criteriaViewData;
+// /* CRITERIA FORM SHEET COPONENT */
+// function RegEvalCriteriaFormSheet({
+// open,
+// onOpenChange,
+// criteriaViewData,
+// onSuccess,
+// }: RegEvalCriteriaFormSheetProps) {
+// const [isPending, startTransition] = useTransition();
+// const isUpdateMode = !!criteriaViewData;
- const form = useForm<RegEvalCriteriaFormData>({
- resolver: zodResolver(regEvalCriteriaFormSchema),
- defaultValues: {
- category: '',
- category2: '',
- item: '',
- classification: '',
- range: '',
- remarks: '',
- criteriaDetails: [
- {
- id: undefined,
- detail: '',
- scoreEquipShip: null,
- scoreEquipMarine: null,
- scoreBulkShip: null,
- scoreBulkMarine: null,
- },
- ],
- },
- });
+// const form = useForm<RegEvalCriteriaFormData>({
+// resolver: zodResolver(regEvalCriteriaFormSchema),
+// defaultValues: {
+// category: '',
+// category2: '',
+// item: '',
+// classification: '',
+// range: '',
+// remarks: '',
+// criteriaDetails: [
+// {
+// id: undefined,
+// detail: '',
+// scoreEquipShip: null,
+// scoreEquipMarine: null,
+// scoreBulkShip: null,
+// scoreBulkMarine: null,
+// },
+// ],
+// },
+// });
- const { fields, append, remove } = useFieldArray({
- control: form.control,
- name: 'criteriaDetails',
- });
+// const { fields, append, remove } = useFieldArray({
+// control: form.control,
+// name: 'criteriaDetails',
+// });
- useEffect(() => {
- if (open && isUpdateMode && criteriaViewData) {
- startTransition(async () => {
- try {
- const targetData = await getRegEvalCriteriaWithDetails(criteriaViewData.criteriaId!);
- if (targetData) {
- form.reset({
- category: targetData.category,
- category2: targetData.category2,
- item: targetData.item,
- classification: targetData.classification,
- range: targetData.range,
- remarks: targetData.remarks,
- criteriaDetails: targetData.criteriaDetails?.map((detailItem: RegEvalCriteriaDetails) => ({
- id: detailItem.id,
- detail: detailItem.detail,
- scoreEquipShip: detailItem.scoreEquipShip !== null
- ? Number(detailItem.scoreEquipShip) : null,
- scoreEquipMarine: detailItem.scoreEquipMarine !== null
- ? Number(detailItem.scoreEquipMarine) : null,
- scoreBulkShip: detailItem.scoreBulkShip !== null
- ? Number(detailItem.scoreBulkShip) : null,
- scoreBulkMarine: detailItem.scoreBulkMarine !== null
- ? Number(detailItem.scoreBulkMarine) : null,
- })) || [],
- })
- }
- } catch (error) {
- console.error('Error in Loading Regular Evaluation Criteria for Updating:', error)
- toast.error(error instanceof Error ? error.message : '편집할 데이터를 불러오는 데 실패했습니다.')
- }
- })
- } else if (open && !isUpdateMode) {
- form.reset({
- category: '',
- category2: '',
- item: '',
- classification: '',
- range: '',
- remarks: '',
- criteriaDetails: [
- {
- id: undefined,
- detail: '',
- scoreEquipShip: null,
- scoreEquipMarine: null,
- scoreBulkShip: null,
- scoreBulkMarine: null,
- },
- ],
- })
- }
- }, [open, isUpdateMode, criteriaViewData, form]);
+// useEffect(() => {
+// if (open && isUpdateMode && criteriaViewData) {
+// startTransition(async () => {
+// try {
+// const targetData = await getRegEvalCriteriaWithDetails(criteriaViewData.criteriaId!);
+// if (targetData) {
+// form.reset({
+// category: targetData.category,
+// category2: targetData.category2,
+// item: targetData.item,
+// classification: targetData.classification,
+// range: targetData.range,
+// remarks: targetData.remarks,
+// criteriaDetails: targetData.criteriaDetails?.map((detailItem: RegEvalCriteriaDetails) => ({
+// id: detailItem.id,
+// detail: detailItem.detail,
+// scoreEquipShip: detailItem.scoreEquipShip !== null
+// ? Number(detailItem.scoreEquipShip) : null,
+// scoreEquipMarine: detailItem.scoreEquipMarine !== null
+// ? Number(detailItem.scoreEquipMarine) : null,
+// scoreBulkShip: detailItem.scoreBulkShip !== null
+// ? Number(detailItem.scoreBulkShip) : null,
+// scoreBulkMarine: detailItem.scoreBulkMarine !== null
+// ? Number(detailItem.scoreBulkMarine) : null,
+// })) || [],
+// })
+// }
+// } catch (error) {
+// console.error('Error in Loading Regular Evaluation Criteria for Updating:', error)
+// toast.error(error instanceof Error ? error.message : '편집할 데이터를 불러오는 데 실패했습니다.')
+// }
+// })
+// } else if (open && !isUpdateMode) {
+// form.reset({
+// category: '',
+// category2: '',
+// item: '',
+// classification: '',
+// range: '',
+// remarks: '',
+// criteriaDetails: [
+// {
+// id: undefined,
+// detail: '',
+// scoreEquipShip: null,
+// scoreEquipMarine: null,
+// scoreBulkShip: null,
+// scoreBulkMarine: null,
+// },
+// ],
+// })
+// }
+// }, [open, isUpdateMode, criteriaViewData, form]);
- const onSubmit = async (data: RegEvalCriteriaFormData) => {
- startTransition(async () => {
- try {
- const criteriaData = {
- category: data.category,
- category2: data.category2,
- item: data.item,
- classification: data.classification,
- range: data.range,
- remarks: data.remarks,
- };
- const detailList = data.criteriaDetails.map((detailItem) => ({
- id: detailItem.id,
- detail: detailItem.detail,
- scoreEquipShip: detailItem.scoreEquipShip != null
- ? String(detailItem.scoreEquipShip) : null,
- scoreEquipMarine: detailItem.scoreEquipMarine != null
- ? String(detailItem.scoreEquipMarine) : null,
- scoreBulkShip: detailItem.scoreBulkShip != null
- ? String(detailItem.scoreBulkShip) : null,
- scoreBulkMarine: detailItem.scoreBulkMarine != null
- ? String(detailItem.scoreBulkMarine) : null,
- }));
+// const onSubmit = async (data: RegEvalCriteriaFormData) => {
+// startTransition(async () => {
+// try {
+// const criteriaData = {
+// category: data.category,
+// category2: data.category2,
+// item: data.item,
+// classification: data.classification,
+// range: data.range,
+// remarks: data.remarks,
+// };
+// const detailList = data.criteriaDetails.map((detailItem) => ({
+// id: detailItem.id,
+// detail: detailItem.detail,
+// scoreEquipShip: detailItem.scoreEquipShip != null
+// ? String(detailItem.scoreEquipShip) : null,
+// scoreEquipMarine: detailItem.scoreEquipMarine != null
+// ? String(detailItem.scoreEquipMarine) : null,
+// scoreBulkShip: detailItem.scoreBulkShip != null
+// ? String(detailItem.scoreBulkShip) : null,
+// scoreBulkMarine: detailItem.scoreBulkMarine != null
+// ? String(detailItem.scoreBulkMarine) : null,
+// }));
- if (isUpdateMode && criteriaViewData) {
- await modifyRegEvalCriteriaWithDetails(criteriaViewData.criteriaId!, criteriaData, detailList);
- toast.success('평가 기준표가 수정되었습니다.');
- } else {
- await createRegEvalCriteriaWithDetails(criteriaData, detailList);
- toast.success('평가 기준표가 생성되었습니다.');
- }
- onSuccess();
- onOpenChange(false);
- } catch (error) {
- console.error('Error in Saving Regular Evaluation Criteria:', error);
- toast.error(
- error instanceof Error ? error.message : '평가 기준표 저장 중 오류가 발생했습니다.'
- );
- }
- })
- }
+// if (isUpdateMode && criteriaViewData) {
+// await modifyRegEvalCriteriaWithDetails(criteriaViewData.criteriaId!, criteriaData, detailList);
+// toast.success('평가 기준표가 수정되었습니다.');
+// } else {
+// await createRegEvalCriteriaWithDetails(criteriaData, detailList);
+// toast.success('평가 기준표가 생성되었습니다.');
+// }
+// onSuccess();
+// onOpenChange(false);
+// } catch (error) {
+// console.error('Error in Saving Regular Evaluation Criteria:', error);
+// toast.error(
+// error instanceof Error ? error.message : '평가 기준표 저장 중 오류가 발생했습니다.'
+// );
+// }
+// })
+// }
- if (!open) {
- return null;
- }
+// if (!open) {
+// return null;
+// }
- return (
- <Sheet open={open} onOpenChange={onOpenChange}>
- <SheetContent className="w-[900px] sm:max-w-[900px] overflow-y-auto">
- <SheetHeader className="mb-4">
- <SheetTitle className="font-bold">
- {isUpdateMode ? '협력업체 평가 기준표 수정' : '새 협력업체 평가 기준표 생성'}
- </SheetTitle>
- <SheetDescription>
- {isUpdateMode ? '협력업체 평가 기준표의 정보를 수정합니다.' : '새로운 협력업체 평가 기준표를 생성합니다.'}
- </SheetDescription>
- </SheetHeader>
- <Form {...form}>
- <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-6">
- <ScrollArea className="h-[calc(100vh-200px)] pr-4">
- <div className="space-y-6">
- <Card>
- <CardHeader>
- <CardTitle>Criterion Info</CardTitle>
- </CardHeader>
- <CardContent className="space-y-4">
- <FormField
- control={form.control}
- name="category"
- render={({ field }) => (
- <FormItem>
- <FormLabel>평가부문</FormLabel>
- <FormControl>
- <Select onValueChange={field.onChange} value={field.value || ""}>
- <SelectTrigger>
- <SelectValue placeholder="선택" />
- </SelectTrigger>
- <SelectContent>
- {REG_EVAL_CRITERIA_CATEGORY.map((option) => (
- <SelectItem key={option.value} value={option.value}>
- {option.label}
- </SelectItem>
- ))}
- </SelectContent>
- </Select>
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name="category2"
- render={({ field }) => (
- <FormItem>
- <FormLabel>점수구분</FormLabel>
- <FormControl>
- <Select onValueChange={field.onChange} value={field.value || ""}>
- <SelectTrigger>
- <SelectValue placeholder="선택" />
- </SelectTrigger>
- <SelectContent>
- {REG_EVAL_CRITERIA_CATEGORY2.map((option) => (
- <SelectItem key={option.value} value={option.value}>
- {option.label}
- </SelectItem>
- ))}
- </SelectContent>
- </Select>
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name="item"
- render={({ field }) => (
- <FormItem>
- <FormLabel>항목</FormLabel>
- <FormControl>
- <Select onValueChange={field.onChange} value={field.value || ""}>
- <SelectTrigger>
- <SelectValue placeholder="선택" />
- </SelectTrigger>
- <SelectContent>
- {REG_EVAL_CRITERIA_ITEM.map((option) => (
- <SelectItem key={option.value} value={option.value}>
- {option.label}
- </SelectItem>
- ))}
- </SelectContent>
- </Select>
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name="classification"
- render={({ field }) => (
- <FormItem>
- <FormLabel>구분</FormLabel>
- <FormControl>
- <Input placeholder="구분을 입력하세요." {...field} />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name="range"
- render={({ field }) => (
- <FormItem>
- <FormLabel>범위</FormLabel>
- <FormControl>
- <Input
- placeholder="범위를 입력하세요." {...field}
- value={field.value ?? ''}
- />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- <FormField
- control={form.control}
- name="remarks"
- render={({ field }) => (
- <FormItem>
- <FormLabel>비고</FormLabel>
- <FormControl>
- <Textarea
- placeholder="비고를 입력하세요."
- {...field}
- value={field.value ?? ''}
- />
- </FormControl>
- <FormMessage />
- </FormItem>
- )}
- />
- </CardContent>
- </Card>
- <Card>
- <CardHeader>
- <div className="flex items-center justify-between">
- <div>
- <CardTitle>Evaluation Criteria Item</CardTitle>
- <CardDescription>
- Set Evaluation Criteria Item.
- </CardDescription>
- </div>
- <Button
- type="button"
- variant="outline"
- size="sm"
- className="ml-4"
- onClick={() =>
- append({
- id: undefined,
- detail: '',
- scoreEquipShip: null,
- scoreEquipMarine: null,
- scoreBulkShip: null,
- scoreBulkMarine: null,
- })
- }
- disabled={isPending}
- >
- <Plus className="w-4 h-4 mr-2" />
- New Item
- </Button>
- </div>
- </CardHeader>
- <CardContent>
- <div className="space-y-4">
- {fields.map((field, index) => (
- <CriteriaDetailForm
- key={field.id}
- index={index}
- form={form}
- onRemove={() => remove(index)}
- canRemove={fields.length > 1}
- disabled={isPending}
- />
- ))}
- </div>
- </CardContent>
- </Card>
- </div>
- </ScrollArea>
- <div className="flex justify-end gap-2 pt-4 border-t">
- <Button
- type="button"
- variant="outline"
- onClick={() => onOpenChange(false)}
- disabled={isPending}
- >
- Cancel
- </Button>
- <Button type="submit" disabled={isPending}>
- {isPending
- ? 'Saving...'
- : isUpdateMode
- ? 'Modify'
- : 'Create'}
- </Button>
- </div>
- </form>
- </Form>
- </SheetContent>
- </Sheet>
- )
-}
+// return (
+// <Sheet open={open} onOpenChange={onOpenChange}>
+// <SheetContent className="w-[900px] sm:max-w-[900px] overflow-y-auto">
+// <SheetHeader className="mb-4">
+// <SheetTitle className="font-bold">
+// {isUpdateMode ? '협력업체 평가 기준표 수정' : '새 협력업체 평가 기준표 생성'}
+// </SheetTitle>
+// <SheetDescription>
+// {isUpdateMode ? '협력업체 평가 기준표의 정보를 수정합니다.' : '새로운 협력업체 평가 기준표를 생성합니다.'}
+// </SheetDescription>
+// </SheetHeader>
+// <Form {...form}>
+// <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-6">
+// <ScrollArea className="h-[calc(100vh-200px)] pr-4">
+// <div className="space-y-6">
+// <Card>
+// <CardHeader>
+// <CardTitle>Criterion Info</CardTitle>
+// </CardHeader>
+// <CardContent className="space-y-4">
+// <FormField
+// control={form.control}
+// name="category"
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>평가부문</FormLabel>
+// <FormControl>
+// <Select onValueChange={field.onChange} value={field.value || ""}>
+// <SelectTrigger>
+// <SelectValue placeholder="선택" />
+// </SelectTrigger>
+// <SelectContent>
+// {REG_EVAL_CRITERIA_CATEGORY.map((option) => (
+// <SelectItem key={option.value} value={option.value}>
+// {option.label}
+// </SelectItem>
+// ))}
+// </SelectContent>
+// </Select>
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name="category2"
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>점수구분</FormLabel>
+// <FormControl>
+// <Select onValueChange={field.onChange} value={field.value || ""}>
+// <SelectTrigger>
+// <SelectValue placeholder="선택" />
+// </SelectTrigger>
+// <SelectContent>
+// {REG_EVAL_CRITERIA_CATEGORY2.map((option) => (
+// <SelectItem key={option.value} value={option.value}>
+// {option.label}
+// </SelectItem>
+// ))}
+// </SelectContent>
+// </Select>
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name="item"
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>항목</FormLabel>
+// <FormControl>
+// <Select onValueChange={field.onChange} value={field.value || ""}>
+// <SelectTrigger>
+// <SelectValue placeholder="선택" />
+// </SelectTrigger>
+// <SelectContent>
+// {REG_EVAL_CRITERIA_ITEM.map((option) => (
+// <SelectItem key={option.value} value={option.value}>
+// {option.label}
+// </SelectItem>
+// ))}
+// </SelectContent>
+// </Select>
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name="classification"
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>구분</FormLabel>
+// <FormControl>
+// <Input placeholder="구분을 입력하세요." {...field} />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name="range"
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>범위</FormLabel>
+// <FormControl>
+// <Input
+// placeholder="범위를 입력하세요." {...field}
+// value={field.value ?? ''}
+// />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// <FormField
+// control={form.control}
+// name="remarks"
+// render={({ field }) => (
+// <FormItem>
+// <FormLabel>비고</FormLabel>
+// <FormControl>
+// <Textarea
+// placeholder="비고를 입력하세요."
+// {...field}
+// value={field.value ?? ''}
+// />
+// </FormControl>
+// <FormMessage />
+// </FormItem>
+// )}
+// />
+// </CardContent>
+// </Card>
+// <Card>
+// <CardHeader>
+// <div className="flex items-center justify-between">
+// <div>
+// <CardTitle>Evaluation Criteria Item</CardTitle>
+// <CardDescription>
+// Set Evaluation Criteria Item.
+// </CardDescription>
+// </div>
+// <Button
+// type="button"
+// variant="outline"
+// size="sm"
+// className="ml-4"
+// onClick={() =>
+// append({
+// id: undefined,
+// detail: '',
+// scoreEquipShip: null,
+// scoreEquipMarine: null,
+// scoreBulkShip: null,
+// scoreBulkMarine: null,
+// })
+// }
+// disabled={isPending}
+// >
+// <Plus className="w-4 h-4 mr-2" />
+// New Item
+// </Button>
+// </div>
+// </CardHeader>
+// <CardContent>
+// <div className="space-y-4">
+// {fields.map((field, index) => (
+// <CriteriaDetailForm
+// key={field.id}
+// index={index}
+// form={form}
+// onRemove={() => remove(index)}
+// canRemove={fields.length > 1}
+// disabled={isPending}
+// />
+// ))}
+// </div>
+// </CardContent>
+// </Card>
+// </div>
+// </ScrollArea>
+// <div className="flex justify-end gap-2 pt-4 border-t">
+// <Button
+// type="button"
+// variant="outline"
+// onClick={() => onOpenChange(false)}
+// disabled={isPending}
+// >
+// Cancel
+// </Button>
+// <Button type="submit" disabled={isPending}>
+// {isPending
+// ? 'Saving...'
+// : isUpdateMode
+// ? 'Modify'
+// : 'Create'}
+// </Button>
+// </div>
+// </form>
+// </Form>
+// </SheetContent>
+// </Sheet>
+// )
+// }
-// ----------------------------------------------------------------------------------------------------
+// // ----------------------------------------------------------------------------------------------------
-/* EXPORT */
-export default RegEvalCriteriaFormSheet; \ No newline at end of file
+// /* EXPORT */
+// export default RegEvalCriteriaFormSheet; \ No newline at end of file