Added TextTemplates Page and Function
This commit is contained in:
@@ -348,6 +348,10 @@ let links = computed(() => {
|
|||||||
label: "Bankkonten",
|
label: "Bankkonten",
|
||||||
to: "/settings/banking",
|
to: "/settings/banking",
|
||||||
icon: "i-heroicons-clipboard-document-list"
|
icon: "i-heroicons-clipboard-document-list"
|
||||||
|
},{
|
||||||
|
label: "Text Vorlagen",
|
||||||
|
to: "/settings/texttemplates",
|
||||||
|
icon: "i-heroicons-clipboard-document-list"
|
||||||
},{
|
},{
|
||||||
label: "Firmeneinstellungen",
|
label: "Firmeneinstellungen",
|
||||||
to: "/settings/tenant",
|
to: "/settings/tenant",
|
||||||
|
|||||||
136
pages/settings/texttemplates.vue
Normal file
136
pages/settings/texttemplates.vue
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
<script setup>
|
||||||
|
const dataStore = useDataStore()
|
||||||
|
|
||||||
|
defineShortcuts({
|
||||||
|
'+': () => {
|
||||||
|
editTemplateModalOpen.value = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const editTemplateModalOpen = ref(false)
|
||||||
|
const itemInfo = ref({})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<UDashboardNavbar
|
||||||
|
title="Text Vorlagen"
|
||||||
|
>
|
||||||
|
<template #right>
|
||||||
|
<UButton
|
||||||
|
@click="editTemplateModalOpen = true"
|
||||||
|
>
|
||||||
|
+ Erstellen
|
||||||
|
</UButton>
|
||||||
|
</template>
|
||||||
|
</UDashboardNavbar>
|
||||||
|
<UDashboardToolbar>
|
||||||
|
|
||||||
|
</UDashboardToolbar>
|
||||||
|
<UDashboardPanelContent>
|
||||||
|
<UCard class="mt-5 mx-5">
|
||||||
|
<template #header>
|
||||||
|
Variablen
|
||||||
|
</template>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th class="text-left">Variable</th>
|
||||||
|
<th class="text-left">Beschreibung</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>vorname</td>
|
||||||
|
<td>Vorname</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>nachname</td>
|
||||||
|
<td>Nachname</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>zahlungsziel_in_tagen</td>
|
||||||
|
<td>Zahlungsziel in Tagen</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</UCard>
|
||||||
|
|
||||||
|
<div class="w-3/4 mx-auto mt-5">
|
||||||
|
<UCard
|
||||||
|
v-for="template in dataStore.texttemplates"
|
||||||
|
class="mb-3"
|
||||||
|
>
|
||||||
|
<p class="text-2xl">{{dataStore.documentTypesForCreation[template.documentType].label}}</p>
|
||||||
|
<p class="text-xl">{{template.pos === 'startText' ? 'Einleitung' : 'Ende'}}</p>
|
||||||
|
<p class="text-justify">{{template.text}}</p>
|
||||||
|
<UButton
|
||||||
|
@click="itemInfo = template;
|
||||||
|
editTemplateModalOpen = true"
|
||||||
|
icon="i-heroicons-pencil-solid"
|
||||||
|
variant="outline"
|
||||||
|
/>
|
||||||
|
</UCard>
|
||||||
|
</div>
|
||||||
|
</UDashboardPanelContent>
|
||||||
|
|
||||||
|
<USlideover
|
||||||
|
v-model="editTemplateModalOpen"
|
||||||
|
>
|
||||||
|
<UCard class="h-full">
|
||||||
|
<template #header>
|
||||||
|
{{itemInfo.id ? 'Vorlage bearbeiten' : 'Vorlage erstellen'}}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<UForm class="h-full">
|
||||||
|
<UFormGroup
|
||||||
|
label="Dokumententyp:"
|
||||||
|
>
|
||||||
|
<USelectMenu
|
||||||
|
:options="Object.keys(dataStore.documentTypesForCreation).map(i => {
|
||||||
|
return {
|
||||||
|
label: dataStore.documentTypesForCreation[i].label,
|
||||||
|
key: i
|
||||||
|
}
|
||||||
|
})"
|
||||||
|
v-model="itemInfo.documentType"
|
||||||
|
/>
|
||||||
|
</UFormGroup>
|
||||||
|
<UFormGroup
|
||||||
|
label="Position:"
|
||||||
|
>
|
||||||
|
<USelectMenu
|
||||||
|
:options="[{label:'Einleitung',key: 'startText'},{label:'Ende',key: 'endText'}]"
|
||||||
|
v-model="itemInfo.pos"
|
||||||
|
/>
|
||||||
|
</UFormGroup>
|
||||||
|
<UFormGroup
|
||||||
|
label="Text:"
|
||||||
|
>
|
||||||
|
<UTextarea
|
||||||
|
v-model="itemInfo.text"
|
||||||
|
/>
|
||||||
|
</UFormGroup>
|
||||||
|
</UForm>
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<UButton
|
||||||
|
@click="dataStore.createNewItem('texttemplates',itemInfo);
|
||||||
|
editTemplateModalOpen = false"
|
||||||
|
v-if="!itemInfo.id"
|
||||||
|
>Erstellen</UButton>
|
||||||
|
<UButton
|
||||||
|
@click="dataStore.updateItem('texttemplates',itemInfo);
|
||||||
|
editTemplateModalOpen = false"
|
||||||
|
v-if="itemInfo.id"
|
||||||
|
>Speichern</UButton>
|
||||||
|
</template>
|
||||||
|
</UCard>
|
||||||
|
</USlideover>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -131,9 +131,10 @@ setupPage()
|
|||||||
>
|
>
|
||||||
<template #item="{item}">
|
<template #item="{item}">
|
||||||
<UCard class="mt-5">
|
<UCard class="mt-5">
|
||||||
<div v-if="item.label === 'Informationen'">
|
<div class="truncate" v-if="item.label === 'Informationen'">
|
||||||
Typ: {{currentItem.type}} <br>
|
<p>Typ: {{currentItem.type}}</p>
|
||||||
Fahrer: {{dataStore.profiles.find(profile => profile.id === currentItem.driver) ? dataStore.profiles.find(profile => profile.id === currentItem.driver).fullName : 'Kein Fahrer gewählt'}} <br>
|
<p>Fahrgestellnummer: {{currentItem.vin}}</p>
|
||||||
|
<p>Fahrer: {{dataStore.profiles.find(profile => profile.id === currentItem.driver) ? dataStore.profiles.find(profile => profile.id === currentItem.driver).fullName : 'Kein Fahrer gewählt'}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="item.label === 'Eingangsrechnungen'">
|
<div v-else-if="item.label === 'Eingangsrechnungen'">
|
||||||
<UTable
|
<UTable
|
||||||
@@ -199,6 +200,13 @@ setupPage()
|
|||||||
v-model="itemInfo.active"
|
v-model="itemInfo.active"
|
||||||
/>
|
/>
|
||||||
</UFormGroup>
|
</UFormGroup>
|
||||||
|
<UFormGroup
|
||||||
|
label="Fahrgestellnummer:"
|
||||||
|
>
|
||||||
|
<UInput
|
||||||
|
v-model="itemInfo.vin"
|
||||||
|
/>
|
||||||
|
</UFormGroup>
|
||||||
<UFormGroup
|
<UFormGroup
|
||||||
label="Typ:"
|
label="Typ:"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -120,6 +120,10 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
workingtimes: {
|
workingtimes: {
|
||||||
label: "Anwesenheiten",
|
label: "Anwesenheiten",
|
||||||
labelSingle: "Anwesenheit"
|
labelSingle: "Anwesenheit"
|
||||||
|
},
|
||||||
|
texttemplates: {
|
||||||
|
label: "Textvorlagen",
|
||||||
|
labelSingle: "Textvorlage"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1004,7 +1008,7 @@ export const useDataStore = defineStore('data', () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function fetchTextTemplates() {
|
async function fetchTextTemplates() {
|
||||||
texttemplates.value = (await supabase.from("textTemplates").select().eq('tenant', currentTenant.value)).data
|
texttemplates.value = (await supabase.from("texttemplates").select().eq('tenant', currentTenant.value)).data
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchServices() {
|
async function fetchServices() {
|
||||||
|
|||||||
Reference in New Issue
Block a user