2021-01-21 13:24:46 +00:00
|
|
|
<template>
|
2021-01-29 03:37:56 +00:00
|
|
|
<q-card>
|
2021-03-18 16:23:57 +00:00
|
|
|
<BalanceHeader
|
|
|
|
@update:user="senderUpdated"
|
2021-01-31 16:09:29 +00:00
|
|
|
:show-selector="showSelector"
|
2021-03-18 16:23:57 +00:00
|
|
|
@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>
|
2021-01-21 13:24:46 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
2021-01-30 03:16:17 +00:00
|
|
|
import { computed, ref, defineComponent } from 'vue';
|
2021-01-21 13:24:46 +00:00
|
|
|
import { hasPermission } from 'src/utils/permission';
|
2021-01-31 21:01:38 +00:00
|
|
|
import { mapGetters, Store, useStore } from 'vuex';
|
2021-01-21 13:24:46 +00:00
|
|
|
import UserSelector from 'src/plugins/user/components/UserSelector.vue';
|
|
|
|
import BalanceHeader from '../components/BalanceHeader.vue';
|
|
|
|
import PERMISSIONS from '../permissions';
|
2021-01-31 21:01:38 +00:00
|
|
|
import { StateInterface } from 'src/store';
|
2021-01-21 13:24:46 +00:00
|
|
|
|
|
|
|
export default defineComponent({
|
|
|
|
name: 'BalanceTransfer',
|
2021-01-29 03:37:56 +00:00
|
|
|
components: { BalanceHeader, UserSelector },
|
2021-01-31 21:01:38 +00:00
|
|
|
setup(_, { emit }) {
|
2021-01-31 19:40:18 +00:00
|
|
|
//const store: Store<StateInterfaceBalance> = <Store<StateInterfaceBalance>>root.$store;
|
|
|
|
const store = useStore<Store<StateInterface>>();
|
2021-01-31 21:01:38 +00:00
|
|
|
const userGetters = mapGetters('users', ['currentUser']);
|
2021-01-21 13:24:46 +00:00
|
|
|
|
2021-01-31 21:01:38 +00:00
|
|
|
const showSelector = computed(() => hasPermission(PERMISSIONS.SEND_OTHER));
|
|
|
|
const sender = computed(() => <FG.User>userGetters.currentUser());
|
2021-01-21 13:24:46 +00:00
|
|
|
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);
|
2021-01-31 21:01:38 +00:00
|
|
|
//TOOD:!!
|
|
|
|
//sender.value = selectedUser;
|
2021-01-21 13:24:46 +00:00
|
|
|
}
|
|
|
|
function receiverUpdated(selectedUser: FG.User) {
|
|
|
|
receiver.value = selectedUser;
|
|
|
|
}
|
|
|
|
|
|
|
|
function sendAmount() {
|
|
|
|
store
|
|
|
|
.dispatch('balance/changeBalance', {
|
|
|
|
amount: amount.value,
|
|
|
|
sender: sender.value?.userid,
|
2021-03-18 16:23:57 +00:00
|
|
|
user: receiver.value?.userid,
|
2021-01-21 13:24:46 +00:00
|
|
|
})
|
2021-03-18 16:23:57 +00:00
|
|
|
.catch((err) => console.log(err));
|
2021-01-21 13:24:46 +00:00
|
|
|
}
|
|
|
|
|
2021-01-29 21:57:10 +00:00
|
|
|
function openHistory() {
|
|
|
|
emit('open-history');
|
|
|
|
}
|
|
|
|
|
2021-01-21 13:24:46 +00:00
|
|
|
return {
|
|
|
|
sender,
|
|
|
|
receiver,
|
|
|
|
amount,
|
|
|
|
sendAmount,
|
|
|
|
showSelector,
|
|
|
|
senderUpdated,
|
|
|
|
receiverUpdated,
|
2021-01-29 21:57:10 +00:00
|
|
|
sendDisabled,
|
2021-03-18 16:23:57 +00:00
|
|
|
openHistory,
|
2021-01-21 13:24:46 +00:00
|
|
|
};
|
2021-03-18 16:23:57 +00:00
|
|
|
},
|
2021-01-21 13:24:46 +00:00
|
|
|
});
|
|
|
|
</script>
|