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!
This commit is contained in:
Matt 2025-06-12 16:16:30 +02:00
parent e02d3ab70f
commit af3a68e51b
13 changed files with 386 additions and 1218 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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",

View File

@ -201,8 +201,8 @@
<!-- Interest Details Modal -->
<InterestDetailsModal
v-model="showModal"
:selected-interest="selectedInterest"
@save="handleSaveInterest"
:interest="selectedInterest"
@close="showModal = false"
/>
<!-- Create Interest Modal -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
public/icons/icon-72x72.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
public/icons/icon-96x96.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@ -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
};

View File

@ -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 {