2019-12-21 07:20:25 +00:00
|
|
|
<template>
|
2020-01-14 21:01:24 +00:00
|
|
|
<div>
|
2020-02-19 20:29:09 +00:00
|
|
|
<v-dialog v-model="dialog" max-width="290">
|
|
|
|
<v-card>
|
|
|
|
<v-card-title class="headline"
|
|
|
|
>Transaktion ist länger als 5 Minuten her!</v-card-title
|
|
|
|
>
|
|
|
|
<v-card-text>
|
|
|
|
Da die Transaktion länger als 5 Minutern her ist, kann eine
|
|
|
|
Stornierung nicht durchgeführt werden. Wende dich bitte an den
|
|
|
|
Finanzer.
|
|
|
|
</v-card-text>
|
|
|
|
<v-card-actions>
|
|
|
|
<v-spacer />
|
|
|
|
<v-btn text @click="dialog = false">
|
|
|
|
Verstanden
|
|
|
|
</v-btn>
|
|
|
|
</v-card-actions>
|
|
|
|
</v-card>
|
|
|
|
</v-dialog>
|
2020-01-27 18:56:56 +00:00
|
|
|
<v-progress-linear v-if="loading && users.length !== 0" indeterminate />
|
2020-01-23 22:25:21 +00:00
|
|
|
<v-container>
|
2020-01-27 18:56:56 +00:00
|
|
|
<AddAmountSkeleton v-if="loading && users.length === 0" />
|
2020-01-23 22:25:21 +00:00
|
|
|
</v-container>
|
2020-02-19 20:29:09 +00:00
|
|
|
<v-navigation-drawer v-model="menu" right app clipped>
|
2020-02-16 19:35:13 +00:00
|
|
|
<v-list-item-group>
|
2020-02-19 22:22:23 +00:00
|
|
|
<div
|
|
|
|
v-for="message in messages"
|
|
|
|
three-line
|
|
|
|
:key="messages.indexOf(message)"
|
|
|
|
>
|
|
|
|
<v-list-item three-line>
|
2020-02-19 20:29:09 +00:00
|
|
|
<v-list-item-content>
|
|
|
|
<v-list-item-title>{{ now(message.date) }}</v-list-item-title>
|
|
|
|
<v-list-item-subtitle>{{ message.message }}</v-list-item-subtitle>
|
2020-02-19 22:22:23 +00:00
|
|
|
<v-list-item-subtitle class="red--text" v-if="message.storno">STORNIERT!!!</v-list-item-subtitle>
|
2020-02-19 20:29:09 +00:00
|
|
|
<v-list-item-action-text @click.stop="storno(message)"
|
2020-02-19 22:22:23 +00:00
|
|
|
>Klicken um zu Stornieren
|
|
|
|
</v-list-item-action-text>
|
2020-02-19 20:29:09 +00:00
|
|
|
</v-list-item-content>
|
|
|
|
</v-list-item>
|
|
|
|
</div>
|
2020-02-16 19:35:13 +00:00
|
|
|
</v-list-item-group>
|
|
|
|
</v-navigation-drawer>
|
2020-01-14 21:01:24 +00:00
|
|
|
<div v-for="user in users" :key="users.indexOf(user)">
|
2020-01-14 22:10:09 +00:00
|
|
|
<div v-if="isFiltered(user)">
|
|
|
|
<v-container>
|
2020-01-23 22:25:21 +00:00
|
|
|
<v-card :loading="user.loading">
|
2020-01-14 22:10:09 +00:00
|
|
|
<v-list-item>
|
|
|
|
<v-list-item-title class="title"
|
|
|
|
>{{ user.firstname }} {{ user.lastname }}</v-list-item-title
|
|
|
|
>
|
|
|
|
</v-list-item>
|
|
|
|
<v-card-text>
|
|
|
|
<v-row>
|
|
|
|
<v-col cols="10">
|
|
|
|
<v-row>
|
|
|
|
<v-col>
|
|
|
|
<v-btn
|
|
|
|
class="creditBtn"
|
|
|
|
block
|
|
|
|
@click="
|
2020-02-16 19:35:13 +00:00
|
|
|
addAmount({
|
|
|
|
username: user.username,
|
|
|
|
amount: 200,
|
|
|
|
user: user
|
|
|
|
})
|
2020-01-14 22:10:09 +00:00
|
|
|
"
|
|
|
|
:color="color"
|
|
|
|
:disabled="user.locked"
|
|
|
|
>2 €</v-btn
|
|
|
|
>
|
|
|
|
</v-col>
|
|
|
|
<v-col>
|
|
|
|
<v-btn
|
|
|
|
class="creditBtn"
|
|
|
|
block
|
|
|
|
@click="
|
2020-02-16 19:35:13 +00:00
|
|
|
addAmount({
|
|
|
|
username: user.username,
|
|
|
|
amount: 100,
|
|
|
|
user: user
|
|
|
|
})
|
2020-01-14 22:10:09 +00:00
|
|
|
"
|
|
|
|
:color="color"
|
|
|
|
:disabled="user.locked"
|
|
|
|
>1 €</v-btn
|
|
|
|
>
|
|
|
|
</v-col>
|
|
|
|
<v-col>
|
|
|
|
<v-btn
|
|
|
|
class="creditBtn"
|
|
|
|
block
|
|
|
|
@click="
|
2020-02-16 19:35:13 +00:00
|
|
|
addAmount({
|
|
|
|
username: user.username,
|
|
|
|
amount: 50,
|
|
|
|
user: user
|
|
|
|
})
|
2020-01-14 22:10:09 +00:00
|
|
|
"
|
|
|
|
:color="color"
|
|
|
|
:disabled="user.locked"
|
|
|
|
>0,50 €</v-btn
|
|
|
|
>
|
|
|
|
</v-col>
|
|
|
|
</v-row>
|
|
|
|
<v-row>
|
|
|
|
<v-col>
|
|
|
|
<v-btn
|
|
|
|
class="creditBtn"
|
|
|
|
block
|
|
|
|
@click="
|
2020-02-16 19:35:13 +00:00
|
|
|
addAmount({
|
|
|
|
username: user.username,
|
|
|
|
amount: 40,
|
|
|
|
user: user
|
|
|
|
})
|
2020-01-14 22:10:09 +00:00
|
|
|
"
|
|
|
|
:color="color"
|
|
|
|
:disabled="user.locked"
|
|
|
|
>0,40 €</v-btn
|
|
|
|
>
|
|
|
|
</v-col>
|
|
|
|
<v-col>
|
|
|
|
<v-btn
|
|
|
|
class="creditBtn"
|
|
|
|
block
|
|
|
|
@click="
|
2020-02-16 19:35:13 +00:00
|
|
|
addAmount({
|
|
|
|
username: user.username,
|
|
|
|
amount: 20,
|
|
|
|
user: user
|
|
|
|
})
|
2020-01-14 22:10:09 +00:00
|
|
|
"
|
|
|
|
:color="color"
|
|
|
|
:disabled="user.locked"
|
|
|
|
>0,20 €</v-btn
|
|
|
|
>
|
|
|
|
</v-col>
|
|
|
|
<v-col>
|
|
|
|
<v-btn
|
|
|
|
class="creditBtn"
|
|
|
|
block
|
|
|
|
@click="
|
2020-02-16 19:35:13 +00:00
|
|
|
addAmount({
|
|
|
|
username: user.username,
|
|
|
|
amount: 10,
|
|
|
|
user: user
|
|
|
|
})
|
2020-01-14 22:10:09 +00:00
|
|
|
"
|
|
|
|
:color="color"
|
|
|
|
:disabled="user.locked"
|
|
|
|
>0,10 €</v-btn
|
|
|
|
>
|
|
|
|
</v-col>
|
|
|
|
</v-row>
|
|
|
|
</v-col>
|
|
|
|
<v-col align-self="center">
|
|
|
|
<v-row>
|
|
|
|
<v-list-item>
|
|
|
|
<v-list-item-action-text :class="getColor(user.type)"
|
|
|
|
>{{
|
|
|
|
(user.amount / 100).toFixed(2)
|
|
|
|
}}
|
|
|
|
€</v-list-item-action-text
|
|
|
|
>
|
|
|
|
</v-list-item>
|
|
|
|
</v-row>
|
|
|
|
</v-col>
|
|
|
|
</v-row>
|
|
|
|
<v-alert v-if="user.locked" type="error"
|
|
|
|
>{{ user.firstname }} darf nicht mehr anschreiben.
|
|
|
|
{{ user.firstname }} sollte sich lieber mal beim Finanzer
|
|
|
|
melden.</v-alert
|
|
|
|
>
|
|
|
|
</v-card-text>
|
|
|
|
</v-card>
|
2020-02-16 19:35:13 +00:00
|
|
|
<v-snackbar
|
|
|
|
v-for="message in messages"
|
|
|
|
:key="messages.indexOf(message)"
|
|
|
|
:color="message.error ? 'error' : 'success'"
|
|
|
|
bottom
|
|
|
|
:timeout="3000"
|
|
|
|
:multi-line="true"
|
|
|
|
v-model="message.visible"
|
|
|
|
>
|
|
|
|
{{ message.message }}
|
|
|
|
</v-snackbar>
|
2020-01-14 22:10:09 +00:00
|
|
|
</v-container>
|
|
|
|
</div>
|
2019-12-26 09:31:36 +00:00
|
|
|
</div>
|
2020-01-14 21:01:24 +00:00
|
|
|
</div>
|
2019-12-21 07:20:25 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2020-01-14 21:01:24 +00:00
|
|
|
import { mapGetters, mapActions } from 'vuex'
|
2020-01-23 22:25:21 +00:00
|
|
|
import AddAmountSkeleton from '../user/Skeleton/AddAmountSkeleton'
|
2019-12-21 12:16:37 +00:00
|
|
|
|
2020-01-14 21:01:24 +00:00
|
|
|
export default {
|
|
|
|
name: 'CreditLists',
|
2020-01-23 22:25:21 +00:00
|
|
|
components: { AddAmountSkeleton },
|
2020-01-14 21:01:24 +00:00
|
|
|
props: {},
|
|
|
|
data() {
|
|
|
|
return {
|
2020-02-19 20:29:09 +00:00
|
|
|
color: 'green accent-4',
|
|
|
|
menu: true,
|
|
|
|
dialog: false
|
2019-12-21 07:20:25 +00:00
|
|
|
}
|
2020-01-14 21:01:24 +00:00
|
|
|
},
|
|
|
|
created() {
|
2020-02-19 20:29:09 +00:00
|
|
|
this.menu = this.menu_from_store
|
2020-01-14 21:01:24 +00:00
|
|
|
this.getUsers()
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
...mapActions({
|
|
|
|
addAmount: 'barUsers/addAmount',
|
2020-02-19 20:29:09 +00:00
|
|
|
getUsers: 'barUsers/getUsers',
|
2020-02-19 22:22:23 +00:00
|
|
|
deactivate: 'barUsers/deactivateMenu',
|
|
|
|
commitStorno: 'barUsers/storno'
|
2020-01-14 21:01:24 +00:00
|
|
|
}),
|
|
|
|
getColor(type) {
|
|
|
|
return type === 'credit' ? 'title green--text' : 'title red--text'
|
2020-01-14 22:10:09 +00:00
|
|
|
},
|
|
|
|
isFiltered(user) {
|
|
|
|
try {
|
|
|
|
return (
|
|
|
|
user.firstname.toLowerCase().includes(this.filter.toLowerCase()) ||
|
|
|
|
user.lastname.toLowerCase().includes(this.filter.toLowerCase())
|
|
|
|
)
|
|
|
|
} catch (e) {
|
|
|
|
return true
|
|
|
|
}
|
2020-02-19 20:29:09 +00:00
|
|
|
},
|
|
|
|
storno(message) {
|
|
|
|
if (!message.error) {
|
|
|
|
if (!this.under5minutes(message.date)) this.dialog = true
|
2020-02-19 22:22:23 +00:00
|
|
|
else {
|
|
|
|
this.commitStorno({username: message.user.username, amount: message.amount, date: message.date})
|
|
|
|
}
|
2020-02-19 20:29:09 +00:00
|
|
|
}
|
2020-01-14 21:01:24 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
computed: {
|
2020-01-14 22:10:09 +00:00
|
|
|
...mapGetters({
|
|
|
|
users: 'barUsers/users',
|
2020-01-23 22:25:21 +00:00
|
|
|
filter: 'barUsers/filter',
|
2020-02-16 19:35:13 +00:00
|
|
|
loading: 'barUsers/usersLoading',
|
|
|
|
messages: 'barUsers/messages',
|
2020-02-19 20:29:09 +00:00
|
|
|
menu_from_store: 'barUsers/menu'
|
2020-02-16 19:35:13 +00:00
|
|
|
}),
|
|
|
|
under5minutes() {
|
|
|
|
return now => {
|
|
|
|
var actual = new Date()
|
|
|
|
var zero = new Date(0)
|
|
|
|
var date = new Date(actual - now)
|
|
|
|
if (
|
|
|
|
date.getFullYear() === zero.getFullYear() &&
|
|
|
|
date.getMonth() === zero.getMonth() &&
|
|
|
|
date.getDate() === zero.getDate()
|
|
|
|
) {
|
|
|
|
if (date.getMinutes() < 6) {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
},
|
|
|
|
now() {
|
|
|
|
return now => {
|
|
|
|
var actual = new Date()
|
|
|
|
var zero = new Date(0)
|
|
|
|
var date = new Date(actual - now)
|
|
|
|
if (date.getFullYear() === zero.getFullYear()) {
|
|
|
|
if (date.getMonth() === zero.getMonth()) {
|
|
|
|
if (date.getDate() === zero.getDate()) {
|
|
|
|
if (date.getHours() === zero.getDate()) {
|
|
|
|
if (date.getMinutes() < 1) {
|
|
|
|
return 'vor ' + date.getSeconds() + ' Sekunden'
|
|
|
|
} else if (date.getMinutes() < 10) {
|
|
|
|
return 'vor ' + date.getMinutes() + ' Minuten'
|
|
|
|
} else {
|
|
|
|
return now.getHours() + ':' + now.getMinutes()
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return now.getHours() + ':' + now.getMinutes()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (
|
|
|
|
now.getDate() +
|
|
|
|
'.' +
|
|
|
|
now.getMonth() +
|
|
|
|
'.' +
|
|
|
|
now.getFullYear() +
|
|
|
|
' ' +
|
|
|
|
now.getHours() +
|
|
|
|
':' +
|
|
|
|
now.getMinutes()
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
2020-02-19 20:29:09 +00:00
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
menu(newValue) {
|
|
|
|
if (!newValue) this.deactivate()
|
|
|
|
},
|
|
|
|
menu_from_store(newValue) {
|
|
|
|
if (newValue) this.menu = this.menu_from_store
|
|
|
|
}
|
2020-01-14 21:01:24 +00:00
|
|
|
}
|
|
|
|
}
|
2019-12-21 07:20:25 +00:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
2020-01-14 21:01:24 +00:00
|
|
|
.creditBtn {
|
|
|
|
margin: 2px;
|
|
|
|
}
|
2019-12-21 07:20:25 +00:00
|
|
|
</style>
|