fixes
Build And Push Image / docker (push) Successful in 1m29s
Details
Build And Push Image / docker (push) Successful in 1m29s
Details
This commit is contained in:
parent
b059d81c21
commit
4adbb0465a
|
|
@ -231,7 +231,7 @@ const openUserManagement = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const navigateToProfile = () => {
|
const navigateToProfile = () => {
|
||||||
navigateTo('/dashboard/user');
|
navigateTo('/dashboard/profile');
|
||||||
};
|
};
|
||||||
|
|
||||||
const navigateToSettings = () => {
|
const navigateToSettings = () => {
|
||||||
|
|
|
||||||
|
|
@ -12,32 +12,34 @@
|
||||||
<p class="text-h6 text-medium-emphasis">
|
<p class="text-h6 text-medium-emphasis">
|
||||||
MonacoUSA Board Portal
|
MonacoUSA Board Portal
|
||||||
</p>
|
</p>
|
||||||
<v-chip color="primary" variant="elevated" class="mt-2">
|
<div class="text-center">
|
||||||
<v-icon start>mdi-shield-account</v-icon>
|
<v-chip color="primary" variant="elevated" class="mt-2">
|
||||||
Board Member
|
<v-icon start>mdi-shield-account</v-icon>
|
||||||
</v-chip>
|
Board Member
|
||||||
|
</v-chip>
|
||||||
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<!-- Board Tools -->
|
<!-- Board Tools -->
|
||||||
<v-row class="mb-6">
|
<v-row class="mb-6">
|
||||||
<v-col cols="12" md="3">
|
<v-col cols="12" md="6">
|
||||||
<v-card class="pa-4 text-center" elevation="2" hover>
|
<v-card class="pa-4 text-center" elevation="2" hover>
|
||||||
<v-icon size="48" color="primary" class="mb-2">mdi-calendar-clock</v-icon>
|
<v-icon size="48" color="primary" class="mb-2">mdi-calendar</v-icon>
|
||||||
<h3 class="mb-2">Meetings</h3>
|
<h3 class="mb-2">Events</h3>
|
||||||
<p class="text-body-2 mb-4">Schedule and manage board meetings</p>
|
<p class="text-body-2 mb-4">View and manage association events</p>
|
||||||
<v-btn
|
<v-btn
|
||||||
color="primary"
|
color="primary"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
style="border-color: #a31515; color: #a31515;"
|
style="border-color: #a31515; color: #a31515;"
|
||||||
@click="navigateToMeetings"
|
@click="navigateToEvents"
|
||||||
>
|
>
|
||||||
Manage Meetings
|
View Events
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-col cols="12" md="3">
|
<v-col cols="12" md="6">
|
||||||
<v-card class="pa-4 text-center" elevation="2" hover>
|
<v-card class="pa-4 text-center" elevation="2" hover>
|
||||||
<v-icon size="48" color="primary" class="mb-2">mdi-account-group</v-icon>
|
<v-icon size="48" color="primary" class="mb-2">mdi-account-group</v-icon>
|
||||||
<h3 class="mb-2">Members</h3>
|
<h3 class="mb-2">Members</h3>
|
||||||
|
|
@ -52,38 +54,6 @@
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-col cols="12" md="3">
|
|
||||||
<v-card class="pa-4 text-center" elevation="2" hover>
|
|
||||||
<v-icon size="48" color="primary" class="mb-2">mdi-chart-line</v-icon>
|
|
||||||
<h3 class="mb-2">Reports</h3>
|
|
||||||
<p class="text-body-2 mb-4">Financial and activity reports</p>
|
|
||||||
<v-btn
|
|
||||||
color="primary"
|
|
||||||
variant="outlined"
|
|
||||||
style="border-color: #a31515; color: #a31515;"
|
|
||||||
@click="navigateToReports"
|
|
||||||
>
|
|
||||||
View Reports
|
|
||||||
</v-btn>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
|
|
||||||
<v-col cols="12" md="3">
|
|
||||||
<v-card class="pa-4 text-center" elevation="2" hover>
|
|
||||||
<v-icon size="48" color="primary" class="mb-2">mdi-tools</v-icon>
|
|
||||||
<h3 class="mb-2">Tools</h3>
|
|
||||||
<p class="text-body-2 mb-4">Board management tools</p>
|
|
||||||
<v-btn
|
|
||||||
color="primary"
|
|
||||||
variant="outlined"
|
|
||||||
style="border-color: #a31515; color: #a31515;"
|
|
||||||
@click="navigateToTools"
|
|
||||||
>
|
|
||||||
Access Tools
|
|
||||||
</v-btn>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<!-- Board Statistics -->
|
<!-- Board Statistics -->
|
||||||
|
|
@ -104,13 +74,9 @@
|
||||||
<div class="text-h4 font-weight-bold" style="color: #a31515;">{{ stats.activeMembers }}</div>
|
<div class="text-h4 font-weight-bold" style="color: #a31515;">{{ stats.activeMembers }}</div>
|
||||||
<div class="text-body-2">Active Members</div>
|
<div class="text-body-2">Active Members</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="6" md="3" class="text-center">
|
<v-col cols="6" md="6" class="text-center">
|
||||||
<div class="text-h4 font-weight-bold" style="color: #a31515;">{{ stats.upcomingMeetings }}</div>
|
<div class="text-h4 font-weight-bold" style="color: #a31515;">{{ stats.upcomingEvents }}</div>
|
||||||
<div class="text-body-2">Upcoming Meetings</div>
|
<div class="text-body-2">Upcoming Events</div>
|
||||||
</v-col>
|
|
||||||
<v-col cols="6" md="3" class="text-center">
|
|
||||||
<div class="text-h4 font-weight-bold" style="color: #a31515;">{{ stats.pendingActions }}</div>
|
|
||||||
<div class="text-body-2">Pending Actions</div>
|
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
|
@ -121,24 +87,24 @@
|
||||||
<v-card elevation="2">
|
<v-card elevation="2">
|
||||||
<v-card-title class="pa-4" style="background-color: #f5f5f5;">
|
<v-card-title class="pa-4" style="background-color: #f5f5f5;">
|
||||||
<v-icon class="mr-2" color="primary">mdi-calendar-today</v-icon>
|
<v-icon class="mr-2" color="primary">mdi-calendar-today</v-icon>
|
||||||
Next Meeting
|
Next Event
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<v-card-text class="pa-4">
|
<v-card-text class="pa-4">
|
||||||
<div class="text-h6 mb-2">Board Meeting</div>
|
<div class="text-h6 mb-2">{{ nextEvent.title }}</div>
|
||||||
<div class="text-body-2 mb-2">
|
<div class="text-body-2 mb-2">
|
||||||
<v-icon size="small" class="mr-1">mdi-calendar</v-icon>
|
<v-icon size="small" class="mr-1">mdi-calendar</v-icon>
|
||||||
{{ nextMeeting.date }}
|
{{ nextEvent.date }}
|
||||||
</div>
|
</div>
|
||||||
<div class="text-body-2 mb-4">
|
<div class="text-body-2 mb-4">
|
||||||
<v-icon size="small" class="mr-1">mdi-clock</v-icon>
|
<v-icon size="small" class="mr-1">mdi-clock</v-icon>
|
||||||
{{ nextMeeting.time }}
|
{{ nextEvent.time }}
|
||||||
</div>
|
</div>
|
||||||
<v-btn
|
<v-btn
|
||||||
color="primary"
|
color="primary"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
size="small"
|
size="small"
|
||||||
style="border-color: #a31515; color: #a31515;"
|
style="border-color: #a31515; color: #a31515;"
|
||||||
@click="viewMeetingDetails"
|
@click="viewEventDetails"
|
||||||
>
|
>
|
||||||
View Details
|
View Details
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
|
@ -159,82 +125,6 @@
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
<!-- Recent Board Activity -->
|
|
||||||
<v-row class="mb-6">
|
|
||||||
<v-col cols="12">
|
|
||||||
<v-card elevation="2">
|
|
||||||
<v-card-title class="pa-4" style="background-color: #f5f5f5;">
|
|
||||||
<v-icon class="mr-2" color="primary">mdi-history</v-icon>
|
|
||||||
Recent Board Activity
|
|
||||||
</v-card-title>
|
|
||||||
<v-card-text class="pa-4">
|
|
||||||
<v-list>
|
|
||||||
<v-list-item v-for="activity in recentActivity" :key="activity.id">
|
|
||||||
<v-list-item-content>
|
|
||||||
<v-list-item-title>{{ activity.title }}</v-list-item-title>
|
|
||||||
<v-list-item-subtitle>{{ activity.description }}</v-list-item-subtitle>
|
|
||||||
</v-list-item-content>
|
|
||||||
<v-list-item-action>
|
|
||||||
<v-chip :color="activity.type" size="small">{{ activity.status }}</v-chip>
|
|
||||||
</v-list-item-action>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
|
|
||||||
<!-- Quick Actions -->
|
|
||||||
<v-row>
|
|
||||||
<v-col cols="12">
|
|
||||||
<v-card elevation="2">
|
|
||||||
<v-card-title class="pa-4" style="background-color: #f5f5f5;">
|
|
||||||
<v-icon class="mr-2" color="primary">mdi-lightning-bolt</v-icon>
|
|
||||||
Quick Actions
|
|
||||||
</v-card-title>
|
|
||||||
<v-card-text class="pa-4">
|
|
||||||
<v-row>
|
|
||||||
<v-col cols="12" md="4">
|
|
||||||
<v-btn
|
|
||||||
color="primary"
|
|
||||||
variant="outlined"
|
|
||||||
block
|
|
||||||
style="border-color: #a31515; color: #a31515;"
|
|
||||||
@click="scheduleNewMeeting"
|
|
||||||
>
|
|
||||||
<v-icon start>mdi-plus</v-icon>
|
|
||||||
Schedule New Meeting
|
|
||||||
</v-btn>
|
|
||||||
</v-col>
|
|
||||||
<v-col cols="12" md="4">
|
|
||||||
<v-btn
|
|
||||||
color="primary"
|
|
||||||
variant="outlined"
|
|
||||||
block
|
|
||||||
style="border-color: #a31515; color: #a31515;"
|
|
||||||
@click="createAnnouncement"
|
|
||||||
>
|
|
||||||
<v-icon start>mdi-bullhorn</v-icon>
|
|
||||||
Create Announcement
|
|
||||||
</v-btn>
|
|
||||||
</v-col>
|
|
||||||
<v-col cols="12" md="4">
|
|
||||||
<v-btn
|
|
||||||
color="primary"
|
|
||||||
variant="outlined"
|
|
||||||
block
|
|
||||||
style="border-color: #a31515; color: #a31515;"
|
|
||||||
@click="generateReport"
|
|
||||||
>
|
|
||||||
<v-icon start>mdi-file-chart</v-icon>
|
|
||||||
Generate Report
|
|
||||||
</v-btn>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
|
|
||||||
<!-- View Member Dialog -->
|
<!-- View Member Dialog -->
|
||||||
<ViewMemberDialog
|
<ViewMemberDialog
|
||||||
|
|
@ -284,17 +174,16 @@ const selectedMember = ref<Member | null>(null);
|
||||||
const stats = ref({
|
const stats = ref({
|
||||||
totalMembers: 0,
|
totalMembers: 0,
|
||||||
activeMembers: 0,
|
activeMembers: 0,
|
||||||
upcomingMeetings: 0,
|
upcomingEvents: 0
|
||||||
pendingActions: 0
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const nextMeeting = ref({
|
const nextEvent = ref({
|
||||||
id: null,
|
id: null,
|
||||||
title: 'Board Meeting',
|
title: 'Next Event',
|
||||||
date: 'Loading...',
|
date: 'Loading...',
|
||||||
time: 'Loading...',
|
time: 'Loading...',
|
||||||
location: 'TBD',
|
location: 'TBD',
|
||||||
description: 'Monthly board meeting'
|
description: 'Upcoming association event'
|
||||||
});
|
});
|
||||||
|
|
||||||
const isLoading = ref(true);
|
const isLoading = ref(true);
|
||||||
|
|
@ -321,8 +210,7 @@ const loadBoardData = async () => {
|
||||||
stats.value = {
|
stats.value = {
|
||||||
totalMembers: statsData.data.totalMembers || 0,
|
totalMembers: statsData.data.totalMembers || 0,
|
||||||
activeMembers: statsData.data.activeMembers || 0,
|
activeMembers: statsData.data.activeMembers || 0,
|
||||||
upcomingMeetings: statsData.data.upcomingMeetings || 0,
|
upcomingEvents: statsData.data.upcomingEvents || 0
|
||||||
pendingActions: statsData.data.pendingActions || 0
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -331,13 +219,13 @@ const loadBoardData = async () => {
|
||||||
if (meetingResponse.status === 'fulfilled') {
|
if (meetingResponse.status === 'fulfilled') {
|
||||||
const meetingData = meetingResponse.value as any;
|
const meetingData = meetingResponse.value as any;
|
||||||
if (meetingData?.success) {
|
if (meetingData?.success) {
|
||||||
nextMeeting.value = {
|
nextEvent.value = {
|
||||||
id: meetingData.data.id,
|
id: meetingData.data.id,
|
||||||
title: meetingData.data.title || 'Board Meeting',
|
title: meetingData.data.title || 'Next Event',
|
||||||
date: meetingData.data.date || 'TBD',
|
date: meetingData.data.date || 'TBD',
|
||||||
time: meetingData.data.time || 'TBD',
|
time: meetingData.data.time || 'TBD',
|
||||||
location: meetingData.data.location || 'TBD',
|
location: meetingData.data.location || 'TBD',
|
||||||
description: meetingData.data.description || 'Monthly board meeting'
|
description: meetingData.data.description || 'Upcoming association event'
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -401,9 +289,10 @@ const handleMemberUpdated = (member: Member) => {
|
||||||
// stats.value = await fetchUpdatedStats();
|
// stats.value = await fetchUpdatedStats();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Navigation methods (placeholder implementations)
|
// Navigation methods
|
||||||
const navigateToMeetings = () => {
|
const navigateToEvents = () => {
|
||||||
console.log('Navigate to meetings');
|
// Navigate to events page
|
||||||
|
navigateTo('/dashboard/events');
|
||||||
};
|
};
|
||||||
|
|
||||||
const navigateToMembers = () => {
|
const navigateToMembers = () => {
|
||||||
|
|
@ -411,16 +300,8 @@ const navigateToMembers = () => {
|
||||||
navigateTo('/dashboard/member-list');
|
navigateTo('/dashboard/member-list');
|
||||||
};
|
};
|
||||||
|
|
||||||
const navigateToReports = () => {
|
const viewEventDetails = () => {
|
||||||
console.log('Navigate to reports');
|
console.log('View event details');
|
||||||
};
|
|
||||||
|
|
||||||
const navigateToTools = () => {
|
|
||||||
console.log('Navigate to tools');
|
|
||||||
};
|
|
||||||
|
|
||||||
const viewMeetingDetails = () => {
|
|
||||||
console.log('View meeting details');
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const scheduleNewMeeting = () => {
|
const scheduleNewMeeting = () => {
|
||||||
|
|
|
||||||
|
|
@ -341,6 +341,33 @@
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
|
<!-- Contact Support -->
|
||||||
|
<v-row class="mt-6">
|
||||||
|
<v-col cols="12">
|
||||||
|
<v-card elevation="2">
|
||||||
|
<v-card-title class="pa-4" style="background-color: #f5f5f5;">
|
||||||
|
<v-icon class="mr-2" color="primary">mdi-help-circle-outline</v-icon>
|
||||||
|
Need Help?
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text class="pa-4">
|
||||||
|
<p class="mb-4">
|
||||||
|
If you need assistance or have questions about your membership,
|
||||||
|
please don't hesitate to contact our support team.
|
||||||
|
</p>
|
||||||
|
<v-btn
|
||||||
|
color="primary"
|
||||||
|
variant="outlined"
|
||||||
|
style="border-color: #a31515; color: #a31515;"
|
||||||
|
@click="contactSupport"
|
||||||
|
>
|
||||||
|
<v-icon start>mdi-email</v-icon>
|
||||||
|
Contact Support
|
||||||
|
</v-btn>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Snackbar for notifications -->
|
<!-- Snackbar for notifications -->
|
||||||
|
|
@ -596,6 +623,23 @@ const getDaysRemainingColor = (days: number): string => {
|
||||||
return 'text-success';
|
return 'text-success';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const contactSupport = () => {
|
||||||
|
const subject = encodeURIComponent('MonacoUSA Portal Support Request');
|
||||||
|
const body = encodeURIComponent(`Hello,
|
||||||
|
|
||||||
|
I need assistance with:
|
||||||
|
|
||||||
|
[Please describe your issue]
|
||||||
|
|
||||||
|
Member ID: ${memberData.value?.member_id || 'Not provided'}
|
||||||
|
Name: ${fullName.value || 'Not provided'}
|
||||||
|
Email: ${memberData.value?.email || user.value?.email || 'Not provided'}
|
||||||
|
|
||||||
|
Thank you!`);
|
||||||
|
|
||||||
|
window.open(`mailto:support@monacousa.org?subject=${subject}&body=${body}`, '_self');
|
||||||
|
};
|
||||||
|
|
||||||
// Initialize
|
// Initialize
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
loadMemberData();
|
loadMemberData();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue