adrema/resources/js/views/subscription/SubscriptionForm.vue

57 lines
2.4 KiB
Vue
Raw Normal View History

2021-07-04 01:44:41 +02:00
<template>
2023-04-29 23:41:26 +02:00
<page-layout>
2023-05-02 23:13:00 +02:00
<div class="flex" slot="toolbar">
<toolbar-button :href="meta.links.index" color="primary" icon="undo">zurück</toolbar-button>
</div>
2023-04-29 23:41:26 +02:00
<form id="subedit" class="p-3 grid gap-3" @submit.prevent="submit">
<save-button form="subedit"></save-button>
<box heading="Beitrag">
<div class="grid gap-4 sm:grid-cols-2">
<f-text id="name" v-model="inner.name" label="Name" size="sm" required></f-text>
<f-select id="fee_id" name="fee_id" :options="fees" v-model="inner.fee_id" label="Nami-Beitrag" size="sm" required></f-select>
<f-switch id="split" label="Rechnung aufsplitten" v-model="inner.split" size="sm"></f-switch>
<f-switch id="for_promise" label="Für Versprechen benutzen" v-model="inner.for_promise" size="sm"></f-switch>
</div>
</box>
<box heading="Positionen">
<div class="flex flex-col space-y-4">
<div v-for="(pos, index) in inner.children" :key="index" class="flex space-x-2 items-end">
<f-text :id="`name-${index}`" v-model="pos.name" label="Name" size="sm" required></f-text>
<f-text :id="`amount-${index}`" v-model="pos.amount" label="Beitrag" size="sm" mode="area" required></f-text>
<a href="#" @click.prevent="inner.children.splice(index, 1)" class="btn btn-sm btn-danger icon flex-none">
<svg-sprite src="trash" class="w-5 h-5"></svg-sprite>
</a>
</div>
<a href="#" @click.prevent="inner.children.push({name: '', amount: 0})" class="btn btn-sm flex btn-primary flex self-start mt-4">
<svg-sprite src="plus" class="w-5 h-5"></svg-sprite>
Position hinzufügen
2022-12-13 23:11:32 +01:00
</a>
</div>
2023-04-29 23:41:26 +02:00
</box>
</form>
</page-layout>
2021-07-04 01:44:41 +02:00
</template>
<script>
export default {
2022-08-23 23:49:19 +02:00
data: function () {
2021-07-04 01:44:41 +02:00
return {
2023-05-02 23:13:00 +02:00
inner: {...this.data},
2021-07-04 01:44:41 +02:00
};
},
props: {
data: {},
fees: {},
mode: {},
2023-05-02 23:13:00 +02:00
meta: {},
2021-07-04 01:44:41 +02:00
},
methods: {
submit() {
2023-04-29 23:41:26 +02:00
this.mode === 'create' ? this.$inertia.post(`/subscription`, this.inner) : this.$inertia.patch(`/subscription/${this.inner.id}`, this.inner);
2022-08-23 23:49:19 +02:00
},
2021-07-04 01:44:41 +02:00
},
};
</script>