Files
FEDEO/frontend/pages/createdletters/[mode]/[[id]].vue
2026-01-06 12:09:31 +01:00

108 lines
2.7 KiB
Vue

<script setup>
import {useFunctions} from "~/composables/useFunctions.js";
import dayjs from "dayjs";
const profileStore = useProfileStore();
const preloadedContent = ref("")
const letterheads = ref([])
const itemInfo = ref({
contentHTML: "",
contentJSON: {},
contentText: ""
})
const showDocument = ref(false)
const uri = ref("")
const setupPage = async () => {
letterheads.value = await useSupabaseSelect("letterheads","*")
preloadedContent.value = `<p></p><p></p><p></p>`
}
setupPage()
const onChangeTab = (index) => {
if(index === 1) {
generateDocument()
}
}
const getDocumentData = () => {
/*const returnData = {
adressLine: `${businessInfo.name}, ${businessInfo.street}, ${businessInfo.zip} ${businessInfo.city}`,
recipient: [
customerData.name,
... customerData.nameAddition ? [customerData.nameAddition] : [],
... contactData ? [`${contactData.firstName} ${contactData.lastName}`] : [],
itemInfo.value.address.street,
... itemInfo.value.address.special ? [itemInfo.value.address.special] : [],
`${itemInfo.value.address.zip} ${itemInfo.value.address.city}`,
],
}*/
const returnData = {
adressLine: `Federspiel Technology UG, Am Schwarzen Brack 14, 26452 Sande`,
recipient: [
"Federspiel Technology",
"UG haftungsbeschränkt",
"Florian Federspiel",
"Am Schwarzen Brack 14",
"Zusatz",
"26452 Sande",
],
contentJSON: itemInfo.value.contentJSON,
}
return returnData
}
const generateDocument = async () => {
const ownTenant = profileStore.ownTenant
const path = letterheads.value[0].path
uri.value = await useFunctions().useCreateLetterPDF(getDocumentData(), path)
showDocument.value = true
}
const contentChanged = (content) => {
itemInfo.value.contentHTML = content.html
itemInfo.value.contentJSON = content.json
itemInfo.value.contentText = content.text
}
</script>
<template>
<UDashboardNavbar title="Anschreiben bearbeiten"/>
{{itemInfo}}
<UDashboardPanelContent>
<UTabs @change="onChangeTab" :items="[{label: 'Editor'},{label: 'Vorschau'}]">
<template #item="{item}">
<div v-if="item.label === 'Editor'">
<Tiptap
class="mt-3"
@updateContent="contentChanged"
:preloadedContent="preloadedContent"
/>
</div>
<div v-else-if="item.label === 'Vorschau'">
<object
:data="uri"
v-if="showDocument"
type="application/pdf"
class="w-full previewDocumentMobile"
/>
</div>
</template>
</UTabs>
</UDashboardPanelContent>
</template>
<style scoped>
.previewDocumentMobile {
aspect-ratio: 1 / 1.414;
}
</style>