updates
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user