@@ -159,13 +161,13 @@ const addPhase = () => {
description="Achtung Änderungen an diesem Projekttypen betreffen nur Projekte die damit neu erstellt werden. Bestehende Projekte bleiben unverändert."
/>
-
-
+
Initiale Phasen
@@ -248,36 +250,38 @@ const addPhase = () => {
-
-
-
- Schnellaktion hinzufügen
-
-
-
-
-
i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Angebot',link:'/createDocument/edit/?type=quotes'})">Angebot Erstellen
-
i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Auftrag',link:'/createDocument/edit/?type=confirmationOrders'})">Auftrag Erstellen
-
i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Lieferschein',link:'/createDocument/edit/?type=deliveryNotes'})">Lieferschein Erstellen
-
i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Rechnung',link:'/createDocument/edit/?type=invoices'})">Rechnung Erstellen
-
i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Aufgabe',link:'/tasks/create'})">Aufgabe Erstellen
-
i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Termin',link:'/events/edit'})">Termin Erstellen
+
+
+
+
+ Schnellaktion hinzufügen
+
+
+
+
+ i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Angebot',link:'/createDocument/edit/?type=quotes'})">Angebot Erstellen
+ i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Auftrag',link:'/createDocument/edit/?type=confirmationOrders'})">Auftrag Erstellen
+ i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Lieferschein',link:'/createDocument/edit/?type=deliveryNotes'})">Lieferschein Erstellen
+ i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Rechnung',link:'/createDocument/edit/?type=invoices'})">Rechnung Erstellen
+ i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Aufgabe',link:'/tasks/create'})">Aufgabe Erstellen
+ i.key === selectedKeyForQuickAction)].quickactions.push({label:'+ Termin',link:'/events/edit'})">Termin Erstellen
-
+
-
+
+
diff --git a/frontend/pages/projecttypes/index.vue b/frontend/pages/projecttypes/index.vue
index 7651a1e..6e3ac51 100644
--- a/frontend/pages/projecttypes/index.vue
+++ b/frontend/pages/projecttypes/index.vue
@@ -91,12 +91,12 @@ const filteredRows = computed(() => {
:columns="normalizeTableColumns(columns)"
class="w-full"
:ui="{ divide: 'divide-gray-200 dark:divide-gray-800' }"
- @select="(i) => router.push(`/projecttypes/show/${i.id}`) "
- :empty-state="{ icon: 'i-heroicons-circle-stack-20-solid', label: 'Keine Projekttypen anzuzeigen' }"
+ :on-select="(i) => router.push(`/projecttypes/show/${i.id}`) "
+ :empty="{ icon: 'i-heroicons-circle-stack-20-solid', label: 'Keine Projekttypen anzuzeigen' }"
>
-
- {{ row.name }}
- {{ row.name }}
+
+ {{ row.original.name }}
+ {{ row.original.name }}
diff --git a/frontend/pages/roles/[mode]/[[id]].vue b/frontend/pages/roles/[mode]/[[id]].vue
index 3b400c6..688df24 100644
--- a/frontend/pages/roles/[mode]/[[id]].vue
+++ b/frontend/pages/roles/[mode]/[[id]].vue
@@ -8,13 +8,15 @@ defineShortcuts({
router.push("/roles")
},
'arrowleft': () => {
- if(openTab.value > 0){
- openTab.value -= 1
+ const currentIndex = Number(openTab.value)
+ if(currentIndex > 0){
+ openTab.value = String(currentIndex - 1)
}
},
'arrowright': () => {
- if(openTab.value < 3) {
- openTab.value += 1
+ const currentIndex = Number(openTab.value)
+ if(currentIndex < 3) {
+ openTab.value = String(currentIndex + 1)
}
},
})
@@ -32,7 +34,7 @@ const mode = ref(route.params.mode || "show")
const itemInfo = ref({
rights: []
})
-const openTab = ref(0)
+const openTab = ref("0")
//Functions
const setupPage = async () => {
@@ -120,7 +122,7 @@ setupPage()
class="p-5"
v-model="openTab"
>
-
+
@@ -157,15 +159,15 @@ setupPage()
v-else-if="mode == 'edit' || mode == 'create'"
class="p-5"
>
-
-
-
+
-
-
+
-
+
diff --git a/frontend/pages/settings/admin.vue b/frontend/pages/settings/admin.vue
index 3950be0..dfb4988 100644
--- a/frontend/pages/settings/admin.vue
+++ b/frontend/pages/settings/admin.vue
@@ -51,7 +51,7 @@ const savingUser = ref(false)
const savingTenant = ref(false)
const creatingUser = ref(false)
const creatingTenant = ref(false)
-const activeTab = ref(0)
+const activeTab = ref("0")
const createUserModalOpen = ref(false)
const createTenantModalOpen = ref(false)
const createdUserPassword = ref("")
@@ -472,7 +472,7 @@ onMounted(async () => {
:items="tabItems"
class="admin-tabs h-full"
>
-
+
@@ -494,7 +494,7 @@ onMounted(async () => {
v-if="!loading"
:data="userTableRows"
:columns="normalizedUserTableColumns"
- @select="selectUser"
+ :on-select="selectUser"
/>
@@ -519,49 +519,49 @@ onMounted(async () => {
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Darf Administrationsseite und Admin-API nutzen
-
+
-
+
-
+
Benutzer darf mehreren Tenants zugeordnet sein
-
+
-
+
-
+
Beim nächsten Login muss das Passwort geändert werden
-
+
@@ -586,33 +586,33 @@ onMounted(async () => {
-
+
setRoleForTenant(tenantId, value)"
/>
-
+
-
+
({
label: profile.full_name || `${profile.first_name} ${profile.last_name}`,
value: profile.id,
}))
]"
- value-attribute="value"
- option-attribute="label"
+ value-key="value"
+ label-key="label"
placeholder="Profil auswählen"
@update:model-value="(value) => setProfileAssignmentForTenant(tenantId, value)"
/>
-
+
@@ -676,7 +676,7 @@ onMounted(async () => {
v-if="!loading"
:data="tenantTableRows"
:columns="normalizedTenantTableColumns"
- @select="selectTenant"
+ :on-select="selectTenant"
/>
@@ -701,13 +701,13 @@ onMounted(async () => {
-
+
-
+
-
+
-
+
@@ -743,49 +743,50 @@ onMounted(async () => {
-
-
- Benutzer anlegen
-
+
+
+
+ Benutzer anlegen
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
Benutzer darf die Administration öffnen
-
+
-
+
-
+
Mehrere Tenant-Zuordnungen erlauben
-
+
@@ -795,28 +796,30 @@ onMounted(async () => {
Benutzer anlegen
-
-
+
+
+
-
-
- Tenant anlegen
-
+
+
+
+ Tenant anlegen
+
-
+
-
+
-
+
-
+
{
Tenant anlegen
-
-
+
+
+
diff --git a/frontend/pages/settings/banking/index.vue b/frontend/pages/settings/banking/index.vue
index 8252e3d..03f5715 100644
--- a/frontend/pages/settings/banking/index.vue
+++ b/frontend/pages/settings/banking/index.vue
@@ -101,16 +101,17 @@ setupPage()
+ Bankverbindung
-
-
- Bankverbindung hinzufügen
-
+
+
+
+ Bankverbindung hinzufügen
+
-
@@ -127,7 +128,7 @@ setupPage()
-
+
-
+
-
+
+
-
-
- Verfügbare Bankkonten
-
-
- {{account.iban}} - {{account.owner_name}}
+
+
+
+ Verfügbare Bankkonten
+
+
+ {{account.iban}} - {{account.owner_name}}
-
- Hinzufügen
-
-
- Aktualisieren
-
-
-
+
+ Hinzufügen
+
+
+ Aktualisieren
+
+
+
+
-
- Ausgelaufen
+
+ Ausgelaufen
Aktiv
Aktualisieren
-
- {{row.balance ? row.balance.toFixed(2).replace(".",",") + ' €' : '-'}}
+
+ {{ row.original.balance ? row.original.balance.toFixed(2).replace(".",",") + ' €' : '-' }}
-
- {{row.iban.match(/.{1,5}/g).join(" ")}}
+
+ {{ row.original.iban.match(/.{1,5}/g).join(" ") }}
diff --git a/frontend/pages/settings/emailaccounts/[mode]/[[id]].vue b/frontend/pages/settings/emailaccounts/[mode]/[[id]].vue
index f8f6059..6435276 100644
--- a/frontend/pages/settings/emailaccounts/[mode]/[[id]].vue
+++ b/frontend/pages/settings/emailaccounts/[mode]/[[id]].vue
@@ -57,15 +57,15 @@ const saveAccount = async () => {
-
-
+
-
{
v-model="itemInfo.password"
placeholder="********"
/>
-
+
-
-
+
-
-
+
-
-
-
+
-
-
+
-
-
+
-
-
-
+
diff --git a/frontend/pages/settings/emailaccounts/index.vue b/frontend/pages/settings/emailaccounts/index.vue
index a2c2f62..f0599bc 100644
--- a/frontend/pages/settings/emailaccounts/index.vue
+++ b/frontend/pages/settings/emailaccounts/index.vue
@@ -32,23 +32,23 @@ const columns = computed(() => templateColumns.filter((column) => selectedColumn
E-Mail Adresse
-
+ -->
-
+ -->
templateColumns.filter((column) => selectedColumn
:data="items"
:columns="normalizeTableColumns(columns)"
class="w-full"
- @select="(i) => navigateTo(`/settings/emailaccounts/edit/${i.id}`)"
+ :on-select="(i) => navigateTo(`/settings/emailaccounts/edit/${i.id}`)"
:ui="{ divide: 'divide-gray-200 dark:divide-gray-800' }"
- :empty-state="{ icon: 'i-heroicons-circle-stack-20-solid', label: 'Keine E-Mail Konten anzuzeigen' }"
+ :empty="{ icon: 'i-heroicons-circle-stack-20-solid', label: 'Keine E-Mail Konten anzuzeigen' }"
>
diff --git a/frontend/pages/settings/externalDevices.vue b/frontend/pages/settings/externalDevices.vue
index 97298bf..8c5a7c7 100644
--- a/frontend/pages/settings/externalDevices.vue
+++ b/frontend/pages/settings/externalDevices.vue
@@ -33,13 +33,13 @@ const labelPrinterURI = ref("")
Etikettendrucker
-
-
+
-
+
@@ -86,4 +86,4 @@ const isLight = computed({
\ No newline at end of file
+
diff --git a/frontend/pages/settings/tenant.vue b/frontend/pages/settings/tenant.vue
index 5dbfa7c..72e9545 100644
--- a/frontend/pages/settings/tenant.vue
+++ b/frontend/pages/settings/tenant.vue
@@ -168,7 +168,7 @@ setupPage()
}
]"
>
-
+
-
-
-
+
-
-
+
@@ -208,41 +208,41 @@ setupPage()
-
+
Speichern
-
-
+
Kontenrahmen speichern
-
-
+
{
:data="texttemplates"
:loading="loading"
v-model:expand="expand"
- :empty-state="{ icon: 'i-heroicons-document-text', label: 'Keine Textvorlagen gefunden' }"
+ :empty="{ icon: 'i-heroicons-document-text', label: 'Keine Textvorlagen gefunden' }"
:columns="normalizeTableColumns([
{ key: 'name', label: 'Bezeichnung' },
{ key: 'documentType', label: 'Verwendung' },
@@ -172,33 +172,33 @@ const getDocLabel = (type) => {
{ key: 'actions', label: '' }
])"
>
-
- {{ row.name }}
+
+ {{ row.original.name }}
-
+
- {{ getDocLabel(row.documentType) }}
+ {{ getDocLabel(row.original.documentType) }}
-
+
- {{ row.pos === 'startText' ? 'Einleitung' : 'Endtext' }}
+ {{ row.original.pos === 'startText' ? 'Einleitung' : 'Endtext' }}
-
-
+
+
-
-
-
+
+
@@ -206,7 +206,7 @@ const getDocLabel = (type) => {
Vorschau
- {{ row.text }}
+ {{ row.original.text }}
@@ -237,25 +237,26 @@ const getDocLabel = (type) => {
-
-
-
-
- {{ itemInfo.id ? 'Vorlage bearbeiten' : 'Neue Vorlage erstellen' }}
-
-
-
-
+
+
+
+
+
+ {{ itemInfo.id ? 'Vorlage bearbeiten' : 'Neue Vorlage erstellen' }}
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
{
placeholder="Sehr geehrte Damen und Herren..."
class="font-mono text-sm"
/>
-
+
@@ -342,34 +343,35 @@ const getDocLabel = (type) => {
-
-
-
- Abbrechen
-
+
+
+
+ Abbrechen
+
-
- Erstellen
-
+
+ Erstellen
+
-
- Speichern
-
-
-
-
+
+ Speichern
+
+
+
+
+
diff --git a/frontend/pages/staff/profiles/[id].vue b/frontend/pages/staff/profiles/[id].vue
index b43d58c..6d5711a 100644
--- a/frontend/pages/staff/profiles/[id].vue
+++ b/frontend/pages/staff/profiles/[id].vue
@@ -182,75 +182,75 @@ onMounted(fetchProfile)
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
@@ -259,19 +259,19 @@ onMounted(fetchProfile)
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -315,21 +315,21 @@ onMounted(fetchProfile)
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/frontend/pages/staff/profiles/index.vue b/frontend/pages/staff/profiles/index.vue
index e731cca..e4e7e30 100644
--- a/frontend/pages/staff/profiles/index.vue
+++ b/frontend/pages/staff/profiles/index.vue
@@ -41,7 +41,7 @@
navigateTo(`/staff/profiles/${i.id}`)"
+ :on-select="(i) => navigateTo(`/staff/profiles/${i.id}`)"
>
diff --git a/frontend/pages/standardEntity/[type]/index.vue b/frontend/pages/standardEntity/[type]/index.vue
index 7d80434..6b43d78 100644
--- a/frontend/pages/standardEntity/[type]/index.vue
+++ b/frontend/pages/standardEntity/[type]/index.vue
@@ -672,70 +672,72 @@ const truncateValue = (value, maxLength) => {
-
-
- Filter
-
-
-
-
-
-
-
- {{ column.label }}
-
-
+
+
+ Filter
+
-
+
+
-
-
+
+
+
- Anwenden
-
-
+
+ Zurücksetzen
+
+
+
+ Anwenden
+
+
+
diff --git a/frontend/pages/support/[id].vue b/frontend/pages/support/[id].vue
index bad2a0e..550ec59 100644
--- a/frontend/pages/support/[id].vue
+++ b/frontend/pages/support/[id].vue
@@ -50,60 +50,7 @@ const addMessage = async () => {
{{itemInfo.title}}
-
-
-
+
diff --git a/frontend/pages/support/create.vue b/frontend/pages/support/create.vue
index 5d9d570..a28073a 100644
--- a/frontend/pages/support/create.vue
+++ b/frontend/pages/support/create.vue
@@ -40,20 +40,20 @@ const createTicket = async () => {
-
-
-
+
-
+
diff --git a/frontend/pages/support/index.vue b/frontend/pages/support/index.vue
index 1e87aaa..bb1d425 100644
--- a/frontend/pages/support/index.vue
+++ b/frontend/pages/support/index.vue
@@ -59,13 +59,13 @@ const filteredRows = computed(() => {
/>
-
+
{{selectedTenant ? tenants.find(i => i.id === selectedTenant).name : "Nicht nach Tenant filtern"}}
@@ -73,25 +73,25 @@ const filteredRows = computed(() => {
router.push(`/support/${i.id}`)"
+ :empty="{ icon: 'i-heroicons-circle-stack-20-solid', label: `Keine Tickets anzuzeigen` }"
+ :on-select="(i) => router.push(`/support/${i.id}`)"
:columns="normalizeTableColumns([{key:'created_at',label:'Datum'}, ...profileStore.currentTenant === 5 ? [{key:'tenant',label:'Tenant'}] : [],{key:'status',label:'Status'},{key:'title',label:'Titel'},{key:'created_by',label:'Ersteller'},{key:'ticketmessages',label:'Nachrichten'}])"
>
-
- {{row.tenant.name}}
+
+ {{row.original.tenant.name}}
-
- Offen
- Geschlossen
+
+ Offen
+ Geschlossen
-
- {{row.created_by.fullName}}
+
+ {{row.original.created_by.fullName}}
-
- {{dayjs(row.created_at).format('DD.MM.YYYY HH:mm')}}
+
+ {{dayjs(row.original.created_at).format('DD.MM.YYYY HH:mm')}}
-
- {{row.ticketmessages.length}}
+
+ {{row.original.ticketmessages.length}}
diff --git a/frontend/pages/tasks/index.vue b/frontend/pages/tasks/index.vue
index 830237a..757907e 100644
--- a/frontend/pages/tasks/index.vue
+++ b/frontend/pages/tasks/index.vue
@@ -460,34 +460,34 @@ onMounted(async () => {
v-else-if="filteredTasks.length"
:data="filteredTasks"
:columns="normalizedListColumns"
- @select="(task) => openTaskViaRoute(task)"
+ :on-select="(task) => openTaskViaRoute(task)"
>
-
+
Erledigt
-
- {{ normalizeStatus(row.categorie) }}
+
+ {{ normalizeStatus(row.original.categorie) }}
-
- {{ getAssigneeLabel(row) }}
+
+ {{ getAssigneeLabel(row.original) }}
-
- {{ getEntityLabel(projectOptions, row.project?.id || row.project) || "-" }}
+
+ {{ getEntityLabel(projectOptions, row.original.project?.id || row.original.project) || "-" }}
-
- {{ getEntityLabel(customerOptions, row.customer?.id || row.customer) || "-" }}
+
+ {{ getEntityLabel(customerOptions, row.original.customer?.id || row.original.customer) || "-" }}
-
- {{ getEntityLabel(plantOptions, row.plant?.id || row.plant) || "-" }}
+
+ {{ getEntityLabel(plantOptions, row.original.plant?.id || row.original.plant) || "-" }}
{
-
-
-
- {{ modalTitle }}
- {{ taskForm.id ? `#${taskForm.id}` : "Neu" }}
-
-
+
+
+
+
+ {{ modalTitle }}
+ {{ taskForm.id ? `#${taskForm.id}` : "Neu" }}
+
+
@@ -519,105 +520,106 @@ onMounted(async () => {
-
+
{{ taskForm.categorie || "Status auswählen" }}
-
+
{{ assigneeOptions.find((option) => option.value === taskForm.userId)?.label || "Zuweisung" }}
-
+
{{ getEntityLabel(projectOptions, taskForm.project) || "Projekt" }}
-
+
{{ getEntityLabel(customerOptions, taskForm.customer) || "Kunde" }}
-
+
{{ getEntityLabel(plantOptions, taskForm.plant) || "Objekt" }}
-
-
-
-
- Archivieren
-
-
+
+
+
+
+ Archivieren
+
+
-
- Schließen
-
- Bearbeiten
-
-
- Speichern
-
+
+ Schließen
+
+ Bearbeiten
+
+
+ Speichern
+
+
-
-
-
+
+
+
diff --git a/frontend/pages/wiki/[[id]].vue b/frontend/pages/wiki/[[id]].vue
index fcb9a7f..a010854 100644
--- a/frontend/pages/wiki/[[id]].vue
+++ b/frontend/pages/wiki/[[id]].vue
@@ -92,33 +92,35 @@
-
-
-
- {{ modalTitle }}
-
+
+
+
+
+ {{ modalTitle }}
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
- Möchtest du "{{ modalState.targetItem?.title }}" wirklich löschen?
- Alle Unterseiten werden ebenfalls gelöscht.
-
-
-
-
- Abbrechen
-
- {{ modalState.type === 'delete' ? 'Löschen' : 'Erstellen' }}
-
+
+
+ Möchtest du "{{ modalState.targetItem?.title }}" wirklich löschen?
+ Alle Unterseiten werden ebenfalls gelöscht.
+
-
-
+
+
+ Abbrechen
+
+ {{ modalState.type === 'delete' ? 'Löschen' : 'Erstellen' }}
+
+
+
+
+
|