123
This commit is contained in:
@@ -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 ? "추가 중..." : "추가"}
|
||||
|
||||
Reference in New Issue
Block a user