퇴근지 추가

This commit is contained in:
yoon 2025-03-27 18:12:11 +09:00
parent 8dcb69bcb6
commit dd268c0df6
3 changed files with 53 additions and 25 deletions

View File

@ -13,11 +13,13 @@
<div class="col-6 ps-1">
<button
class="btn btn-outline-secondary border-3 w-100 py-0 h-px-50"
class="btn border-3 w-100 py-0 h-px-50"
:class="!workTime ? 'btn-outline-secondary pe-none disabled' : 'btn-outline-secondary'"
@click="setLeaveTime"
:disabled="!workTime"
>
<i v-if="!leaveTime" class='bx bxs-door-open fs-2'></i>
<span v-if="leaveTime" class="ql-size-12px">{{ leaveTime }}</span>
<i v-if="!leaveTime" class='bx bxs-door-open fs-2'></i>
<span v-if="leaveTime" class="ql-size-12px">{{ leaveTime }}</span>
</button>
</div>
</div>
@ -36,10 +38,14 @@ const props = defineProps({
checkedInProject: {
type: Object,
required: false
},
pendingProjectChange: {
type: Object,
default: null
}
});
const emit = defineEmits(['workTimeUpdated', 'leaveTimeUpdated']);
const emit = defineEmits(['workTimeUpdated', 'leaveTimeUpdated', 'projectChangeComplete']);
const workTime = ref(null);
const leaveTime = ref(null)
@ -128,7 +134,7 @@ const setWorkTime = async () => {
$api.post('commuters/insert', {
memberSeq: props.userId,
projctSeq: props.checkedInProject.PROJCTSEQ,
commutLvt: null,
commutLve: null,
commutArr: address,
}).then(res => {
if (res.status === 200) {
@ -144,11 +150,11 @@ const setLeaveTime = () => {
$api.patch('commuters/updateLve', {
memberSeq: props.userId,
commutLve: leaveTime.value || null,
projctLve: props.pendingProjectChange ? props.pendingProjectChange.projctSeq : props.checkedInProject.PROJCTSEQ
}).then(res => {
if (res.status === 200) {
todayCommuterInfo();
//
emit('leaveTimeUpdated', true);
emit('leaveTimeUpdated');
}
});
};

View File

@ -12,6 +12,7 @@
<CommuterBtn
:userId="user.id"
:checkedInProject="checkedInProject || {}"
:pendingProjectChange="pendingProjectChange"
@workTimeUpdated="handleWorkTimeUpdate"
@leaveTimeUpdated="handleLeaveTimeUpdate"
ref="workTimeComponentRef"
@ -116,6 +117,9 @@ const monthlyCommuters = ref([]);
const calendarDatepicker = ref(null);
const pendingProjectChange = ref(null);
//
const handleWorkTimeUpdate = () => {
todaysCommuter();
@ -126,32 +130,41 @@ const handleLeaveTimeUpdate = () => {
todaysCommuter();
};
const handleResetProjectState = () => {
//
const storedProject = projectStore.getSelectedProject();
if (storedProject) {
checkedInProject.value = storedProject;
selectedProject.value = storedProject.PROJCTSEQ;
projectStore.setSelectedProject(storedProject);
pendingProjectChange.value = null;
}
};
// (ProjectList )
const handleProjectDrop = ({ event, targetProject }) => {
//
const draggedProjectData = JSON.parse(event.dataTransfer.getData('application/json'));
//
//
if (draggedProjectData.PROJCTSEQ === targetProject.PROJCTSEQ) {
return;
}
//
pendingProjectChange.value = {
projctSeq: targetProject.PROJCTSEQ,
memberSeq: user.value.id
};
checkedInProject.value = targetProject;
selectedProject.value = targetProject.PROJCTSEQ;
projectStore.setSelectedProject(targetProject);
// select
selectedProject.value = targetProject.PROJCTSEQ;
$api.patch('commuters/update', {
projctSeq: targetProject.PROJCTSEQ,
memberSeq: user.value.id,
}).then(res => {
if (res.status === 200) {
todaysCommuter();
loadCommuters();
}
});
// UI
commuters.value = commuters.value.map(commuter =>
commuter.MEMBERSEQ === user.value.id
? { ...commuter, PROJCTNAM: targetProject.PROJCTNAM, PROJCTLVE: targetProject.PROJCTSEQ }
: commuter
);
};
//

View File

@ -13,8 +13,10 @@
</p>
<div class="row gx-2">
<div
v-for="commuter in commuters.filter(c => c.PROJCTNAM === post.PROJCTNAM)"
:key="commuter.COMMUTCMT"
v-for="commuter in commuters.filter(c =>
(c.PROJCTLVE ? c.PROJCTLVE === post.PROJCTSEQ : c.PROJCTNAM === post.PROJCTNAM)
)"
:key="commuter.MEMBERSEQ"
class="col-4"
>
<div class="ratio ratio-1x1">
@ -77,7 +79,14 @@ const sortedProjects = computed(() => {
});
//
const isCurrentUser = (commuter) => {
return props.user && commuter && commuter.MEMBERSEQ === props.user.id;
//
const isCurrentUserCheck = props.user && commuter && commuter.MEMBERSEQ === props.user.id;
//
const hasNoCheckRecord = !commuter.COMMUTLVE;
// true
return isCurrentUserCheck && hasNoCheckRecord;
};
//