Merge branch '250401_main_park'

This commit is contained in:
nevermoregb 2025-04-01 13:10:41 +09:00
commit 453f1d46f7
2 changed files with 74 additions and 49 deletions

View File

@ -17,7 +17,7 @@
<!-- 입력 화면 --> <!-- 입력 화면 -->
<div v-else class="p-2" style="min-width: 200px"> <div v-else class="p-2" style="min-width: 200px">
<div class="d-flex justify-content-between align-items-center mb-2"> <div class="d-flex justify-content-between align-items-center mb-2">
<small class="text-muted">{{ getEventTitle(selectedEventType) }}</small> <small>{{ getEventTitle(selectedEventType) }}</small>
<button class="btn-close btn-close-sm" style="font-size: 8px" @click="resetForm"></button> <button class="btn-close btn-close-sm" style="font-size: 8px" @click="resetForm"></button>
</div> </div>
<div class="mb-2"> <div class="mb-2">
@ -79,7 +79,9 @@
]; ];
const getEventTitle = type => { const getEventTitle = type => {
return eventTypes.find(event => event.type === type)?.title || ''; console.log('type: ', type);
console.log('event.type: ', eventTypes);
return eventTypes.find(event => event.code === type)?.title || '';
}; };
const isEventExists = type => { const isEventExists = type => {

View File

@ -1,19 +1,19 @@
<template> <template>
<div class="row g-4 mt-2"> <div class="row g-4 mt-2" v-if="memberList?.length">
<!-- lg 이상에서는 2, 이하에서는 1개씩 --> <div>
<div v-for="member in memberList" :key="member.MEMBERSEQ">
<div class="card"> <div class="card">
<div class="card-body p-3"> <div class="card-body p-3 row">
<div class="d-flex justify-content-between mb-2"> <div class="d-flex justify-content-between mb-2">
<h5 class="card-title fw-bold">사원 등록 관리</h5> <h5 class="card-title fw-bold">사원 등록 관리</h5>
</div> </div>
<div class="g-2 card col-12 col-lg-6"> <div class="g-4 col-12 col-lg-6" v-for="member in memberList" :key="member.MEMBERSEQ">
<div class="card">
<div class="row card-body"> <div class="row card-body">
<div class="col-2"> <div class="col-3 d-flex align-items-center">
<img <img
:src="`upload/img/profile/`" :src="`${imgURL}profile/${member.MEMBERPRF}`"
alt="Profile Image" alt="Profile Image"
class="img-fluid" class="img-fluid mx-auto d-block"
@error="$event.target.src = '/img/icons/icon.png'" @error="$event.target.src = '/img/icons/icon.png'"
/> />
</div> </div>
@ -36,14 +36,23 @@
<div class="ms-2">{{ $common.dateFormatter(member.MEMBERRDT) }}</div> <div class="ms-2">{{ $common.dateFormatter(member.MEMBERRDT) }}</div>
</div> </div>
</div> </div>
<div class="col-3"> <div class="col-2 d-flex align-items-center">
<div class="align-items-center"> <div>
<div>
<label class="switch" <label class="switch"
><input type="checkbox" :checked="checked" @change="handleRegisterMember($event)" /><span ><input
class="slider round" type="checkbox"
></span :checked="checked"
@change="handleRegisterMember(member.MEMBERSEQ)" /><span class="slider round"></span
></label> ></label>
</div> </div>
<button
class="btn-close btn-close-sm"
style="position: absolute; top: 10px; right: 10px"
@click="handleRejectMember(member.MEMBERSEQ)"
></button>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -54,28 +63,42 @@
</template> </template>
<script setup> <script setup>
import { inject, onMounted, ref } from 'vue'; import { onMounted, ref } from 'vue';
import { useToastStore } from '@s/toastStore';
import $api from '@api'; import $api from '@api';
const memberList = ref([]); const memberList = ref([]);
const checked = ref(false); const checked = ref(false);
const toast = useToastStore();
const imgURL = import.meta.env.VITE_SERVER_IMG_URL;
// api
const fetchRegisterMemberList = async () => { const fetchRegisterMemberList = async () => {
const { data } = await $api.get('main/registerMemberList'); const { data } = await $api.get('main/registerMemberList');
if (data?.data) memberList.value = data.data; if (data?.data) memberList.value = data.data;
}; };
const handleRegisterMember = async e => { // api
console.log(e); const handleRegisterMember = async memberSeq => {
const { data } = await $api.post('main/registerMember', { memberSeq: memberSeq });
if (data?.data) {
toast.onToast(data.data, 's');
fetchRegisterMemberList();
}
};
// api
const handleRejectMember = async memberSeq => {
if (!confirm('해당 사원 등록을 거절하시겠습니까?')) return;
const { data } = await $api.post('main/rejectMember', { memberSeq: memberSeq });
if (data?.data) {
toast.onToast(data.data, 's');
fetchRegisterMemberList();
}
}; };
onMounted(async () => { onMounted(async () => {
await fetchRegisterMemberList(); await fetchRegisterMemberList();
}); });
</script> </script>
<style scoped>
.card {
font-size: 0.9rem;
}
</style>