diff --git a/backend-node/src/controllers/adminController.ts b/backend-node/src/controllers/adminController.ts index e5a3c7b3..02a11996 100644 --- a/backend-node/src/controllers/adminController.ts +++ b/backend-node/src/controllers/adminController.ts @@ -1274,6 +1274,10 @@ export async function updateMenu( const companyCode = requestCompanyCode; + // menu_url이 비어있으면 screen_code도 null로 설정 + const menuUrl = menuData.menuUrl || null; + const screenCode = menuUrl ? menuData.screenCode || null : null; + // Raw Query를 사용한 메뉴 수정 const [updatedMenu] = await query( `UPDATE menu_info SET @@ -1288,8 +1292,9 @@ export async function updateMenu( system_name = $9, company_code = $10, lang_key = $11, - lang_key_desc = $12 - WHERE objid = $13 + lang_key_desc = $12, + screen_code = $13 + WHERE objid = $14 RETURNING *`, [ menuData.menuType ? Number(menuData.menuType) : null, @@ -1297,13 +1302,14 @@ export async function updateMenu( menuData.menuNameKor, menuData.menuNameEng || null, menuData.seq ? Number(menuData.seq) : null, - menuData.menuUrl || null, + menuUrl, menuData.menuDesc || null, menuData.status || "active", menuData.systemName || null, companyCode, menuData.langKey || null, menuData.langKeyDesc || null, + screenCode, Number(menuId), ] ); diff --git a/frontend/components/admin/MenuFormModal.tsx b/frontend/components/admin/MenuFormModal.tsx index 7c6f6aa5..33d2447e 100644 --- a/frontend/components/admin/MenuFormModal.tsx +++ b/frontend/components/admin/MenuFormModal.tsx @@ -161,6 +161,7 @@ export const MenuFormModal: React.FC = ({ setFormData((prev) => ({ ...prev, menuUrl: screenUrl, + screenCode: screen.screenCode, // 화면 코드도 함께 저장 })); // console.log("🖥️ 화면 선택 완료:", { @@ -207,10 +208,11 @@ export const MenuFormModal: React.FC = ({ if (type === "direct") { // 직접 입력 모드로 변경 시 선택된 화면 초기화 setSelectedScreen(null); - // URL 필드도 초기화 (사용자가 직접 입력할 수 있도록) + // URL 필드와 screenCode 초기화 (사용자가 직접 입력할 수 있도록) setFormData((prev) => ({ ...prev, menuUrl: "", + screenCode: undefined, // 화면 코드도 함께 초기화 })); } else { // 화면 할당 모드로 변경 시 @@ -230,12 +232,14 @@ export const MenuFormModal: React.FC = ({ setFormData((prev) => ({ ...prev, menuUrl: screenUrl, + screenCode: selectedScreen.screenCode, // 화면 코드도 함께 유지 })); } else { - // 선택된 화면이 없으면 URL만 초기화 + // 선택된 화면이 없으면 URL과 screenCode 초기화 setFormData((prev) => ({ ...prev, menuUrl: "", + screenCode: undefined, })); } } diff --git a/frontend/lib/api/menu.ts b/frontend/lib/api/menu.ts index 80156357..ad28996e 100644 --- a/frontend/lib/api/menu.ts +++ b/frontend/lib/api/menu.ts @@ -53,6 +53,7 @@ export interface MenuFormData { status: string; companyCode: string; langKey?: string; // 다국어 키 추가 + screenCode?: string; // 화면 코드 추가 } export interface LangKey {