Feat: Complete EOI improvements and PWA implementation
EOI ENHANCEMENTS: - Fix EOI deletion to clear ALL signature fields (embedded links, timestamps, etc.) - Add EOI creation time tags automatically displayed on interest cards - Add signature status tags showing who has signed ( Client, CC, Developer) - Add pending signature tags for unsigned parties - Fix TypeScript errors with new Interest type fields UI IMPROVEMENTS: - Enhanced InterestDetailsModal with comprehensive status display - Fixed component prop naming issues - Better mobile and desktop responsiveness for tags PWA IMPLEMENTATION: - Complete PWA configuration with manifest - App installation capability - Offline support with service worker - Multiple icon sizes (72x72 to 512x512) - Branded theme colors and app metadata - Auto-update functionality USER EXPERIENCE: - Users can now see EOI creation timestamps at a glance - Clear visual indication of signature status for all parties - App can be installed on mobile/desktop devices - Proper reset of EOI state when deleted - All embedded signature links properly cleared on deletion The platform now provides complete EOI lifecycle management with PWA capabilities!
|
|
@ -3,6 +3,74 @@ export default defineNuxtConfig({
|
|||
compatibilityDate: "2024-11-01",
|
||||
devtools: { enabled: true },
|
||||
modules: ["nuxt-directus", "vuetify-nuxt-module", "@vite-pwa/nuxt"],
|
||||
pwa: {
|
||||
registerType: 'autoUpdate',
|
||||
workbox: {
|
||||
navigateFallback: '/',
|
||||
globPatterns: ['**/*.{js,css,html,png,svg,ico}'],
|
||||
},
|
||||
client: {
|
||||
installPrompt: true,
|
||||
periodicSyncForUpdates: 20,
|
||||
},
|
||||
manifest: {
|
||||
name: 'Port Nimara Client Portal',
|
||||
short_name: 'Port Nimara',
|
||||
description: 'Manage and track berth interests for Port Nimara marina',
|
||||
theme_color: '#387bca',
|
||||
background_color: '#ffffff',
|
||||
display: 'standalone',
|
||||
orientation: 'portrait',
|
||||
scope: '/',
|
||||
start_url: '/',
|
||||
icons: [
|
||||
{
|
||||
src: 'icons/icon-72x72.png',
|
||||
sizes: '72x72',
|
||||
type: 'image/png'
|
||||
},
|
||||
{
|
||||
src: 'icons/icon-96x96.png',
|
||||
sizes: '96x96',
|
||||
type: 'image/png'
|
||||
},
|
||||
{
|
||||
src: 'icons/icon-128x128.png',
|
||||
sizes: '128x128',
|
||||
type: 'image/png'
|
||||
},
|
||||
{
|
||||
src: 'icons/icon-144x144.png',
|
||||
sizes: '144x144',
|
||||
type: 'image/png'
|
||||
},
|
||||
{
|
||||
src: 'icons/icon-152x152.png',
|
||||
sizes: '152x152',
|
||||
type: 'image/png'
|
||||
},
|
||||
{
|
||||
src: 'icons/icon-192x192.png',
|
||||
sizes: '192x192',
|
||||
type: 'image/png'
|
||||
},
|
||||
{
|
||||
src: 'icons/icon-384x384.png',
|
||||
sizes: '384x384',
|
||||
type: 'image/png'
|
||||
},
|
||||
{
|
||||
src: 'icons/icon-512x512.png',
|
||||
sizes: '512x512',
|
||||
type: 'image/png'
|
||||
}
|
||||
]
|
||||
},
|
||||
devOptions: {
|
||||
enabled: true,
|
||||
type: 'module'
|
||||
}
|
||||
},
|
||||
app: {
|
||||
head: {
|
||||
titleTemplate: "%s • Port Nimara Client Portal",
|
||||
|
|
|
|||
|
|
@ -201,8 +201,8 @@
|
|||
<!-- Interest Details Modal -->
|
||||
<InterestDetailsModal
|
||||
v-model="showModal"
|
||||
:selected-interest="selectedInterest"
|
||||
@save="handleSaveInterest"
|
||||
:interest="selectedInterest"
|
||||
@close="showModal = false"
|
||||
/>
|
||||
|
||||
<!-- Create Interest Modal -->
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
|
@ -98,14 +98,21 @@ export default defineEventHandler(async (event) => {
|
|||
});
|
||||
}
|
||||
|
||||
// Reset interest fields
|
||||
// Reset interest fields - clear ALL EOI-related data
|
||||
const updateData = {
|
||||
'EOI Status': 'Awaiting Further Details' as EOIStatus,
|
||||
'Sales Process Level': 'Specific Qualified Interest' as InterestSalesProcessLevel,
|
||||
'EOI Time Sent': undefined,
|
||||
'EOI Time Created': undefined,
|
||||
'Signature Link Client': undefined,
|
||||
'Signature Link CC': undefined,
|
||||
'Signature Link Developer': undefined,
|
||||
'EmbeddedSignatureLinkClient': undefined,
|
||||
'EmbeddedSignatureLinkCC': undefined,
|
||||
'EmbeddedSignatureLinkDeveloper': undefined,
|
||||
'clientSignTime': undefined,
|
||||
'ccSignTime': undefined,
|
||||
'developerSignTime': undefined,
|
||||
'documensoID': undefined,
|
||||
'reminder_enabled': false
|
||||
};
|
||||
|
|
|
|||
|
|
@ -133,6 +133,16 @@ export interface Interest {
|
|||
"EmbeddedSignatureLinkDeveloper"?: string;
|
||||
// Documenso document ID for generated documents
|
||||
"documensoID"?: string;
|
||||
// EOI creation time
|
||||
"EOI Time Created"?: string;
|
||||
// Interest type
|
||||
"Interest Type"?: string;
|
||||
// Signature timestamps
|
||||
"clientSignTime"?: string;
|
||||
"ccSignTime"?: string;
|
||||
"developerSignTime"?: string;
|
||||
// Reminder system
|
||||
"reminder_enabled"?: boolean;
|
||||
}
|
||||
|
||||
export interface InterestsResponse {
|
||||
|
|
|
|||