diff --git a/components/admin/AdminMemberForm.vue b/components/admin/AdminMemberForm.vue index 85a379e..371c6f9 100644 --- a/components/admin/AdminMemberForm.vue +++ b/components/admin/AdminMemberForm.vue @@ -24,7 +24,6 @@ const passwordModalOpen = ref(false) const deleteModalOpen = ref(false) const isUpdatingPassword = ref(false) const isDeletingMember = ref(false) -const isUpdatingRole = ref(false) const actionMessage = ref('') const actionError = ref('') @@ -93,7 +92,10 @@ const currentRoleLabel = computed(() => roleOptions.find((option) => option.valu * 회원 저장 요청 본문을 문자열로 직렬화한다. * @returns {string} 직렬화된 회원 입력값 */ -const serializeMemberPayload = () => JSON.stringify(getMemberPayload()) +const serializeMemberPayload = () => JSON.stringify({ + ...getMemberPayload(), + roleCode: form.roleCode +}) /** * 날짜 표시 형식 변환 @@ -340,40 +342,6 @@ const updateMemberPassword = async () => { } } -/** - * 관리자 권한으로 회원 등급을 변경한다. - * @returns {Promise} - */ -const updateMemberRole = async () => { - if (isNewMember.value || isUpdatingRole.value) { - return - } - - actionMessage.value = '' - actionError.value = '' - isUpdatingRole.value = true - - try { - const updated = await $fetch(`/admin/api/members/${props.member.id}/role`, { - method: 'PUT', - body: { - role: form.roleCode - } - }) - - emit('saved', { - ...props.member, - ...updated - }) - actionMessage.value = '멤버 등급이 변경되었습니다.' - } catch (error) { - form.roleCode = props.member?.roleCode || 'member' - actionError.value = error?.data?.message || '멤버 등급 변경에 실패했습니다.' - } finally { - isUpdatingRole.value = false - } -} - /** * 관리자 권한으로 회원을 삭제한다. * @returns {Promise} @@ -415,6 +383,15 @@ const saveMember = async () => { try { const payload = getMemberPayload() + if (!isNewMember.value && form.roleCode !== props.member?.roleCode) { + await $fetch(`/admin/api/members/${props.member.id}/role`, { + method: 'PUT', + body: { + role: form.roleCode + } + }) + } + const saved = isNewMember.value ? await $fetch('/admin/api/members', { method: 'POST', @@ -584,8 +561,7 @@ watch(() => props.member, () => {