This commit is contained in:
2026-04-06 15:54:31 +09:00
parent 87498b9940
commit de24fb09d5
21 changed files with 899 additions and 899 deletions
@@ -29,10 +29,10 @@ import { tableManagementApi } from "@/lib/api/tableManagement";
import { apiClient } from "@/lib/api/client";
interface SecondLevelMenu {
menuObjid: number;
menuName: string;
parentMenuName: string;
screenCode?: string;
menu_objid: number;
menu_name: string;
parent_menu_name: string;
screen_code?: string;
}
interface AddCategoryColumnDialogProps {
@@ -56,8 +56,8 @@ export function AddCategoryColumnDialog({
const [physicalColumns, setPhysicalColumns] = useState<string[]>([]);
const [secondLevelMenus, setSecondLevelMenus] = useState<SecondLevelMenu[]>([]);
const [selectedMenus, setSelectedMenus] = useState<number[]>([]);
const [logicalColumnName, setLogicalColumnName] = useState("");
const [physicalColumnName, setPhysicalColumnName] = useState("");
const [logical_column_name, set_logical_column_name] = useState("");
const [physical_column_name, set_physical_column_name] = useState("");
const [description, setDescription] = useState("");
// 다이얼로그 열릴 때 데이터 로드
@@ -99,22 +99,22 @@ export function AddCategoryColumnDialog({
};
// 메뉴 선택/해제
const toggleMenu = (menuObjid: number) => {
const toggleMenu = (menu_objid: number) => {
setSelectedMenus((prev) =>
prev.includes(menuObjid)
? prev.filter((id) => id !== menuObjid)
: [...prev, menuObjid]
prev.includes(menu_objid)
? prev.filter((id) => id !== menu_objid)
: [...prev, menu_objid]
);
};
const handleSave = async () => {
// 입력 검증
if (!logicalColumnName.trim()) {
if (!logical_column_name.trim()) {
toast.error("논리적 컬럼명을 입력해주세요");
return;
}
if (!physicalColumnName) {
if (!physical_column_name) {
toast.error("실제 컬럼을 선택해주세요");
return;
}
@@ -128,12 +128,12 @@ export function AddCategoryColumnDialog({
try {
// 선택된 각 메뉴에 대해 매핑 생성
const promises = selectedMenus.map((menuObjid) =>
const promises = selectedMenus.map((menu_objid) =>
createColumnMapping({
tableName,
logicalColumnName: logicalColumnName.trim(),
physicalColumnName,
menuObjid,
logicalColumnName: logical_column_name.trim(),
physicalColumnName: physical_column_name,
menuObjid: menu_objid,
description: description.trim() || undefined,
})
);
@@ -165,8 +165,8 @@ export function AddCategoryColumnDialog({
};
const resetForm = () => {
setLogicalColumnName("");
setPhysicalColumnName("");
set_logical_column_name("");
set_physical_column_name("");
setDescription("");
setSelectedMenus([]);
};
@@ -196,7 +196,7 @@ export function AddCategoryColumnDialog({
<Label className="text-xs sm:text-sm">
() *
</Label>
<Select value={physicalColumnName} onValueChange={setPhysicalColumnName}>
<Select value={physical_column_name} onValueChange={set_physical_column_name}>
<SelectTrigger className="h-8 text-xs sm:h-10 sm:text-sm">
<SelectValue placeholder="컬럼 선택" />
</SelectTrigger>
@@ -219,8 +219,8 @@ export function AddCategoryColumnDialog({
( ) *
</Label>
<Input
value={logicalColumnName}
onChange={(e) => setLogicalColumnName(e.target.value)}
value={logical_column_name}
onChange={(e) => set_logical_column_name(e.target.value)}
placeholder="예: status_stock, status_sales"
className="h-8 text-xs sm:h-10 sm:text-sm"
/>
@@ -239,18 +239,18 @@ export function AddCategoryColumnDialog({
<p className="text-xs text-muted-foreground"> ...</p>
) : (
secondLevelMenus.map((menu) => (
<div key={menu.menuObjid} className="flex items-center gap-2">
<div key={menu.menu_objid} className="flex items-center gap-2">
<Checkbox
id={`menu-${menu.menuObjid}`}
checked={selectedMenus.includes(menu.menuObjid)}
onCheckedChange={() => toggleMenu(menu.menuObjid)}
id={`menu-${menu.menu_objid}`}
checked={selectedMenus.includes(menu.menu_objid)}
onCheckedChange={() => toggleMenu(menu.menu_objid)}
className="h-4 w-4"
/>
<label
htmlFor={`menu-${menu.menuObjid}`}
htmlFor={`menu-${menu.menu_objid}`}
className="text-xs sm:text-sm cursor-pointer flex-1"
>
{menu.parentMenuName} {menu.menuName}
{menu.parent_menu_name} {menu.menu_name}
</label>
</div>
))
@@ -290,7 +290,7 @@ export function AddCategoryColumnDialog({
</Button>
<Button
onClick={handleSave}
disabled={!logicalColumnName || !physicalColumnName || selectedMenus.length === 0 || loading}
disabled={!logical_column_name || !physical_column_name || selectedMenus.length === 0 || loading}
className="h-8 flex-1 text-xs sm:h-10 sm:flex-none sm:text-sm"
>
{loading ? "추가 중..." : "추가"}