Files
hrm/app/components/debt/DebtSendEmail.vue
2026-04-06 15:53:14 +07:00

69 lines
1.9 KiB
Vue

<script setup>
import useSendEmail from '@/components/debt/useSendEmail';
import Template1 from '@/lib/email/templates/Template1.vue';
const props = defineProps({
id: Number,
code: String,
mode: String // Due/Overdue
});
const { $download, $generateDocument, $getpath, $insertapi, $store } = useNuxtApp();
$store.commit(`selectedPaymentSchedulesForEmailIn${props.mode}`, [props.id]);
const filter = ref({ id: props.id });
const isDownloading = ref({
docx: false,
pdf: false,
});
const { contents, send, isSending } = useSendEmail(filter, props.mode === 'Due' ? 13 : 14);
async function downloadEmail(ext) {
isDownloading.value[ext] = true;
const doc_code = props.mode === 'Due' ? 'TB_NO_TIEN' : 'TB_NO'
const genDoc = await $generateDocument({
doc_code,
output_filename: `${doc_code}-${props.code}`,
payment_schedule_id: props.id,
investor_id: 1,
});
const inserted = await $insertapi('file', {
name: genDoc.data[ext === 'docx' ? 'file' : 'pdf'],
user: $store.login.id,
type: 4,
size: 1000,
file: genDoc.data[ext === 'docx' ? 'file' : 'pdf']
});
const url = `${$getpath()}download/?name=${inserted.file}&type=contract`;
$download(url, inserted.file);
isDownloading.value[ext] = false;
}
</script>
<template>
<Template1 v-if="contents" :content="contents[0]" previewMode />
<div class="is-flex is-justify-content-center is-gap-1 mt-4">
<button
class="button is-primary"
:class="{ 'is-loading': isSending }"
@click="send()"
>
Gửi thông báo
</button>
<button
class="button"
:class="{ 'is-loading': isDownloading.docx }"
@click="downloadEmail('docx')"
>
Tải .docx
</button>
<button
class="button"
:class="{ 'is-loading': isDownloading.pdf }"
@click="downloadEmail('pdf')"
>
Tải .pdf
</button>
</div>
</template>