feat: 메뉴 관리에서 화면 할당 해제 기능 추가

## 문제점
- URL 직접 입력 모드에서 빈 값으로 저장 시 menu_url은 비워지지만
- screen_code는 기존 값이 남아있어 화면 할당이 해제되지 않음

## 해결방법

### 백엔드 (adminController.ts)
- updateMenu: menu_url이 비어있으면 screen_code도 null로 자동 설정
- 로직: menuUrl ? screenCode : null

### 프론트엔드 (MenuFormModal.tsx, menu.ts)
- 화면 선택 시 screenCode도 함께 formData에 저장
- URL 타입 변경 시 screenCode 초기화
- MenuFormData 인터페이스에 screenCode 필드 추가

## 동작 방식
1. 화면 할당: menuUrl + screenCode 함께 저장
2. URL 직접 입력: menuUrl만 저장, screenCode는 undefined
3. 빈 값 저장: menuUrl = null, screenCode = null (자동)

이제 메뉴에서 화면 할당을 완전히 해제할 수 있습니다.
This commit is contained in:
kjs
2025-11-13 12:22:33 +09:00
parent 93bf83375e
commit 3ddca95af5
3 changed files with 16 additions and 5 deletions

View File

@@ -161,6 +161,7 @@ export const MenuFormModal: React.FC<MenuFormModalProps> = ({
setFormData((prev) => ({
...prev,
menuUrl: screenUrl,
screenCode: screen.screenCode, // 화면 코드도 함께 저장
}));
// console.log("🖥️ 화면 선택 완료:", {
@@ -207,10 +208,11 @@ export const MenuFormModal: React.FC<MenuFormModalProps> = ({
if (type === "direct") {
// 직접 입력 모드로 변경 시 선택된 화면 초기화
setSelectedScreen(null);
// URL 필드 초기화 (사용자가 직접 입력할 수 있도록)
// URL 필드와 screenCode 초기화 (사용자가 직접 입력할 수 있도록)
setFormData((prev) => ({
...prev,
menuUrl: "",
screenCode: undefined, // 화면 코드도 함께 초기화
}));
} else {
// 화면 할당 모드로 변경 시
@@ -230,12 +232,14 @@ export const MenuFormModal: React.FC<MenuFormModalProps> = ({
setFormData((prev) => ({
...prev,
menuUrl: screenUrl,
screenCode: selectedScreen.screenCode, // 화면 코드도 함께 유지
}));
} else {
// 선택된 화면이 없으면 URL 초기화
// 선택된 화면이 없으면 URL과 screenCode 초기화
setFormData((prev) => ({
...prev,
menuUrl: "",
screenCode: undefined,
}));
}
}