flaschengeist-frontend/src/plugins/balance/pages/Admin.vue

168 lines
4.8 KiB
Vue
Raw Normal View History

<template>
<div>
<q-page padding>
<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>
<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"
/>
</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>
<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>
</q-table>
</q-page>
</div>
</template>
<script lang="ts">
// TODO: Fill usefull data
import { ref, defineComponent, computed, onBeforeMount } from 'vue';
import { useBalanceStore } from '../store';
import { useUserStore } from 'src/plugins/user/store';
2021-04-17 21:15:08 +00:00
import BalanceAddBody from 'src/plugins/balance/components/BalanceAddBody.vue';
import BalanceTransferBody from 'src/plugins/balance/components/BalanceTransferBody.vue';
export default defineComponent({
components: { BalanceTransferBody, BalanceAddBody },
// name: 'PageName'
2021-01-31 21:01:38 +00:00
setup() {
const store = useBalanceStore();
const userStore = useUserStore();
onBeforeMount(() => {
void store.getBalances();
void userStore.getUsers();
void store.getLimits();
});
2021-01-29 22:29:38 +00:00
const rows = computed(() => store.balances);
const limit = ref<number>();
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-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-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),
},*/
{
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-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);
}
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,
updateBalances,
tab,
2021-04-17 21:15:08 +00:00
};
2021-04-17 18:37:21 +00:00
},
});
</script>