diff --git a/pages/admin/members/index.vue b/pages/admin/members/index.vue index 8888dbe..d22ce2d 100644 --- a/pages/admin/members/index.vue +++ b/pages/admin/members/index.vue @@ -467,11 +467,14 @@ const loadMembers = async () => { loading.value = true; try { // Fetch members from API - const { data } = await $fetch('/api/members'); + const response = await $fetch('/api/members'); - if (data?.members) { + // Check for both possible response structures + const membersList = response?.data?.list || response?.data?.members || response?.list || []; + + if (membersList && membersList.length > 0) { // Transform the data to match our interface - members.value = data.members.map((member: any) => ({ + members.value = membersList.map((member: any) => ({ member_id: member.Id || member.id, first_name: member.first_name, last_name: member.last_name, @@ -513,10 +516,26 @@ const loadMembers = async () => { }).length, renewalDue: members.value.filter(m => m.dues_status === 'Due' || m.dues_status === 'Overdue').length }; + } else { + console.log('No members found in response:', response); + members.value = []; + stats.value = { + total: 0, + active: 0, + newThisMonth: 0, + renewalDue: 0 + }; } } catch (error) { console.error('Error loading members:', error); // Keep empty array if load fails + members.value = []; + stats.value = { + total: 0, + active: 0, + newThisMonth: 0, + renewalDue: 0 + } } finally { loading.value = false; } diff --git a/pages/board/members/index.vue b/pages/board/members/index.vue index aa443f8..23ca4e0 100644 --- a/pages/board/members/index.vue +++ b/pages/board/members/index.vue @@ -530,11 +530,14 @@ const loadMembers = async () => { loading.value = true; try { // Fetch members from API - const { data } = await $fetch('/api/members'); + const response = await $fetch('/api/members'); - if (data?.members) { + // Check for both possible response structures + const membersList = response?.data?.list || response?.data?.members || response?.list || []; + + if (membersList && membersList.length > 0) { // Transform the data to match our interface - members.value = data.members.map((member: any) => ({ + members.value = membersList.map((member: any) => ({ id: member.Id || member.id, memberId: member.member_id || `MUSA-${String(member.Id).padStart(4, '0')}`, firstName: member.first_name, @@ -566,10 +569,14 @@ const loadMembers = async () => { }); console.log(`[board-members] Loaded ${members.value.length} members from API, sorted by last name`); + } else { + console.log('[board-members] No members found in response:', response); + members.value = []; } } catch (error) { console.error('Error loading members:', error); // Keep empty array if load fails + members.value = [] } finally { loading.value = false; }