Verbessere Fehlerbehandlung beim Laden von PDF-Vorlagen und füge Ursacheninformationen hinzu
This commit is contained in:
@@ -33,13 +33,22 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="pending" class="py-12 text-center text-gray-500">
|
||||
<div
|
||||
v-if="pending"
|
||||
class="py-12 text-center text-gray-500"
|
||||
>
|
||||
Lade QTTR-Werte...
|
||||
</div>
|
||||
<div v-else-if="error" class="rounded-lg border border-red-200 bg-red-50 p-4 text-red-800">
|
||||
<div
|
||||
v-else-if="error"
|
||||
class="rounded-lg border border-red-200 bg-red-50 p-4 text-red-800"
|
||||
>
|
||||
{{ error.statusMessage || error.message || 'QTTR-Werte konnten nicht geladen werden.' }}
|
||||
</div>
|
||||
<div v-else class="overflow-x-auto">
|
||||
<div
|
||||
v-else
|
||||
class="overflow-x-auto"
|
||||
>
|
||||
<table class="min-w-full divide-y divide-gray-200">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
|
||||
@@ -11,13 +11,24 @@
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-lg p-8">
|
||||
<form class="space-y-6" @submit.prevent="handleSubmit">
|
||||
<div v-if="!token" class="bg-red-50 border border-red-200 rounded-lg p-4">
|
||||
<p class="text-sm text-red-800">Der Reset-Link ist unvollständig. Fordern Sie bitte einen neuen Link an.</p>
|
||||
<form
|
||||
class="space-y-6"
|
||||
@submit.prevent="handleSubmit"
|
||||
>
|
||||
<div
|
||||
v-if="!token"
|
||||
class="bg-red-50 border border-red-200 rounded-lg p-4"
|
||||
>
|
||||
<p class="text-sm text-red-800">
|
||||
Der Reset-Link ist unvollständig. Fordern Sie bitte einen neuen Link an.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="password" class="block text-sm font-medium text-gray-700 mb-2">
|
||||
<label
|
||||
for="password"
|
||||
class="block text-sm font-medium text-gray-700 mb-2"
|
||||
>
|
||||
Neues Passwort
|
||||
</label>
|
||||
<input
|
||||
@@ -32,7 +43,10 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="passwordRepeat" class="block text-sm font-medium text-gray-700 mb-2">
|
||||
<label
|
||||
for="passwordRepeat"
|
||||
class="block text-sm font-medium text-gray-700 mb-2"
|
||||
>
|
||||
Neues Passwort wiederholen
|
||||
</label>
|
||||
<input
|
||||
@@ -46,13 +60,24 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<div v-if="errorMessage" class="bg-red-50 border border-red-200 rounded-lg p-4">
|
||||
<p class="text-sm text-red-800">{{ errorMessage }}</p>
|
||||
<div
|
||||
v-if="errorMessage"
|
||||
class="bg-red-50 border border-red-200 rounded-lg p-4"
|
||||
>
|
||||
<p class="text-sm text-red-800">
|
||||
{{ errorMessage }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div v-if="successMessage" class="bg-green-50 border border-green-200 rounded-lg p-4">
|
||||
<div
|
||||
v-if="successMessage"
|
||||
class="bg-green-50 border border-green-200 rounded-lg p-4"
|
||||
>
|
||||
<p class="text-sm text-green-800 flex items-center">
|
||||
<Check :size="18" class="mr-2" />
|
||||
<Check
|
||||
:size="18"
|
||||
class="mr-2"
|
||||
/>
|
||||
{{ successMessage }}
|
||||
</p>
|
||||
</div>
|
||||
@@ -62,12 +87,19 @@
|
||||
:disabled="isLoading || !token || Boolean(successMessage)"
|
||||
class="w-full px-6 py-3 bg-primary-600 hover:bg-primary-700 disabled:bg-gray-400 text-white font-semibold rounded-lg transition-colors flex items-center justify-center"
|
||||
>
|
||||
<Loader2 v-if="isLoading" :size="20" class="mr-2 animate-spin" />
|
||||
<Loader2
|
||||
v-if="isLoading"
|
||||
:size="20"
|
||||
class="mr-2 animate-spin"
|
||||
/>
|
||||
<span>{{ isLoading ? 'Wird gespeichert...' : 'Passwort speichern' }}</span>
|
||||
</button>
|
||||
|
||||
<div class="text-center">
|
||||
<NuxtLink to="/login" class="text-sm text-primary-600 hover:text-primary-700 font-medium">
|
||||
<NuxtLink
|
||||
to="/login"
|
||||
class="text-sm text-primary-600 hover:text-primary-700 font-medium"
|
||||
>
|
||||
Zurück zum Login
|
||||
</NuxtLink>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user