select
This commit is contained in:
parent
da4e069b59
commit
bba87fe02a
@ -45,7 +45,7 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits(['workTimeUpdated', 'leaveTimeUpdated', 'projectChangeComplete']);
|
const emit = defineEmits(['workTimeUpdated', 'leaveTimeUpdated', 'projectChangeComplete', 'update:pendingProjectChange']);
|
||||||
|
|
||||||
const workTime = ref(null);
|
const workTime = ref(null);
|
||||||
const leaveTime = ref(null)
|
const leaveTime = ref(null)
|
||||||
@ -171,7 +171,6 @@ const setWorkTime = async () => {
|
|||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
todayCommuterInfo();
|
todayCommuterInfo();
|
||||||
|
|
||||||
emit('workTimeUpdated', true);
|
emit('workTimeUpdated', true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -182,7 +181,8 @@ const setLeaveTime = async () => {
|
|||||||
// 현재 위치 주소 가져오기
|
// 현재 위치 주소 가져오기
|
||||||
const address = await getLocation();
|
const address = await getLocation();
|
||||||
|
|
||||||
if (!address) {
|
|
||||||
|
if (!address && !leaveTime.value) {
|
||||||
// 주소를 가져오지 못했을 때도 계속 진행할지 사용자에게 확인
|
// 주소를 가져오지 못했을 때도 계속 진행할지 사용자에게 확인
|
||||||
if (!confirm('위치 정보를 가져오지 못했습니다. 위치 없이 퇴근 처리하시겠습니까?')) {
|
if (!confirm('위치 정보를 가져오지 못했습니다. 위치 없이 퇴근 처리하시겠습니까?')) {
|
||||||
return;
|
return;
|
||||||
@ -198,6 +198,7 @@ const setLeaveTime = async () => {
|
|||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
todayCommuterInfo();
|
todayCommuterInfo();
|
||||||
emit('leaveTimeUpdated');
|
emit('leaveTimeUpdated');
|
||||||
|
emit('update:pendingProjectChange', null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -209,10 +210,6 @@ watch(() => props.userId, async () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
watch(() => props.checkedInProject, () => {
|
|
||||||
// 프로젝트가 변경되면 필요한 처리 수행
|
|
||||||
}, { deep: true });
|
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await todayCommuterInfo();
|
await todayCommuterInfo();
|
||||||
});
|
});
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
:userId="user.id"
|
:userId="user.id"
|
||||||
:checkedInProject="checkedInProject || {}"
|
:checkedInProject="checkedInProject || {}"
|
||||||
:pendingProjectChange="pendingProjectChange"
|
:pendingProjectChange="pendingProjectChange"
|
||||||
|
@update:pendingProjectChange="pendingProjectChange = $event"
|
||||||
@workTimeUpdated="handleWorkTimeUpdate"
|
@workTimeUpdated="handleWorkTimeUpdate"
|
||||||
@leaveTimeUpdated="handleLeaveTimeUpdate"
|
@leaveTimeUpdated="handleLeaveTimeUpdate"
|
||||||
ref="workTimeComponentRef"
|
ref="workTimeComponentRef"
|
||||||
@ -178,8 +179,34 @@ const handleWorkTimeUpdate = () => {
|
|||||||
loadCommuters();
|
loadCommuters();
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleLeaveTimeUpdate = () => {
|
const handleLeaveTimeUpdate = async () => {
|
||||||
todaysCommuter();
|
await todaysCommuter(); // 최신 출근자 목록 다시 로드
|
||||||
|
|
||||||
|
// 현재 사용자의 퇴근 기록이 null인지 확인
|
||||||
|
const currentUserCommuter = commuters.value.find(c => c.MEMBERSEQ === user.value.id);
|
||||||
|
if (currentUserCommuter && !currentUserCommuter.COMMUTLVE) {
|
||||||
|
await projectStore.getMemberProjects();
|
||||||
|
|
||||||
|
if (projectStore.activeMemberProjectList.length > 0) {
|
||||||
|
const previousProject = projectStore.activeMemberProjectList.find(
|
||||||
|
p => commuters.value.some(c => c.MEMBERSEQ === user.value.id && c.PROJCTLVE === p.PROJCTSEQ)
|
||||||
|
) || projectStore.activeMemberProjectList[0]; // 이전 출근 프로젝트가 없으면 첫 번째 프로젝트
|
||||||
|
|
||||||
|
if (previousProject) {
|
||||||
|
selectedProject.value = previousProject.PROJCTSEQ;
|
||||||
|
projectStore.setSelectedProject(previousProject);
|
||||||
|
} else if (projectStore.activeProjectList.length > 0) {
|
||||||
|
selectedProject.value = projectStore.activeProjectList[0].PROJCTSEQ;
|
||||||
|
projectStore.setSelectedProject(projectStore.activeProjectList[0]);
|
||||||
|
} else {
|
||||||
|
selectedProject.value = null;
|
||||||
|
projectStore.setSelectedProject(null);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
selectedProject.value = null;
|
||||||
|
projectStore.setSelectedProject(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 프로젝트 드롭 이벤트 핸들러 (ProjectList 컴포넌트에서 전달받음)
|
// 프로젝트 드롭 이벤트 핸들러 (ProjectList 컴포넌트에서 전달받음)
|
||||||
@ -206,6 +233,11 @@ const handleProjectDrop = ({ event, targetProject }) => {
|
|||||||
? { ...commuter, PROJCTNAM: targetProject.PROJCTNAM, PROJCTLVE: targetProject.PROJCTSEQ }
|
? { ...commuter, PROJCTNAM: targetProject.PROJCTNAM, PROJCTLVE: targetProject.PROJCTSEQ }
|
||||||
: commuter
|
: commuter
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 드롭 후 CommuterBtn 컴포넌트의 상태를 업데이트 (출근/퇴근 버튼 상태 변경)
|
||||||
|
if (workTimeComponentRef.value && workTimeComponentRef.value.fetchWorkTime) {
|
||||||
|
workTimeComponentRef.value.fetchWorkTime();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 오늘 출근 모든 사용자 조회
|
// 오늘 출근 모든 사용자 조회
|
||||||
@ -431,6 +463,9 @@ watch(() => projectStore.selectedProject, (newProject) => {
|
|||||||
if (newProject) {
|
if (newProject) {
|
||||||
selectedProject.value = newProject.PROJCTSEQ;
|
selectedProject.value = newProject.PROJCTSEQ;
|
||||||
checkedInProject.value = newProject;
|
checkedInProject.value = newProject;
|
||||||
|
} else {
|
||||||
|
selectedProject.value = null;
|
||||||
|
checkedInProject.value = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -467,10 +502,11 @@ onMounted(async () => {
|
|||||||
await todaysCommuter();
|
await todaysCommuter();
|
||||||
|
|
||||||
// 저장된 선택 프로젝트 가져오기
|
// 저장된 선택 프로젝트 가져오기
|
||||||
const storedProject = projectStore.getSelectedProject();
|
if (projectStore.activeMemberProjectList.length > 0) {
|
||||||
if (storedProject) {
|
const initialProject = projectStore.getSelectedProject() || projectStore.activeMemberProjectList[0];
|
||||||
selectedProject.value = storedProject.PROJCTSEQ;
|
selectedProject.value = initialProject?.PROJCTSEQ || null;
|
||||||
checkedInProject.value = storedProject;
|
projectStore.setSelectedProject(initialProject);
|
||||||
|
checkedInProject.value = initialProject;
|
||||||
}
|
}
|
||||||
|
|
||||||
datePickerStore.initDatePicker(
|
datePickerStore.initDatePicker(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user