86 lines
1.7 KiB
TypeScript
86 lines
1.7 KiB
TypeScript
/**
|
|
* 메뉴 관련 타입 정의
|
|
*/
|
|
|
|
export interface MenuItem {
|
|
objid: string;
|
|
parentObjId: string;
|
|
menuNameKor: string;
|
|
menuNameEng: string;
|
|
menuUrl: string;
|
|
menuDesc: string;
|
|
status: "ACTIVE" | "INACTIVE";
|
|
statusTitle: string;
|
|
seq: number;
|
|
lev: number;
|
|
menuType: "admin" | "user";
|
|
lpadMenuNameKor: string;
|
|
writer?: string;
|
|
regdate?: string;
|
|
company_code?: string;
|
|
company_name?: string;
|
|
|
|
// 계층적 메뉴 구조를 위한 필드들
|
|
children?: MenuItem[];
|
|
|
|
// 번역 관련 필드들
|
|
translated_name?: string;
|
|
translated_desc?: string;
|
|
lang_key?: string;
|
|
lang_key_desc?: string;
|
|
|
|
// 백엔드에서 오는 대문자 키들 (fallback)
|
|
OBJID?: string;
|
|
PARENT_OBJ_ID?: string;
|
|
MENU_NAME_KOR?: string;
|
|
MENU_NAME_ENG?: string;
|
|
MENU_URL?: string;
|
|
MENU_DESC?: string;
|
|
STATUS?: string;
|
|
STATUS_TITLE?: string;
|
|
SEQ?: number;
|
|
LEV?: number;
|
|
MENU_TYPE?: string;
|
|
LPAD_MENU_NAME_KOR?: string;
|
|
WRITER?: string;
|
|
REGDATE?: string;
|
|
COMPANY_CODE?: string;
|
|
COMPANY_NAME?: string;
|
|
|
|
// 번역 관련 대문자 키들
|
|
TRANSLATED_NAME?: string;
|
|
TRANSLATED_DESC?: string;
|
|
LANG_KEY?: string;
|
|
LANG_KEY_DESC?: string;
|
|
}
|
|
|
|
export interface MenuState {
|
|
menuList: MenuItem[];
|
|
expandedMenus: Set<string>;
|
|
isLoading: boolean;
|
|
}
|
|
|
|
export interface MenuFormData {
|
|
menuNameKor: string;
|
|
menuNameEng: string;
|
|
menuUrl: string;
|
|
menuDesc: string;
|
|
status: "ACTIVE" | "INACTIVE";
|
|
seq: number;
|
|
parentObjId: string;
|
|
menuType: "admin" | "user";
|
|
}
|
|
|
|
export interface MenuApiResponse {
|
|
success: boolean;
|
|
data?: MenuItem[];
|
|
message?: string;
|
|
errorCode?: string;
|
|
}
|
|
|
|
export interface MenuFormResponse {
|
|
success: boolean;
|
|
message: string;
|
|
errorCode?: string;
|
|
}
|