4 changed files with 159 additions and 2 deletions
@ -0,0 +1,142 @@ |
|||
<template> |
|||
<q-page padding> |
|||
<h4 class="q-mt-none">Tâches</h4> |
|||
|
|||
<q-list bordered separator class="rounded-borders"> |
|||
<q-item clickable |
|||
v-for="issue in issues" |
|||
:key="issue.id" |
|||
@click="showHistory = true;selectedHistory = issue" |
|||
> |
|||
<q-item-section top thumbnail class="q-ml-none" style="margin:-8px 0 -8px -16px"> |
|||
<img |
|||
:src="getImageUrl(issue, issue.image_file, true)" |
|||
alt="photo" |
|||
v-if="issue.image_file" |
|||
/> |
|||
</q-item-section> |
|||
<q-item-section avatar> |
|||
<q-icon name="task" |
|||
:color="issue.solved_at ? 'green' : 'grey'" |
|||
/> |
|||
</q-item-section> |
|||
<q-item-section> |
|||
<q-item-label lines="3" v-html="issue.text.split('\n').join('</br>')"></q-item-label> |
|||
<q-item-label caption> |
|||
<span class="text-secondary">{{ issue.item.type }} / </span> |
|||
<span class="text-secondary q-mr-sm">{{ issue.item.name }}</span> |
|||
<span v-if="issue.item.ref">#{{ issue.item.ref }}</span> |
|||
</q-item-label> |
|||
<q-item-label caption> |
|||
<span class="text-capitalize">{{ issue.user }}</span> |
|||
<template v-if="issue.solved_at"> |
|||
<q-icon name="arrow_right" size="sm"/> |
|||
fait par <span class="text-capitalize">{{ issue.solved_by }}</span> le {{ getDate(issue.solved_at) }} |
|||
</template> |
|||
</q-item-label> |
|||
</q-item-section> |
|||
<q-item-section side top> |
|||
<q-item-label caption>{{ getDate(issue.created) }}</q-item-label> |
|||
</q-item-section> |
|||
</q-item> |
|||
</q-list> |
|||
|
|||
<q-dialog v-model="showHistory"> |
|||
<q-card> |
|||
<img :src="getImageUrl(selectedHistory, selectedHistory.image_file)" |
|||
alt="photo" |
|||
v-if="selectedHistory.image_file" |
|||
/> |
|||
<q-card-section> |
|||
<div v-html="selectedHistory.text.split('\n').join('</br>')"></div> |
|||
<div class="text-caption text-grey"> |
|||
<span class="text-secondary">{{ selectedHistory.item.type }} / </span> |
|||
<span class="text-secondary q-mr-sm">{{ selectedHistory.item.name }}</span> |
|||
<span v-if="selectedHistory.item.ref">#{{ selectedHistory.item.ref }}</span> |
|||
<q-separator class="q-my-md"/> |
|||
<span class="text-capitalize q-mr-sm">{{ selectedHistory.user }}</span> |
|||
<template v-if="selectedHistory.solved_at"> |
|||
<q-icon name="arrow_right" size="sm"/> |
|||
fait par <span class="text-capitalize">{{ selectedHistory.solved_by }}</span> le {{ getDate(selectedHistory.solved_at) }} |
|||
</template> |
|||
<!-- <span>{{ getDate(selectedHistory.created) }}</span>--> |
|||
</div> |
|||
</q-card-section> |
|||
<q-card-section v-if="!selectedHistory.solved_at"> |
|||
<q-btn outline color="secondary" label="Marquer comme terminé" @click="setTaskDone(selectedHistory)"></q-btn> |
|||
</q-card-section> |
|||
<q-separator/> |
|||
<q-card-actions align="right"> |
|||
<q-btn flat color="red" @click.stop="removeHistory(selectedHistory)">Supprimer</q-btn> |
|||
<q-btn flat color="grey" @click.stop="showHistory = false;selectedHistory = null">Fermer</q-btn> |
|||
</q-card-actions> |
|||
</q-card> |
|||
</q-dialog> |
|||
|
|||
<!-- <pre>{{ issues }}</pre>--> |
|||
</q-page> |
|||
</template> |
|||
|
|||
<script> |
|||
import { date, debounce } from 'quasar' |
|||
|
|||
export default { |
|||
name: 'TasksPage', |
|||
data () { |
|||
return { |
|||
showHistory: false, |
|||
selectedHistory: null |
|||
} |
|||
}, |
|||
created () { |
|||
}, |
|||
computed: { |
|||
rawIssues () { |
|||
return this.$store.state.core.firebase.history.filter(item => { |
|||
return item.type === 'issue' |
|||
}) || [] |
|||
}, |
|||
items () { |
|||
return this.$store.state.core.firebase.stock.filter(item => { |
|||
let refs = Array.from(new Set(this.rawIssues.map(issue => issue.ref))) |
|||
return refs.includes(item.ref) |
|||
}) || [] |
|||
}, |
|||
issues () { |
|||
return this.rawIssues.map(issue => { |
|||
let item = this.items.find(item => item.ref === issue.ref) || {} |
|||
return { |
|||
...issue, |
|||
item |
|||
} |
|||
}) |
|||
} |
|||
|
|||
}, |
|||
methods: { |
|||
getDate (timestamp) { |
|||
return date.formatDate(timestamp, 'DD/MM/YY - HH:mm') |
|||
}, |
|||
setTaskDone (history) { |
|||
this.$store.dispatch('core/updateItem', { |
|||
collection: 'history', |
|||
itemId: history.id, |
|||
data: { |
|||
id: history.id, |
|||
solved_at: new Date().toISOString(), |
|||
solved_by: this.$store.state.core.username |
|||
} |
|||
}).then(_ => { |
|||
this.$q.notify('Terminé !') |
|||
this.$store.dispatch('core/loadAppData').then(_ => { |
|||
this.showHistory = false |
|||
this.selectedHistory = null |
|||
}) |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
</style> |
Loading…
Reference in new issue