diensteinladung und übertragung fertig. User können leute einladen, sich austragen, jobs abgeben usw.
user können sehen, wenn es neue nachrichten gibt und sehen ob die einladung bzw. anfrage gesehen wurde.
This commit is contained in:
parent
4d6db01bd3
commit
ba44231e4f
|
@ -16,8 +16,10 @@
|
||||||
{{ jobInvite.on_date.getDate() }}.{{
|
{{ jobInvite.on_date.getDate() }}.{{
|
||||||
jobInvite.on_date.getMonth() + 1
|
jobInvite.on_date.getMonth() + 1
|
||||||
}}.{{ jobInvite.on_date.getFullYear() }} von
|
}}.{{ jobInvite.on_date.getFullYear() }} von
|
||||||
|
<v-badge dot :value="!jobInvite.watched" color="red">
|
||||||
{{ jobInvite.from_user.firstname }}
|
{{ jobInvite.from_user.firstname }}
|
||||||
{{ jobInvite.from_user.lastname }}
|
{{ jobInvite.from_user.lastname }}
|
||||||
|
</v-badge>
|
||||||
</div>
|
</div>
|
||||||
<v-row class="text-right" style="margin-right: 5px">
|
<v-row class="text-right" style="margin-right: 5px">
|
||||||
<v-col>
|
<v-col>
|
||||||
|
@ -49,6 +51,72 @@
|
||||||
:loading="jobInvite.day.loading"
|
:loading="jobInvite.day.loading"
|
||||||
@addingJob="addingJob(jobInvite, $event)"
|
@addingJob="addingJob(jobInvite, $event)"
|
||||||
@deletingJob="deletingJob(jobInvite, $event)"
|
@deletingJob="deletingJob(jobInvite, $event)"
|
||||||
|
@sendInvites="setJobInvites"
|
||||||
|
@sendRequests="setJobRequests"
|
||||||
|
@deleteJobInvite="deleteInvite"
|
||||||
|
@deleteJobRequest="deleteRequest"
|
||||||
|
/>
|
||||||
|
</v-expansion-panel-content>
|
||||||
|
</v-expansion-panel>
|
||||||
|
</v-expansion-panels>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
<v-card tile :loading="jobInvitesLoading">
|
||||||
|
<v-card-title>
|
||||||
|
Versendete Einladungen
|
||||||
|
</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-expansion-panels>
|
||||||
|
<v-expansion-panel
|
||||||
|
v-for="jobInvite in jobInvitesFromMe"
|
||||||
|
:key="jobInvite.id"
|
||||||
|
@click.once="seenJobIvnite(jobInvite)"
|
||||||
|
>
|
||||||
|
<v-expansion-panel-header>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{{ jobInvite.on_date.getDate() }}.{{
|
||||||
|
jobInvite.on_date.getMonth() + 1
|
||||||
|
}}.{{ jobInvite.on_date.getFullYear() }} an
|
||||||
|
<v-badge :value="jobInvite.watched" icon="mdi-eye" color="grey" inline>
|
||||||
|
{{ jobInvite.to_user.firstname }}
|
||||||
|
{{ jobInvite.to_user.lastname }}
|
||||||
|
</v-badge>
|
||||||
|
</div>
|
||||||
|
<v-row class="text-right" style="margin-right: 5px">
|
||||||
|
<v-col>
|
||||||
|
<v-progress-circular
|
||||||
|
indeterminate
|
||||||
|
v-if="jobInvitesLoading"
|
||||||
|
></v-progress-circular>
|
||||||
|
</v-col>
|
||||||
|
<v-col>
|
||||||
|
<v-icon color="green" v-show="userInWorker(jobInvite)">
|
||||||
|
{{ check }}
|
||||||
|
</v-icon>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-expansion-panel-header>
|
||||||
|
<v-expansion-panel-content :eager="true">
|
||||||
|
<v-row class="text-right">
|
||||||
|
<v-col>
|
||||||
|
<v-btn icon @click="deleteInvite(jobInvite)">
|
||||||
|
<v-icon>
|
||||||
|
{{trashCan}}
|
||||||
|
</v-icon>
|
||||||
|
</v-btn>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<Day
|
||||||
|
:day="jobInvite.day"
|
||||||
|
:long="true"
|
||||||
|
:loading="jobInvite.day.loading"
|
||||||
|
@addingJob="addingJob(jobInvite, $event)"
|
||||||
|
@deletingJob="deletingJob(jobInvite, $event)"
|
||||||
|
@sendInvites="setJobInvites"
|
||||||
|
@sendRequests="setJobRequests"
|
||||||
|
@deleteJobInvite="deleteInvite"
|
||||||
|
@deleteJobRequest="deleteRequest"
|
||||||
/>
|
/>
|
||||||
</v-expansion-panel-content>
|
</v-expansion-panel-content>
|
||||||
</v-expansion-panel>
|
</v-expansion-panel>
|
||||||
|
@ -60,7 +128,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapActions, mapGetters } from 'vuex'
|
import { mapActions, mapGetters } from 'vuex'
|
||||||
import { mdiEyeOff, mdiEyeCheck, mdiCheck } from '@mdi/js'
|
import { mdiEyeOff, mdiEyeCheck, mdiCheck, mdiTrashCan } from '@mdi/js'
|
||||||
import Day from '@/components/user/Jobs/Day'
|
import Day from '@/components/user/Jobs/Day'
|
||||||
export default {
|
export default {
|
||||||
name: 'JobInvites',
|
name: 'JobInvites',
|
||||||
|
@ -70,6 +138,7 @@ export default {
|
||||||
notSeen: mdiEyeOff,
|
notSeen: mdiEyeOff,
|
||||||
seen: mdiEyeCheck,
|
seen: mdiEyeCheck,
|
||||||
check: mdiCheck,
|
check: mdiCheck,
|
||||||
|
trashCan: mdiTrashCan,
|
||||||
showNotSeen: false,
|
showNotSeen: false,
|
||||||
showSeen: false,
|
showSeen: false,
|
||||||
update: 0
|
update: 0
|
||||||
|
@ -79,8 +148,12 @@ export default {
|
||||||
...mapActions({
|
...mapActions({
|
||||||
getJobInvites: 'jobInvites/getJobInvites',
|
getJobInvites: 'jobInvites/getJobInvites',
|
||||||
addJob: 'jobInvites/addJob',
|
addJob: 'jobInvites/addJob',
|
||||||
|
setJobInvites: 'jobInvites/setJobInvites',
|
||||||
updateJobInviteToMe: 'jobInvites/updateJobInviteToMe',
|
updateJobInviteToMe: 'jobInvites/updateJobInviteToMe',
|
||||||
deleteJob: 'jobInvites/deleteJob'
|
deleteJob: 'jobInvites/deleteJob',
|
||||||
|
setJobRequests: 'jobRequests/setJobRequests',
|
||||||
|
deleteInvite: 'jobInvites/deleteJobInviteFromMe',
|
||||||
|
deleteRequest: 'jobRequests/deleteJobRequestFromMe'
|
||||||
}),
|
}),
|
||||||
forceRender() {
|
forceRender() {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
@ -110,7 +183,7 @@ export default {
|
||||||
userInWorker(jobinvite) {
|
userInWorker(jobinvite) {
|
||||||
var jobkinddate = jobinvite.day.jobkinddate.find(item => {
|
var jobkinddate = jobinvite.day.jobkinddate.find(item => {
|
||||||
return item.worker.find(workeritem => {
|
return item.worker.find(workeritem => {
|
||||||
return workeritem.id === this.activeUser.id
|
return workeritem.id === jobinvite.to_user.id
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
return !!jobkinddate
|
return !!jobkinddate
|
||||||
|
|
|
@ -15,8 +15,10 @@
|
||||||
{{ jobrequest.on_date.getDate() }}.{{
|
{{ jobrequest.on_date.getDate() }}.{{
|
||||||
jobrequest.on_date.getMonth() + 1
|
jobrequest.on_date.getMonth() + 1
|
||||||
}}.{{ jobrequest.on_date.getFullYear() }} von
|
}}.{{ jobrequest.on_date.getFullYear() }} von
|
||||||
|
<v-badge dot :value="!jobrequest.watched" color="red">
|
||||||
{{ jobrequest.from_user.firstname }}
|
{{ jobrequest.from_user.firstname }}
|
||||||
{{ jobrequest.from_user.lastname }}
|
{{ jobrequest.from_user.lastname }}
|
||||||
|
</v-badge>
|
||||||
</div>
|
</div>
|
||||||
<v-row class="text-right" style="margin-right: 5px">
|
<v-row class="text-right" style="margin-right: 5px">
|
||||||
<v-col>
|
<v-col>
|
||||||
|
@ -46,15 +48,23 @@
|
||||||
:day="jobrequest.day"
|
:day="jobrequest.day"
|
||||||
:long="true"
|
:long="true"
|
||||||
@sendRequests="sendingJobRequests(jobrequest, $event)"
|
@sendRequests="sendingJobRequests(jobrequest, $event)"
|
||||||
|
@addingJob="addJob"
|
||||||
|
@deletingJob="deleteJob"
|
||||||
|
@sendInvites="setJobInvites"
|
||||||
|
@deleteJobInvite="deleteInvite"
|
||||||
|
@deleteJobRequest="deleteJobRequestFromMe"
|
||||||
/>
|
/>
|
||||||
<v-row class="text-right">
|
<v-row class="text-right">
|
||||||
<v-col>
|
<v-col>
|
||||||
<v-btn
|
<v-btn
|
||||||
v-show="!jobrequest.accepted"
|
v-show="!jobrequest.answered"
|
||||||
text
|
text
|
||||||
@click="updatingAcceptedJobRequest(jobrequest)"
|
@click="updatingAcceptedJobRequest(jobrequest)"
|
||||||
>Annehmen</v-btn
|
>Annehmen</v-btn
|
||||||
>
|
>
|
||||||
|
<div v-show="jobrequest.answered && !jobrequest.accepted">
|
||||||
|
Dieser Dienst wurde schon übertragen.
|
||||||
|
</div>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-expansion-panel-content>
|
</v-expansion-panel-content>
|
||||||
|
@ -77,8 +87,10 @@
|
||||||
{{ jobrequest.on_date.getDate() }}.{{
|
{{ jobrequest.on_date.getDate() }}.{{
|
||||||
jobrequest.on_date.getMonth() + 1
|
jobrequest.on_date.getMonth() + 1
|
||||||
}}.{{ jobrequest.on_date.getFullYear() }} an
|
}}.{{ jobrequest.on_date.getFullYear() }} an
|
||||||
|
<v-badge :value="jobrequest.watched" icon="mdi-eye" color="grey" inline>
|
||||||
{{ jobrequest.to_user.firstname }}
|
{{ jobrequest.to_user.firstname }}
|
||||||
{{ jobrequest.to_user.lastname }}
|
{{ jobrequest.to_user.lastname }}
|
||||||
|
</v-badge>
|
||||||
</div>
|
</div>
|
||||||
<v-row class="text-right" style="margin-right: 5px">
|
<v-row class="text-right" style="margin-right: 5px">
|
||||||
<v-col>
|
<v-col>
|
||||||
|
@ -108,17 +120,12 @@
|
||||||
:day="jobrequest.day"
|
:day="jobrequest.day"
|
||||||
:long="true"
|
:long="true"
|
||||||
@sendRequests="sendingJobRequests(jobrequest, $event)"
|
@sendRequests="sendingJobRequests(jobrequest, $event)"
|
||||||
|
@addingJob="addJob"
|
||||||
|
@deletingJob="deleteJob"
|
||||||
|
@sendInvites="setJobInvites"
|
||||||
|
@deleteJobInvite="deleteInvite"
|
||||||
|
@deleteJobRequest="deleteJobRequestFromMe"
|
||||||
/>
|
/>
|
||||||
<v-row class="text-right">
|
|
||||||
<v-col>
|
|
||||||
<v-btn
|
|
||||||
v-show="!jobrequest.accepted"
|
|
||||||
text
|
|
||||||
@click="updatingAcceptedJobRequest(jobrequest)"
|
|
||||||
>Annehmen
|
|
||||||
</v-btn>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</v-expansion-panel-content>
|
</v-expansion-panel-content>
|
||||||
</v-expansion-panel>
|
</v-expansion-panel>
|
||||||
</v-expansion-panels>
|
</v-expansion-panels>
|
||||||
|
@ -148,7 +155,13 @@ export default {
|
||||||
getJobRequests: 'jobRequests/getJobRequests',
|
getJobRequests: 'jobRequests/getJobRequests',
|
||||||
updateJobRequestToMe: 'jobRequests/updateJobRequestToMe',
|
updateJobRequestToMe: 'jobRequests/updateJobRequestToMe',
|
||||||
setJobRequests: 'jobRequests/setJobRequests',
|
setJobRequests: 'jobRequests/setJobRequests',
|
||||||
deleteJobRequestFromMe: 'jobRequests/deleteJobRequestFromMe'
|
deleteJobRequestFromMe: 'jobRequests/deleteJobRequestFromMe',
|
||||||
|
deleteInvite: 'jobInvites/deleteJobInviteFromMe',
|
||||||
|
getJobInvites: 'jobInvites/getJobInvites',
|
||||||
|
addJob: 'jobInvites/addJob',
|
||||||
|
setJobInvites: 'jobInvites/setJobInvites',
|
||||||
|
updateJobInviteToMe: 'jobInvites/updateJobInviteToMe',
|
||||||
|
deleteJob: 'jobInvites/deleteJob',
|
||||||
}),
|
}),
|
||||||
updatingAcceptedJobRequest(jobRequest) {
|
updatingAcceptedJobRequest(jobRequest) {
|
||||||
jobRequest.accepted = true
|
jobRequest.accepted = true
|
||||||
|
|
|
@ -46,7 +46,16 @@
|
||||||
<v-row justify="start" align="start">
|
<v-row justify="start" align="start">
|
||||||
<div v-for="day in week.days" :key="day.id">
|
<div v-for="day in week.days" :key="day.id">
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<Day :day="day" :long="false" @addingJob="addJob" @sendInvites="setJobInvites" @deletingJob="deleteJob"/>
|
<Day
|
||||||
|
:day="day"
|
||||||
|
:long="false"
|
||||||
|
@addingJob="addJob"
|
||||||
|
@sendInvites="setJobInvites"
|
||||||
|
@deletingJob="deleteJob"
|
||||||
|
@sendRequests="setJobRequests"
|
||||||
|
@deleteJobInvite="deleteInvite"
|
||||||
|
@deleteJobRequest="deleteRequest"
|
||||||
|
/>
|
||||||
</v-col>
|
</v-col>
|
||||||
</div>
|
</div>
|
||||||
</v-row>
|
</v-row>
|
||||||
|
@ -112,7 +121,10 @@ export default {
|
||||||
deleteJob: 'jobs/deleteJob',
|
deleteJob: 'jobs/deleteJob',
|
||||||
setJobInvites: 'jobInvites/setJobInvites',
|
setJobInvites: 'jobInvites/setJobInvites',
|
||||||
getJobInvites: 'jobInvites/getJobInvites',
|
getJobInvites: 'jobInvites/getJobInvites',
|
||||||
getJobRequests: 'jobRequests/getJobRequests'
|
getJobRequests: 'jobRequests/getJobRequests',
|
||||||
|
setJobRequests: 'jobRequests/setJobRequests',
|
||||||
|
deleteInvite: 'jobInvites/deleteJobInviteFromMe',
|
||||||
|
deleteRequest: 'jobRequests/deleteJobRequestFromMe'
|
||||||
}),
|
}),
|
||||||
changeMonth(value) {
|
changeMonth(value) {
|
||||||
if (value === -1) {
|
if (value === -1) {
|
||||||
|
@ -168,7 +180,7 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
loading(newValue) {
|
loading(newValue) {
|
||||||
if(!newValue) {
|
if (!newValue) {
|
||||||
this.getJobInvites()
|
this.getJobInvites()
|
||||||
this.getJobRequests()
|
this.getJobRequests()
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,28 +84,21 @@
|
||||||
>Einladen</v-btn
|
>Einladen</v-btn
|
||||||
>
|
>
|
||||||
</template>
|
</template>
|
||||||
<v-card>
|
<v-card :loading="jobInvitesLoading">
|
||||||
<v-card-title>
|
<v-card-title>
|
||||||
Einladungen
|
Einladungen
|
||||||
</v-card-title>
|
</v-card-title>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-tooltip
|
<v-div
|
||||||
bottom
|
bottom
|
||||||
v-for="(invite, index) in getInvites(day.date)"
|
v-for="(invite, index) in getInvites(day.date)"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<template v-slot:activator="{ on }">
|
<v-chip v-on="on" style="margin: 5px">
|
||||||
<v-chip
|
{{ invite.to_user.firstname }}
|
||||||
v-on="on"
|
{{ invite.to_user.lastname }}
|
||||||
close
|
|
||||||
style="margin: 5px"
|
|
||||||
@click:close="deleteInvite(invite)"
|
|
||||||
>
|
|
||||||
{{ invite.to_user.firstname }} {{ invite.to_user.lastname }}
|
|
||||||
</v-chip>
|
</v-chip>
|
||||||
</template>
|
</v-div>
|
||||||
<span>Klicken um Einladung zu widerrufen.</span>
|
|
||||||
</v-tooltip>
|
|
||||||
<v-divider style="margin-bottom: 5px" />
|
<v-divider style="margin-bottom: 5px" />
|
||||||
<v-autocomplete
|
<v-autocomplete
|
||||||
v-model="job_invites"
|
v-model="job_invites"
|
||||||
|
@ -134,17 +127,41 @@
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-menu>
|
</v-menu>
|
||||||
<v-menu v-model="menu_request" :close-on-content-click="false" offset-y v-if="day.locked && userInWorker()">
|
<v-menu
|
||||||
|
v-model="menu_request"
|
||||||
|
:close-on-content-click="false"
|
||||||
|
offset-y
|
||||||
|
v-if="day.locked && userInWorker()"
|
||||||
|
>
|
||||||
<template v-slot:activator="{ on }">
|
<template v-slot:activator="{ on }">
|
||||||
<v-btn v-show="day.locked && userInWorker()" text v-on="on">
|
<v-btn v-show="day.locked && userInWorker()" text v-on="on">
|
||||||
Abgeben
|
Abgeben
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</template>
|
</template>
|
||||||
<v-card>
|
<v-card :loading="jobRequestsLoading">
|
||||||
|
<v-card-title>
|
||||||
|
Dienstabgabenanfrage
|
||||||
|
</v-card-title>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
|
<div v-if="jobRequestsLoading">
|
||||||
|
<v-progress-circular indeterminate />
|
||||||
|
</div>
|
||||||
|
<div v-if="!jobRequestsLoading">
|
||||||
|
<v-div
|
||||||
|
bottom
|
||||||
|
v-for="(request, index) in getRequests(day.date)"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<v-chip v-on="on" style="margin: 5px">
|
||||||
|
{{ request.to_user.firstname }}
|
||||||
|
{{ request.to_user.lastname }}
|
||||||
|
</v-chip>
|
||||||
|
</v-div>
|
||||||
|
</div>
|
||||||
|
<v-divider style="margin-bottom: 5px" />
|
||||||
<v-autocomplete
|
<v-autocomplete
|
||||||
v-model="job_requests"
|
v-model="job_requests"
|
||||||
label="Einladungen senden an"
|
label="Anfragen senden an"
|
||||||
return-object
|
return-object
|
||||||
multiple
|
multiple
|
||||||
filled
|
filled
|
||||||
|
@ -202,9 +219,7 @@ export default {
|
||||||
//setInterval(() => {console.log(this.day.loading)},100)
|
//setInterval(() => {console.log(this.day.loading)},100)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions({
|
...mapActions({}),
|
||||||
deleteInvite: 'jobInvites/deleteJobInviteFromMe'
|
|
||||||
}),
|
|
||||||
sendInvites() {
|
sendInvites() {
|
||||||
var sendData = []
|
var sendData = []
|
||||||
this.job_invites.forEach(item => {
|
this.job_invites.forEach(item => {
|
||||||
|
@ -305,7 +320,20 @@ export default {
|
||||||
month: sendData.on_date.getMonth() + 1,
|
month: sendData.on_date.getMonth() + 1,
|
||||||
day: sendData.on_date.getDate()
|
day: sendData.on_date.getDate()
|
||||||
}
|
}
|
||||||
this.deleteInvite(sendData)
|
this.$emit('deleteJobInvite', sendData)
|
||||||
|
},
|
||||||
|
deletingRequest(jobRequest) {
|
||||||
|
let sendData = { ...jobRequest }
|
||||||
|
sendData.on_date = {
|
||||||
|
year: sendData.on_date.getFullYear(),
|
||||||
|
month: sendData.on_date.getMonth() + 1,
|
||||||
|
day: sendData.on_date.getDate()
|
||||||
|
}
|
||||||
|
this.$emit('deleteJobRequest', sendData)
|
||||||
|
this.menu_request = false
|
||||||
|
setTimeout(() => {
|
||||||
|
this.menu_request = true
|
||||||
|
}, 200)
|
||||||
},
|
},
|
||||||
getJob_Kind() {
|
getJob_Kind() {
|
||||||
var jobkinddate = this.day.jobkinddate.find(item => {
|
var jobkinddate = this.day.jobkinddate.find(item => {
|
||||||
|
@ -361,7 +389,10 @@ export default {
|
||||||
activeUser: 'user/user',
|
activeUser: 'user/user',
|
||||||
allUsers: 'usermanager/users',
|
allUsers: 'usermanager/users',
|
||||||
getDay: 'jobInvites/getDayFromMe',
|
getDay: 'jobInvites/getDayFromMe',
|
||||||
getInvites: 'jobInvites/getDayWorkerFromMe'
|
getInvites: 'jobInvites/getDayWorkerFromMe',
|
||||||
|
getRequests: 'jobRequests/getDayWorkerFromMe',
|
||||||
|
jobInvitesLoading: 'jobInvites/jobInvitesLoading',
|
||||||
|
jobRequestsLoading: 'jobRequests/jobRequestsLoading'
|
||||||
}),
|
}),
|
||||||
jobkindWithSpace() {
|
jobkindWithSpace() {
|
||||||
var retVal = this.day.jobkinddate.filter(item => {
|
var retVal = this.day.jobkinddate.filter(item => {
|
||||||
|
|
Loading…
Reference in New Issue