This commit is contained in:
yoon 2025-04-04 19:21:39 +09:00
parent da4e069b59
commit bba87fe02a
2 changed files with 46 additions and 13 deletions

View File

@ -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();
}); });

View File

@ -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(