251 lines
7.3 KiB
Vue
251 lines
7.3 KiB
Vue
|
<template>
|
||
|
<div>
|
||
|
<v-toolbar>
|
||
|
<v-toolbar-title>
|
||
|
Dienstanfragen
|
||
|
</v-toolbar-title>
|
||
|
</v-toolbar>
|
||
|
<v-card tile flat>
|
||
|
<v-card-title>
|
||
|
Gesendete Anfragen
|
||
|
</v-card-title>
|
||
|
<v-progress-circular indeterminate v-if="transactJobsLoading" />
|
||
|
<div v-for="job in transactJobs" :key="transactJobs.indexOf(job)">
|
||
|
<v-expand-transition>
|
||
|
<v-card tile style="margin-top: 3px">
|
||
|
<v-card-text>
|
||
|
<v-row>
|
||
|
<v-col>
|
||
|
<v-combobox
|
||
|
outlined
|
||
|
label="An"
|
||
|
:value="job.to_user.firstname + ' ' + job.to_user.lastname"
|
||
|
readonly
|
||
|
append-icon
|
||
|
>
|
||
|
<template v-slot:selection="data">
|
||
|
<v-chip>
|
||
|
{{ data.item }}
|
||
|
</v-chip>
|
||
|
</template>
|
||
|
</v-combobox>
|
||
|
</v-col>
|
||
|
<v-col>
|
||
|
<v-combobox
|
||
|
outlined
|
||
|
label="Datum"
|
||
|
:value="
|
||
|
job.date.getDate() +
|
||
|
'.' +
|
||
|
(job.date.getMonth() + 1) +
|
||
|
'.' +
|
||
|
job.date.getFullYear()
|
||
|
"
|
||
|
readonly
|
||
|
append-icon
|
||
|
>
|
||
|
<template v-slot:selection="data">
|
||
|
<v-chip>
|
||
|
{{ data.item }}
|
||
|
</v-chip>
|
||
|
</template>
|
||
|
</v-combobox>
|
||
|
</v-col>
|
||
|
<v-col>
|
||
|
<v-combobox
|
||
|
outlined
|
||
|
label="Status"
|
||
|
:value="acceptedStatus(job)"
|
||
|
readonly
|
||
|
append-icon
|
||
|
>
|
||
|
<template v-slot:selection="data">
|
||
|
<v-chip :color="statusColor(job)">
|
||
|
{{ data.item }}
|
||
|
</v-chip>
|
||
|
</template>
|
||
|
</v-combobox>
|
||
|
</v-col>
|
||
|
</v-row>
|
||
|
</v-card-text>
|
||
|
<v-card-actions v-if="!job.answerd">
|
||
|
<v-spacer/>
|
||
|
<v-btn
|
||
|
@click="
|
||
|
deleteTransactJob({
|
||
|
username: job.to_user.username,
|
||
|
year: job.date.getFullYear(),
|
||
|
month: job.date.getMonth() + 1,
|
||
|
day: job.date.getDate()
|
||
|
})
|
||
|
"
|
||
|
>Stornieren
|
||
|
</v-btn
|
||
|
>
|
||
|
</v-card-actions>
|
||
|
</v-card>
|
||
|
</v-expand-transition>
|
||
|
</div>
|
||
|
</v-card>
|
||
|
<v-divider />
|
||
|
<v-card tile flat>
|
||
|
<v-card-title>
|
||
|
Eingehende Anfragen
|
||
|
</v-card-title>
|
||
|
<v-progress-circular indeterminate v-if="requestJobsLoading" />
|
||
|
<div v-for="job in requestJobs" :key="requestJobs.indexOf(job)">
|
||
|
<v-card tile style="margin-top: 3px">
|
||
|
<v-card-text>
|
||
|
<v-row>
|
||
|
<v-col>
|
||
|
<v-combobox
|
||
|
outlined
|
||
|
label="Von"
|
||
|
:value="
|
||
|
job.from_user.firstname + ' ' + job.from_user.lastname
|
||
|
"
|
||
|
readonly
|
||
|
append-icon
|
||
|
>
|
||
|
<template v-slot:selection="data">
|
||
|
<v-chip>
|
||
|
{{ data.item }}
|
||
|
</v-chip>
|
||
|
</template>
|
||
|
</v-combobox>
|
||
|
</v-col>
|
||
|
<v-col>
|
||
|
<v-combobox
|
||
|
outlined
|
||
|
label="Datum"
|
||
|
:value="
|
||
|
job.date.getDate() +
|
||
|
'.' +
|
||
|
(job.date.getMonth() + 1) +
|
||
|
'.' +
|
||
|
job.date.getFullYear()
|
||
|
"
|
||
|
readonly
|
||
|
append-icon
|
||
|
>
|
||
|
<template v-slot:selection="data">
|
||
|
<v-chip>
|
||
|
{{ data.item }}
|
||
|
</v-chip>
|
||
|
</template>
|
||
|
</v-combobox>
|
||
|
</v-col>
|
||
|
<v-col>
|
||
|
<v-combobox
|
||
|
outlined
|
||
|
label="Status"
|
||
|
:value="acceptedStatus(job)"
|
||
|
readonly
|
||
|
append-icon
|
||
|
>
|
||
|
<template v-slot:selection="data">
|
||
|
<v-chip :color="statusColor(job)">
|
||
|
{{ data.item }}
|
||
|
</v-chip>
|
||
|
</template>
|
||
|
</v-combobox>
|
||
|
</v-col>
|
||
|
</v-row>
|
||
|
</v-card-text>
|
||
|
<v-expand-transition>
|
||
|
<v-card-actions v-if="!job.answerd">
|
||
|
<v-spacer />
|
||
|
<v-btn
|
||
|
color="red"
|
||
|
@click="
|
||
|
answerJob({
|
||
|
username: job.from_user.username,
|
||
|
year: job.date.getFullYear(),
|
||
|
month: job.date.getMonth() + 1,
|
||
|
day: job.date.getDate(),
|
||
|
answer: false
|
||
|
})
|
||
|
"
|
||
|
>Ablehnen
|
||
|
</v-btn>
|
||
|
<v-btn
|
||
|
color="green"
|
||
|
@click="
|
||
|
answerJob({
|
||
|
username: job.from_user.username,
|
||
|
year: job.date.getFullYear(),
|
||
|
month: job.date.getMonth() + 1,
|
||
|
day: job.date.getDate(),
|
||
|
answer: true
|
||
|
})
|
||
|
"
|
||
|
>Annehmen
|
||
|
</v-btn>
|
||
|
</v-card-actions>
|
||
|
</v-expand-transition>
|
||
|
</v-card>
|
||
|
</div>
|
||
|
</v-card>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import { mapGetters, mapActions } from 'vuex'
|
||
|
export default {
|
||
|
name: 'JobRequests',
|
||
|
methods: {
|
||
|
...mapActions({
|
||
|
getTransactJobs: 'requestJobs/getTransactJobs',
|
||
|
getRequestJobs: 'requestJobs/getRequestJobs',
|
||
|
answerJob: 'requestJobs/answerTransactJob',
|
||
|
deleteTransactJob: 'requestJobs/deleteTransactJob'
|
||
|
})
|
||
|
},
|
||
|
computed: {
|
||
|
...mapGetters({
|
||
|
transactJobs: 'requestJobs/transactJobs',
|
||
|
transactJobsLoading: 'requestJobs/transactJobsLoading',
|
||
|
requestJobs: 'requestJobs/requestJobs',
|
||
|
requestJobsLoading: 'requestJobs/requestJobsLoading'
|
||
|
}),
|
||
|
acceptedStatus() {
|
||
|
return job => {
|
||
|
if (!job.answerd) {
|
||
|
return 'gesendet'
|
||
|
}
|
||
|
if (job.answerd && job.accepted) {
|
||
|
return 'angenommen'
|
||
|
}
|
||
|
return 'abgelehnt'
|
||
|
}
|
||
|
},
|
||
|
statusColor() {
|
||
|
return job => {
|
||
|
if (!job.answerd) {
|
||
|
return
|
||
|
}
|
||
|
if (job.answerd && job.accepted) {
|
||
|
return 'green'
|
||
|
}
|
||
|
return 'red'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
created() {
|
||
|
var now = new Date()
|
||
|
this.getTransactJobs({
|
||
|
year: now.getFullYear(),
|
||
|
month: now.getMonth() + 1,
|
||
|
day: now.getDate()
|
||
|
})
|
||
|
this.getRequestJobs({
|
||
|
year: now.getFullYear(),
|
||
|
month: now.getMonth() + 1,
|
||
|
day: now.getDate()
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style scoped></style>
|