feat: [employee] 사원관리 정렬 옵션에 퇴직일자 추가 및 기본 정렬을 입사일 빠른순으로 변경
- 기본 정렬: 직급순 → 입사일 빠른순(hireDateAsc) - 퇴직일자 최신순/빠른순 정렬 옵션 추가 - 정렬 옵션 순서 재배치 (입사일/퇴직일 우선)
This commit is contained in:
@@ -39,7 +39,7 @@ import { isNextRedirectError } from '@/lib/utils/redirect-error';
|
||||
type FilterOption = 'all' | 'hasUserId' | 'noUserId' | 'active' | 'leave' | 'resigned';
|
||||
|
||||
// 정렬 옵션 타입
|
||||
type SortOption = 'rank' | 'hireDateDesc' | 'hireDateAsc' | 'departmentAsc' | 'departmentDesc' | 'nameAsc' | 'nameDesc';
|
||||
type SortOption = 'rank' | 'hireDateAsc' | 'hireDateDesc' | 'resignDateAsc' | 'resignDateDesc' | 'departmentAsc' | 'departmentDesc' | 'nameAsc' | 'nameDesc';
|
||||
|
||||
// 필터 옵션 레이블
|
||||
const FILTER_OPTIONS: { value: FilterOption; label: string }[] = [
|
||||
@@ -53,9 +53,11 @@ const FILTER_OPTIONS: { value: FilterOption; label: string }[] = [
|
||||
|
||||
// 정렬 옵션 레이블
|
||||
const SORT_OPTIONS: { value: SortOption; label: string }[] = [
|
||||
{ value: 'rank', label: '직급순' },
|
||||
{ value: 'hireDateAsc', label: '입사일 빠른순' },
|
||||
{ value: 'hireDateDesc', label: '입사일 최신순' },
|
||||
{ value: 'hireDateAsc', label: '입사일 등록순' },
|
||||
{ value: 'resignDateDesc', label: '퇴직일 최신순' },
|
||||
{ value: 'resignDateAsc', label: '퇴직일 빠른순' },
|
||||
{ value: 'rank', label: '직급순' },
|
||||
{ value: 'departmentAsc', label: '부서 오름차순' },
|
||||
{ value: 'departmentDesc', label: '부서 내림차순' },
|
||||
{ value: 'nameAsc', label: '이름 오름차순' },
|
||||
@@ -83,7 +85,7 @@ export function EmployeeManagement() {
|
||||
|
||||
// 필터 및 정렬 상태
|
||||
const [filterOption, setFilterOption] = useState<FilterOption>('all');
|
||||
const [sortOption, setSortOption] = useState<SortOption>('rank');
|
||||
const [sortOption, setSortOption] = useState<SortOption>('hireDateAsc');
|
||||
|
||||
// 다이얼로그 상태
|
||||
const [fieldSettingsOpen, setFieldSettingsOpen] = useState(false);
|
||||
@@ -166,10 +168,14 @@ export function EmployeeManagement() {
|
||||
// 직급 순서 정의 (높은 직급이 먼저)
|
||||
const rankOrder: Record<string, number> = { '회장': 1, '사장': 2, '부사장': 3, '전무': 4, '상무': 5, '이사': 6, '부장': 7, '차장': 8, '과장': 9, '대리': 10, '주임': 11, '사원': 12 };
|
||||
return (rankOrder[a.rank || ''] || 99) - (rankOrder[b.rank || ''] || 99);
|
||||
case 'hireDateDesc':
|
||||
return new Date(b.hireDate || 0).getTime() - new Date(a.hireDate || 0).getTime();
|
||||
case 'hireDateAsc':
|
||||
return new Date(a.hireDate || 0).getTime() - new Date(b.hireDate || 0).getTime();
|
||||
case 'hireDateDesc':
|
||||
return new Date(b.hireDate || 0).getTime() - new Date(a.hireDate || 0).getTime();
|
||||
case 'resignDateAsc':
|
||||
return new Date(a.resignationDate || 0).getTime() - new Date(b.resignationDate || 0).getTime();
|
||||
case 'resignDateDesc':
|
||||
return new Date(b.resignationDate || 0).getTime() - new Date(a.resignationDate || 0).getTime();
|
||||
case 'departmentAsc':
|
||||
const deptA = a.departmentPositions?.[0]?.departmentName || '';
|
||||
const deptB = b.departmentPositions?.[0]?.departmentName || '';
|
||||
|
||||
Reference in New Issue
Block a user