45 lines
1.1 KiB
Vue
45 lines
1.1 KiB
Vue
<script setup>
|
|
definePageMeta({
|
|
layout: 'admin'
|
|
})
|
|
|
|
const route = useRoute()
|
|
const memberId = computed(() => String(route.params.id || ''))
|
|
|
|
const { data: member, error } = await useFetch(() => `/admin/api/members/${memberId.value}`, {
|
|
default: () => null
|
|
})
|
|
|
|
/**
|
|
* 저장된 회원 정보로 화면 상태를 갱신한다.
|
|
* @param {Object} savedMember - 저장된 회원
|
|
* @returns {void}
|
|
*/
|
|
const handleMemberSaved = (savedMember) => {
|
|
member.value = savedMember
|
|
}
|
|
|
|
/**
|
|
* 회원 삭제 후 목록 화면으로 이동한다.
|
|
* @returns {Promise<void>} 이동 처리
|
|
*/
|
|
const handleMemberDeleted = async () => {
|
|
await navigateTo('/admin/members')
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<AdminMemberForm
|
|
v-if="member"
|
|
:member="member"
|
|
mode="edit"
|
|
@saved="handleMemberSaved"
|
|
@deleted="handleMemberDeleted"
|
|
/>
|
|
<section v-else class="admin-member-detail bg-paper p-6">
|
|
<div class="rounded-xl border border-line bg-white px-5 py-8 text-sm text-muted">
|
|
{{ error?.data?.message || '회원 정보를 불러올 수 없습니다.' }}
|
|
</div>
|
|
</section>
|
|
</template>
|