feat(WEB): 근태 설정 및 관리 시스템 개선
- AttendanceSettingsManagement: 근무시간/휴식시간 설정 API 연동 - AttendanceManagement: 출퇴근 기록 조회/수정 기능 강화 - 근태 상태 필터링 및 검색 기능 개선 - 근태 actions 공통 로직 정리
This commit is contained in:
@@ -48,6 +48,7 @@ export default function MobileAttendancePage() {
|
||||
const [viewMode, setViewMode] = useState<ViewMode>('main');
|
||||
const [checkInTime, setCheckInTime] = useState<string>('');
|
||||
const [checkOutTime, setCheckOutTime] = useState<string>('');
|
||||
const [userId, setUserId] = useState<number | null>(null);
|
||||
const [userName, setUserName] = useState(TEST_USER.name);
|
||||
const [userDepartment, setUserDepartment] = useState(TEST_USER.department);
|
||||
const [userPosition, setUserPosition] = useState(TEST_USER.position);
|
||||
@@ -59,13 +60,13 @@ export default function MobileAttendancePage() {
|
||||
setMounted(true);
|
||||
}, []);
|
||||
|
||||
// 오늘의 근태 상태 조회
|
||||
// 오늘의 근태 상태 조회 (userId가 설정된 후에 조회)
|
||||
useEffect(() => {
|
||||
if (!mounted) return;
|
||||
if (!mounted || userId === null) return;
|
||||
|
||||
const fetchTodayAttendance = async () => {
|
||||
try {
|
||||
const result = await getTodayAttendance();
|
||||
const result = await getTodayAttendance(userId);
|
||||
if (result.success && result.data) {
|
||||
// 이미 출근한 경우
|
||||
if (result.data.checkIn) {
|
||||
@@ -82,7 +83,7 @@ export default function MobileAttendancePage() {
|
||||
};
|
||||
|
||||
fetchTodayAttendance();
|
||||
}, [mounted]);
|
||||
}, [mounted, userId]);
|
||||
|
||||
// 현재 시간 업데이트 (마운트 후에만 실행)
|
||||
useEffect(() => {
|
||||
@@ -117,6 +118,7 @@ export default function MobileAttendancePage() {
|
||||
if (userDataStr) {
|
||||
try {
|
||||
const userData = JSON.parse(userDataStr);
|
||||
if (userData.id) setUserId(userData.id);
|
||||
if (userData.name) setUserName(userData.name);
|
||||
if (userData.department) setUserDepartment(userData.department);
|
||||
if (userData.position) setUserPosition(userData.position);
|
||||
@@ -263,7 +265,9 @@ export default function MobileAttendancePage() {
|
||||
}
|
||||
|
||||
// 버튼 활성화 상태
|
||||
const canCheckIn = isInRange && attendanceStatus === 'not-checked-in' && !isProcessing;
|
||||
// - 출근: 아직 출근 안 했거나, 퇴근한 경우 (다시 출근 가능)
|
||||
// - 퇴근: 출근한 경우에만 가능
|
||||
const canCheckIn = isInRange && attendanceStatus !== 'checked-in' && !isProcessing;
|
||||
const canCheckOut = isInRange && attendanceStatus === 'checked-in' && !isProcessing;
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user