This commit is contained in:
2025-06-10 15:52:30 +02:00
parent be443ae71b
commit 1030103b7a
3 changed files with 195 additions and 18 deletions

View File

@@ -56,7 +56,7 @@
</div>
<!-- EOI Status Badge -->
<div v-if="hasEOI" class="mb-4 d-flex align-center">
<div v-if="hasEOI || hasEOIDocuments" class="mb-4 d-flex align-center">
<v-chip
:color="getStatusColor(interest['EOI Status'])"
variant="tonal"
@@ -69,8 +69,8 @@
</span>
</div>
<!-- Signature Links -->
<v-list v-if="hasEOI" density="comfortable">
<!-- Signature Links - Only show if EOI is generated but not uploaded/signed -->
<v-list v-if="hasEOI && !isEOISigned" density="comfortable">
<v-list-item class="mb-2">
<template v-slot:prepend>
<v-avatar color="primary" size="40">
@@ -123,8 +123,8 @@
</v-list-item>
</v-list>
<!-- Regenerate Button -->
<div v-if="hasEOI && interest['EOI Status'] !== 'Signed'" class="mt-4">
<!-- Regenerate Button - Only show if EOI is generated but not uploaded/signed -->
<div v-if="hasEOI && !isEOISigned" class="mt-4">
<v-btn
@click="generateEOI"
:loading="isGenerating"
@@ -136,9 +136,22 @@
</v-btn>
</div>
<!-- Reminder Settings -->
<v-divider v-if="hasEOI" class="mt-4 mb-4" />
<v-row v-if="hasEOI" dense align="center">
<!-- Delete EOI Button - Only show if EOI is uploaded/signed -->
<div v-if="isEOISigned" class="mt-4">
<v-btn
@click="showDeleteConfirmDialog = true"
color="error"
variant="outlined"
size="small"
prepend-icon="mdi-delete"
>
Delete EOI
</v-btn>
</div>
<!-- Reminder Settings - Only show if EOI is generated but not uploaded/signed -->
<v-divider v-if="hasEOI && !isEOISigned" class="mt-4 mb-4" />
<v-row v-if="hasEOI && !isEOISigned" dense align="center">
<v-col cols="auto">
<v-switch
v-model="remindersEnabled"
@@ -219,6 +232,45 @@
</v-card-actions>
</v-card>
</v-dialog>
<!-- Delete Confirmation Dialog -->
<v-dialog v-model="showDeleteConfirmDialog" max-width="400">
<v-card>
<v-card-title class="d-flex align-center">
<v-icon class="mr-2" color="error">mdi-alert</v-icon>
Confirm EOI Deletion
</v-card-title>
<v-card-text>
Are you sure you want to delete the EOI document? This will:
<ul class="mt-2">
<li>Remove the uploaded EOI document</li>
<li>Reset the Sales Process Level to "Specific Qualified Interest"</li>
<li>Reset the EOI Status to "Awaiting Further Details"</li>
<li>Allow a new EOI to be generated</li>
</ul>
<div class="mt-3 text-error">This action cannot be undone.</div>
</v-card-text>
<v-card-actions>
<v-spacer />
<v-btn
@click="showDeleteConfirmDialog = false"
variant="text"
>
Cancel
</v-btn>
<v-btn
color="error"
variant="flat"
@click="deleteEOI"
:loading="isDeleting"
>
Delete EOI
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</div>
</template>
@@ -239,6 +291,8 @@ const isGenerating = ref(false);
const showUploadDialog = ref(false);
const isUploading = ref(false);
const selectedFile = ref<File | null>(null);
const showDeleteConfirmDialog = ref(false);
const isDeleting = ref(false);
// Reminder settings
const remindersEnabled = ref(true);
@@ -264,6 +318,10 @@ const hasEOIDocuments = computed(() => {
return eoiDocuments.value.length > 0;
});
const isEOISigned = computed(() => {
return props.interest['EOI Status'] === 'Signed';
});
const generateEOI = async (retryCount = 0) => {
isGenerating.value = true;
@@ -452,4 +510,31 @@ const closeUploadDialog = () => {
showUploadDialog.value = false;
selectedFile.value = null;
};
const deleteEOI = async () => {
isDeleting.value = true;
try {
const response = await $fetch<{ success: boolean; message: string }>('/api/eoi/delete-document', {
method: 'POST',
headers: {
'x-tag': '094ut234'
},
body: {
interestId: props.interest.Id.toString()
}
});
if (response.success) {
toast.success('EOI deleted successfully');
showDeleteConfirmDialog.value = false;
emit('update'); // Refresh parent data
}
} catch (error: any) {
console.error('Failed to delete EOI:', error);
toast.error(error.data?.statusMessage || 'Failed to delete EOI');
} finally {
isDeleting.value = false;
}
};
</script>