코드 활성/비활성화 해결

This commit is contained in:
dohyeons
2025-09-30 14:28:40 +09:00
parent 0b787b4c4c
commit 142f6a1a90
6 changed files with 80 additions and 39 deletions

View File

@@ -26,7 +26,7 @@ export function SortableCodeItem({
isDragOverlay = false,
}: SortableCodeItemProps) {
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
id: code.code_value,
id: code.codeValue || code.code_value,
disabled: isDragOverlay,
});
const updateCodeMutation = useUpdateCode();
@@ -39,14 +39,20 @@ export function SortableCodeItem({
// 활성/비활성 토글 핸들러
const handleToggleActive = async (checked: boolean) => {
try {
// codeValue 또는 code_value가 없으면 에러 처리
const codeValue = code.codeValue || code.code_value;
if (!codeValue) {
return;
}
await updateCodeMutation.mutateAsync({
categoryCode,
codeValue: code.code_value,
codeValue: codeValue,
data: {
codeName: code.code_name,
codeNameEng: code.code_name_eng || "",
codeName: code.codeName || code.code_name,
codeNameEng: code.codeNameEng || code.code_name_eng || "",
description: code.description || "",
sortOrder: code.sort_order,
sortOrder: code.sortOrder || code.sort_order,
isActive: checked ? "Y" : "N",
},
});
@@ -70,12 +76,12 @@ export function SortableCodeItem({
<div className="flex items-start justify-between">
<div className="min-w-0 flex-1">
<div className="flex items-center gap-2">
<h3 className="font-medium text-gray-900">{code.code_name}</h3>
<h3 className="font-medium text-gray-900">{code.codeName || code.code_name}</h3>
<Badge
variant={code.is_active === "Y" ? "default" : "secondary"}
variant={code.isActive === "Y" || code.is_active === "Y" ? "default" : "secondary"}
className={cn(
"cursor-pointer transition-colors",
code.is_active === "Y"
code.isActive === "Y" || code.is_active === "Y"
? "bg-green-100 text-green-800 hover:bg-green-200 hover:text-green-900"
: "bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-700",
updateCodeMutation.isPending && "cursor-not-allowed opacity-50",
@@ -84,16 +90,17 @@ export function SortableCodeItem({
e.preventDefault();
e.stopPropagation();
if (!updateCodeMutation.isPending) {
handleToggleActive(code.is_active !== "Y");
const isActive = code.isActive === "Y" || code.is_active === "Y";
handleToggleActive(!isActive);
}
}}
onPointerDown={(e) => e.stopPropagation()}
onMouseDown={(e) => e.stopPropagation()}
>
{code.is_active === "Y" ? "활성" : "비활성"}
{code.isActive === "Y" || code.is_active === "Y" ? "활성" : "비활성"}
</Badge>
</div>
<p className="mt-1 text-sm text-gray-600">{code.code_value}</p>
<p className="mt-1 text-sm text-gray-600">{code.codeValue || code.code_value}</p>
{code.description && <p className="mt-1 text-sm text-gray-500">{code.description}</p>}
</div>