2021-01-21 13:24:46 +00:00
|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<q-page padding>
|
2021-04-17 20:08:43 +00:00
|
|
|
<q-table :rows="rows" row-key="userid" :columns="columns">
|
|
|
|
<template #top-right>
|
|
|
|
<div class="full-width row q-gutter-sm">
|
|
|
|
<q-input
|
|
|
|
v-model.number="limit"
|
|
|
|
label="Limit"
|
|
|
|
type="number"
|
|
|
|
step="0.01"
|
|
|
|
suffix="€"
|
|
|
|
filled
|
|
|
|
dense
|
|
|
|
/>
|
|
|
|
<q-btn label="Limits Setzen" color="primary" dense @click="setLimits(limit)" />
|
|
|
|
</div>
|
|
|
|
</template>
|
2021-04-17 21:15:08 +00:00
|
|
|
<template #body="props">
|
|
|
|
<q-tr :props="props">
|
|
|
|
<q-td key="userid" :props="props">
|
|
|
|
{{ getName(props.row.userid) }}
|
|
|
|
</q-td>
|
|
|
|
<q-td key="limit" :props="props"> {{ getLimit(props.row.userid) }}€ </q-td>
|
|
|
|
<q-td key="balance" :props="props">
|
|
|
|
{{ getBalance(props.row.debit, props.row.credit) }}€
|
|
|
|
<q-menu anchor="bottom middle" self="top middle">
|
|
|
|
<q-card>
|
2021-04-17 21:48:28 +00:00
|
|
|
<q-card-section>
|
|
|
|
<q-tab-panels v-model="tab" animated>
|
|
|
|
<q-tab-panel name="add" class="fit column q-gutter-sm">
|
2021-04-17 22:01:52 +00:00
|
|
|
<balance-add-body
|
|
|
|
:user="props.row.userid"
|
|
|
|
:can-add-shortcut="false"
|
|
|
|
@changeBalance="updateBalance"
|
|
|
|
/>
|
2021-04-17 21:48:28 +00:00
|
|
|
</q-tab-panel>
|
|
|
|
<q-tab-panel name="transfer" class="fit column q-gutter-sm">
|
|
|
|
<balance-transfer-body
|
|
|
|
:user="props.row.userid"
|
|
|
|
@changeBalance="updateBalances"
|
|
|
|
/>
|
|
|
|
</q-tab-panel>
|
|
|
|
</q-tab-panels>
|
2021-04-17 21:15:08 +00:00
|
|
|
</q-card-section>
|
2021-04-17 21:48:28 +00:00
|
|
|
<q-tabs
|
|
|
|
v-model="tab"
|
|
|
|
dense
|
|
|
|
class="text-grey"
|
|
|
|
active-color="primary"
|
|
|
|
indicator-color="primary"
|
|
|
|
align="justify"
|
|
|
|
narrow-indicator
|
|
|
|
>
|
|
|
|
<q-tab name="add" label="Anschreiben" />
|
|
|
|
<q-tab name="transfer" label="Übertragen" />
|
|
|
|
</q-tabs>
|
2021-04-17 21:15:08 +00:00
|
|
|
</q-card>
|
|
|
|
</q-menu>
|
|
|
|
</q-td>
|
|
|
|
</q-tr>
|
|
|
|
</template>
|
2021-04-17 20:08:43 +00:00
|
|
|
</q-table>
|
2021-01-21 13:24:46 +00:00
|
|
|
</q-page>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
|
|
|
// TODO: Fill usefull data
|
|
|
|
|
2021-04-17 20:08:43 +00:00
|
|
|
import { ref, defineComponent, computed, onBeforeMount } from 'vue';
|
2021-02-04 01:44:20 +00:00
|
|
|
import { useBalanceStore } from '../store';
|
2021-04-17 20:08:43 +00:00
|
|
|
import { useUserStore } from 'src/plugins/user/store';
|
2021-04-17 21:15:08 +00:00
|
|
|
import BalanceAddBody from 'src/plugins/balance/components/BalanceAddBody.vue';
|
2021-04-17 21:48:28 +00:00
|
|
|
import BalanceTransferBody from 'src/plugins/balance/components/BalanceTransferBody.vue';
|
2021-02-04 01:44:20 +00:00
|
|
|
|
2021-01-21 13:24:46 +00:00
|
|
|
export default defineComponent({
|
2021-04-17 21:48:28 +00:00
|
|
|
components: { BalanceTransferBody, BalanceAddBody },
|
2021-01-21 13:24:46 +00:00
|
|
|
// name: 'PageName'
|
2021-01-31 21:01:38 +00:00
|
|
|
setup() {
|
2021-02-04 01:44:20 +00:00
|
|
|
const store = useBalanceStore();
|
2021-04-17 20:08:43 +00:00
|
|
|
const userStore = useUserStore();
|
2021-01-21 13:24:46 +00:00
|
|
|
|
2021-04-17 20:08:43 +00:00
|
|
|
onBeforeMount(() => {
|
|
|
|
void store.getBalances();
|
|
|
|
void userStore.getUsers();
|
|
|
|
void store.getLimits();
|
|
|
|
});
|
2021-01-29 22:29:38 +00:00
|
|
|
|
2021-04-17 20:08:43 +00:00
|
|
|
const rows = computed(() => store.balances);
|
|
|
|
const limit = ref<number>();
|
2021-01-21 13:24:46 +00:00
|
|
|
|
|
|
|
const columns = [
|
|
|
|
{
|
|
|
|
name: 'userid',
|
|
|
|
label: 'Benutzer ID',
|
|
|
|
field: 'userid',
|
|
|
|
required: true,
|
|
|
|
align: 'left',
|
2021-04-17 18:37:21 +00:00
|
|
|
sortable: true,
|
2021-04-17 21:15:08 +00:00
|
|
|
format: getName,
|
2021-01-21 13:24:46 +00:00
|
|
|
},
|
2021-04-17 20:08:43 +00:00
|
|
|
/*{
|
2021-01-29 22:29:38 +00:00
|
|
|
name: 'credit',
|
|
|
|
label: 'Haben',
|
|
|
|
field: 'credit',
|
2021-04-17 18:37:21 +00:00
|
|
|
format: (val: number) => val.toFixed(2),
|
2021-01-27 01:47:19 +00:00
|
|
|
},
|
2021-01-21 13:24:46 +00:00
|
|
|
{
|
2021-01-29 22:29:38 +00:00
|
|
|
name: 'debit',
|
|
|
|
label: 'Soll',
|
|
|
|
field: 'debit',
|
2021-04-17 18:37:21 +00:00
|
|
|
format: (val: number) => val.toFixed(2),
|
2021-04-17 20:08:43 +00:00
|
|
|
},*/
|
|
|
|
{
|
|
|
|
name: 'limit',
|
|
|
|
label: 'Limit',
|
2021-04-17 21:15:08 +00:00
|
|
|
align: 'right',
|
|
|
|
format: (_: undefined, row: { userid: string }) => getLimit(row.userid),
|
2021-01-29 22:29:38 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'balance',
|
|
|
|
label: 'Kontostand',
|
2021-04-17 21:15:08 +00:00
|
|
|
align: 'right',
|
2021-01-29 22:29:38 +00:00
|
|
|
format: (_: undefined, row: { debit: number; credit: number }) =>
|
2021-04-17 21:15:08 +00:00
|
|
|
getBalance(row.debit, row.credit),
|
2021-04-17 18:37:21 +00:00
|
|
|
},
|
2021-01-21 13:24:46 +00:00
|
|
|
];
|
2021-04-17 20:08:43 +00:00
|
|
|
|
2021-04-17 21:15:08 +00:00
|
|
|
function getName(val: string) {
|
|
|
|
return userStore.users.find((a) => a.userid === val)?.display_name;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getLimit(val: string) {
|
|
|
|
return store.user_limits.find((a) => a.userid === val)?.limit?.toFixed(2);
|
|
|
|
}
|
|
|
|
|
|
|
|
function getBalance(debit: number, credit: number) {
|
|
|
|
return (credit - debit).toFixed(2);
|
|
|
|
}
|
|
|
|
|
|
|
|
function updateBalance(user: FG.User) {
|
|
|
|
void store.getBalance(user);
|
|
|
|
}
|
|
|
|
|
2021-04-17 21:48:28 +00:00
|
|
|
function updateBalances(sender: FG.User, receiver: FG.User) {
|
|
|
|
updateBalance(sender);
|
|
|
|
updateBalance(receiver);
|
|
|
|
}
|
|
|
|
|
|
|
|
const tab = ref('add');
|
|
|
|
|
2021-04-17 21:15:08 +00:00
|
|
|
return {
|
|
|
|
rows,
|
|
|
|
columns,
|
|
|
|
limit,
|
|
|
|
setLimits: store.setLimits,
|
|
|
|
getName,
|
|
|
|
getLimit,
|
|
|
|
getBalance,
|
|
|
|
updateBalance,
|
2021-04-17 21:48:28 +00:00
|
|
|
updateBalances,
|
|
|
|
tab,
|
2021-04-17 21:15:08 +00:00
|
|
|
};
|
2021-04-17 18:37:21 +00:00
|
|
|
},
|
2021-01-21 13:24:46 +00:00
|
|
|
});
|
|
|
|
</script>
|