flaschengeist-frontend/src/plugins/balance/components/BalanceTransfer.vue

97 lines
2.7 KiB
Vue
Raw Normal View History

<template>
2021-01-29 03:37:56 +00:00
<q-card>
<BalanceHeader
@update:user="senderUpdated"
:show-selector="showSelector"
@open-history="openHistory"
/>
2021-01-29 03:37:56 +00:00
<q-separator />
<q-card-section class="row q-col-gutter-md items-center">
<div class="col-sm-4 col-xs-12">
<q-input v-model.number="amount" type="number" filled label="Betrag" step="0.1" min="0" />
</div>
<div class="col-sm-4 col-xs-6">
<UserSelector :user="receiver" @update:user="receiverUpdated" label="Empfänger" />
</div>
<div class="col-sm-4 col-xs-6">
<q-btn
style="width: 100%"
color="primary"
:disable="sendDisabled"
label="Senden"
@click="sendAmount"
/>
</div>
</q-card-section>
</q-card>
</template>
<script lang="ts">
import { computed, ref, defineComponent } from 'vue';
import { hasPermission } from 'src/utils/permission';
import { StateInterfaceBalance } from '../store/balance';
import { Store, useStore } from 'vuex';
import UserSelector from 'src/plugins/user/components/UserSelector.vue';
import BalanceHeader from '../components/BalanceHeader.vue';
import PERMISSIONS from '../permissions';
import { UserStateInterface } from 'src/plugins/user/store/user';
export default defineComponent({
name: 'BalanceTransfer',
2021-01-29 03:37:56 +00:00
components: { BalanceHeader, UserSelector },
2021-01-29 21:57:10 +00:00
setup(_, { root, emit }) {
//const store: Store<StateInterfaceBalance> = <Store<StateInterfaceBalance>>root.$store;
const store = useStore<Store<StateInterface>>();
const userState = <UserStateInterface>store.state.user;
const showSelector = computed(() => hasPermission(PERMISSIONS.SEND_OTHER, store));
const sender = ref(userState.currentUser);
const receiver = ref<FG.User | undefined>(undefined);
const amount = ref<number>(0);
const sendDisabled = computed(() => {
return !(
receiver.value &&
sender.value &&
sender.value.userid != receiver.value.userid &&
amount.value > 0
);
});
function senderUpdated(selectedUser: FG.User) {
console.log(selectedUser);
sender.value = selectedUser;
}
function receiverUpdated(selectedUser: FG.User) {
receiver.value = selectedUser;
}
function sendAmount() {
store
.dispatch('balance/changeBalance', {
amount: amount.value,
sender: sender.value?.userid,
user: receiver.value?.userid,
})
.catch((err) => console.log(err));
}
2021-01-29 21:57:10 +00:00
function openHistory() {
emit('open-history');
}
return {
sender,
receiver,
amount,
sendAmount,
showSelector,
senderUpdated,
receiverUpdated,
2021-01-29 21:57:10 +00:00
sendDisabled,
openHistory,
};
},
});
</script>