Files
invyone/frontend/types/user.ts
T

83 lines
2.5 KiB
TypeScript

/**
* 사용자 관리 관련 타입 정의
*/
// 사용자 정보 인터페이스 (백엔드 API 응답과 일치하는 snake_case)
export interface User {
sabun?: string; // 사번
user_id: string; // 사용자 ID
user_name: string; // 사용자명
user_name_eng?: string; // 영문명
user_name_cn?: string; // 중문명
company_code?: string; // 회사 코드
company_name?: string; // 회사명
dept_code?: string; // 부서 코드
dept_name?: string; // 부서명
position_code?: string; // 직책 코드
position_name?: string; // 직책
email?: string; // 이메일
tel?: string; // 전화번호
cell_phone?: string; // 휴대폰
user_type?: string; // 사용자 유형 코드
user_type_name?: string; // 사용자 유형명
reg_date?: string; // 등록일 (YYYY-MM-DD)
status: string; // 상태 (active, inactive)
data_type?: string; // 데이터 타입
end_date?: string; // 퇴사일
locale?: string; // 로케일
rnum?: number; // 행 번호
}
// 사용자 검색 필터
export interface UserSearchFilter {
// 통합 검색 (우선순위: 가장 높음)
search_value?: string; // 통합 검색어 (모든 필드 대상)
// 단일 필드 검색 (중간 우선순위)
search_type?: "all" | "sabun" | "company_code" | "dept_name" | "position_name" | "user_id" | "user_name" | "tel" | "email"; // 검색 대상 (하위 호환성)
// 고급 검색 (개별 필드별 AND 조건)
search_sabun?: string; // 사번 검색
search_company_name?: string; // 회사명 검색
search_dept_name?: string; // 부서명 검색
search_position_name?: string; // 직책 검색
search_user_id?: string; // 사용자 ID 검색
search_user_name?: string; // 사용자명 검색
search_tel?: string; // 전화번호 검색 (TEL + CELL_PHONE)
search_email?: string; // 이메일 검색
}
// 사용자 목록 테이블 컬럼 정의
export interface UserTableColumn {
key: string;
label: string;
sortable?: boolean;
width?: string;
}
// 사용자 등록/수정 폼 데이터
export interface UserFormData {
user_id: string;
user_name: string;
dept_code: string;
dept_name: string;
position_name: string;
email: string;
tel: string;
cell_phone: string;
user_type_name: string;
status: string;
}
// 사용자 상태 상수
export const USER_STATUS = {
ACTIVE: "active",
INACTIVE: "inactive",
} as const;
// 사용자 상태 라벨
export const USER_STATUS_LABELS = {
[USER_STATUS.ACTIVE]: "활성",
[USER_STATUS.INACTIVE]: "비활성",
} as const;