Dev 4.8.0 #15

Merged
th.guenther merged 11 commits from dev-4.8.0 into main 2026-09-04 09:29:57 +02:00
2 changed files with 38 additions and 17 deletions
Showing only changes of commit b01288b5e0 - Show all commits
@@ -512,7 +512,7 @@ function mailToGroup(groupKey) {
<span <span
v-if="!participant.refund && Number(participant.amountPaidValue ?? 0) > 0" v-if="!participant.refund && Number(participant.amountPaidValue ?? 0) > 0"
class="link" class="link"
style="color: #3cb62e;" style="color: #da7070;"
@click="openRefundDialog(participant)" @click="openRefundDialog(participant)"
> | Beitrag erstatten</span> > | Beitrag erstatten</span>
@@ -1,5 +1,5 @@
<script setup> <script setup>
import {reactive, ref} from 'vue' import {computed, reactive, ref} from 'vue'
import {toast} from 'vue3-toastify' import {toast} from 'vue3-toastify'
import AppLayout from '../../../../resources/js/layouts/AppLayout.vue' import AppLayout from '../../../../resources/js/layouts/AppLayout.vue'
import ShadowedBox from '../../../Views/Components/ShadowedBox.vue' import ShadowedBox from '../../../Views/Components/ShadowedBox.vue'
@@ -36,6 +36,18 @@ const form = reactive({accountOwner: '', accountIban: '', declarationAccepted: f
const errors = reactive({accountOwner: '', accountIban: '', declaration: ''}) const errors = reactive({accountOwner: '', accountIban: '', declaration: ''})
const saving = ref(false) const saving = ref(false)
/**
* Die Erklärung erscheint erst, wenn beide Kontoangaben stehen -- man bestätigt nichts, bevor man weiß,
* worüber. Dasselbe Vorgehen wie beim Erfassen einer Abrechnung (refund-data.vue).
*
* Dort wird zusätzlich auf `iban.length === 27` geprüft, also auf die Länge einer formatierten deutschen
* IBAN. Das bleibt hier bewusst weg: eine österreichische oder schweizerische käme sonst nie durch. Ob
* die IBAN stimmt, prüft der Server mit Prüfziffer und länderabhängiger Länge.
*/
const accountComplete = computed(
() => form.accountOwner.trim() !== '' && form.accountIban.trim() !== ''
)
function validate() { function validate() {
errors.accountOwner = form.accountOwner.trim() ? '' : 'Bitte gib an, wem das Konto gehört.' errors.accountOwner = form.accountOwner.trim() ? '' : 'Bitte gib an, wem das Konto gehört.'
errors.accountIban = form.accountIban.trim() ? '' : 'Bitte gib die IBAN des Kontos ein.' errors.accountIban = form.accountIban.trim() ? '' : 'Bitte gib die IBAN des Kontos ein.'
@@ -155,22 +167,31 @@ async function submit() {
gelesen und angekreuzt werden -- sonst schriebe der Beleg dem Teili eine gelesen und angekreuzt werden -- sonst schriebe der Beleg dem Teili eine
Zusicherung zu, die er nie abgegeben hat. Zusicherung zu, die er nie abgegeben hat.
--> -->
<div class="declaration"> <template v-if="accountComplete">
<input <div class="declaration">
id="refund-declaration" <input
v-model="form.declarationAccepted" id="refund-declaration"
type="checkbox" v-model="form.declarationAccepted"
/> type="checkbox"
<TextResource />
text-name="CONFIRMATION_PARTICIPANT_REFUND" <TextResource
belongs-to="refund-declaration" text-name="CONFIRMATION_PARTICIPANT_REFUND"
/> belongs-to="refund-declaration"
</div> />
<ErrorText :message="errors.declaration" /> </div>
<ErrorText :message="errors.declaration" />
<button class="button" type="submit" :disabled="saving || !form.declarationAccepted"> <!-- Beim Speichern gesperrt statt ausgeblendet, sonst verschwände der Knopf
{{ saving ? 'Wird gespeichert…' : 'Angaben absenden' }} unter dem Finger. -->
</button> <button
v-if="form.declarationAccepted"
class="button"
type="submit"
:disabled="saving"
>
{{ saving ? 'Wird gespeichert…' : 'Angaben absenden' }}
</button>
</template>
</form> </form>
</template> </template>
</template> </template>