Add link to item in tasks
Add working column in lists
This commit is contained in:
@ -147,7 +147,9 @@
|
|||||||
<img
|
<img
|
||||||
:src="getImageUrl(event, event.image_file, true)"
|
:src="getImageUrl(event, event.image_file, true)"
|
||||||
alt="photo"
|
alt="photo"
|
||||||
|
style="object-fit: cover"
|
||||||
v-if="event.image_file"
|
v-if="event.image_file"
|
||||||
|
class="full-height"
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
|
|||||||
@ -2,6 +2,8 @@
|
|||||||
<q-page padding>
|
<q-page padding>
|
||||||
<h4 class="q-mt-none">{{category.name}}</h4>
|
<h4 class="q-mt-none">{{category.name}}</h4>
|
||||||
<q-table
|
<q-table
|
||||||
|
flat
|
||||||
|
bordered
|
||||||
:title="category.name"
|
:title="category.name"
|
||||||
:rows="items"
|
:rows="items"
|
||||||
:columns="dynamicColumns"
|
:columns="dynamicColumns"
|
||||||
@ -40,17 +42,21 @@
|
|||||||
@click="goToDetail(props)"
|
@click="goToDetail(props)"
|
||||||
:class="{'cursor-pointer': true, 'text-red': props.row.deleted}">
|
:class="{'cursor-pointer': true, 'text-red': props.row.deleted}">
|
||||||
<q-td v-for="col in props.cols" :key="col.ref">
|
<q-td v-for="col in props.cols" :key="col.ref">
|
||||||
<div v-if="col.name === 'available'" class="text-center">
|
<div v-if="col.name === 'available'" class="text-center text-h6">
|
||||||
<span v-if="col.value" class="text-green">✔</span>
|
<span v-if="col.value" class="text-green">✔</span>
|
||||||
<span v-else class="text-red">✘</span>
|
<span v-else class="text-red">✘</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="col.name === 'deleted'" class="text-center">
|
<div v-else-if="col.name === 'working'" class="text-center text-h6">
|
||||||
|
<span v-if="col.value" class="text-green">✔</span>
|
||||||
|
<span v-else class="text-red">✘</span>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="col.name === 'deleted'" class=" text-center text-h6">
|
||||||
<span v-if="col.value" class="text-red">✘</span>
|
<span v-if="col.value" class="text-red">✘</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="col.name === 'state'" class="text-center">
|
<div v-else-if="col.name === 'state'" class="text-center text-h6">
|
||||||
<q-chip small :color="stateColor(col.value)" :title="col.value"></q-chip>
|
<q-chip small :color="stateColor(col.value)" :title="col.value"></q-chip>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="col.name !== 'deleted' && col.name !== 'available'&& col.name !== 'state'">
|
<span v-else>
|
||||||
{{ col.value }}
|
{{ col.value }}
|
||||||
</span>
|
</span>
|
||||||
</q-td>
|
</q-td>
|
||||||
@ -80,9 +86,10 @@ export default {
|
|||||||
columns: [
|
columns: [
|
||||||
{ label: 'Référence', align: 'left', field: 'ref', sortable: true, name: 'ref' },
|
{ label: 'Référence', align: 'left', field: 'ref', sortable: true, name: 'ref' },
|
||||||
{ label: 'Nom', align: 'left', field: 'name', sortable: true, name: 'name' },
|
{ label: 'Nom', align: 'left', field: 'name', sortable: true, name: 'name' },
|
||||||
{ label: 'Etat', align: 'left', field: 'state', sortable: true, name: 'state' },
|
{ label: 'Etat', align: 'center', field: 'state', sortable: true, name: 'state' },
|
||||||
|
{ label: 'Fonctionnel', align: 'center', field: 'working', sortable: true, name: 'working' },
|
||||||
|
{ label: 'En stock', align: 'center', field: 'available', sortable: true, name: 'available' },
|
||||||
{ label: 'Propriétaire', align: 'left', field: 'owner', sortable: true, name: 'owner' },
|
{ label: 'Propriétaire', align: 'left', field: 'owner', sortable: true, name: 'owner' },
|
||||||
{ label: 'En stock', align: 'left', field: 'available', sortable: true, name: 'available' },
|
|
||||||
{ label: 'Supprimé', align: 'left', field: 'deleted', sortable: false, name: 'deleted', format: val => val ? '✔' : '' }
|
{ label: 'Supprimé', align: 'left', field: 'deleted', sortable: false, name: 'deleted', format: val => val ? '✔' : '' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,18 +8,19 @@
|
|||||||
:key="issue.id"
|
:key="issue.id"
|
||||||
@click="showHistory = true;selectedHistory = issue"
|
@click="showHistory = true;selectedHistory = issue"
|
||||||
>
|
>
|
||||||
|
<q-item-section avatar>
|
||||||
|
<q-icon name="task"
|
||||||
|
:color="issue.solved_at ? 'green' : 'grey'"
|
||||||
|
/>
|
||||||
|
</q-item-section>
|
||||||
<q-item-section top thumbnail class="q-ml-none" style="margin:-8px 0 -8px -16px">
|
<q-item-section top thumbnail class="q-ml-none" style="margin:-8px 0 -8px -16px">
|
||||||
<img
|
<img
|
||||||
:src="getImageUrl(issue, issue.image_file, true)"
|
:src="getImageUrl(issue, issue.image_file, true)"
|
||||||
alt="photo"
|
alt="photo"
|
||||||
|
style="object-fit: cover;height:100%"
|
||||||
v-if="issue.image_file"
|
v-if="issue.image_file"
|
||||||
/>
|
/>
|
||||||
</q-item-section>
|
</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-section>
|
||||||
<q-item-label lines="3" v-html="issue.text.split('\n').join('</br>')"></q-item-label>
|
<q-item-label lines="3" v-html="issue.text.split('\n').join('</br>')"></q-item-label>
|
||||||
<q-item-label caption>
|
<q-item-label caption>
|
||||||
@ -43,16 +44,23 @@
|
|||||||
|
|
||||||
<q-dialog v-model="showHistory">
|
<q-dialog v-model="showHistory">
|
||||||
<q-card>
|
<q-card>
|
||||||
<img :src="getImageUrl(selectedHistory, selectedHistory.image_file)"
|
<q-img :src="getImageUrl(selectedHistory, selectedHistory.image_file)"
|
||||||
alt="photo"
|
alt="photo"
|
||||||
|
fit="cover"
|
||||||
v-if="selectedHistory.image_file"
|
v-if="selectedHistory.image_file"
|
||||||
/>
|
/>
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<div v-html="selectedHistory.text.split('\n').join('</br>')"></div>
|
<div v-html="selectedHistory.text.split('\n').join('</br>')"></div>
|
||||||
<div class="text-caption text-grey">
|
<div class="text-caption text-grey">
|
||||||
<span class="text-secondary">{{ selectedHistory.item.type }} / </span>
|
<q-btn no-caps
|
||||||
<span class="text-secondary q-mr-sm">{{ selectedHistory.item.name }}</span>
|
icon="exit_to_app"
|
||||||
|
color="secondary"
|
||||||
|
class="q-mt-sm"
|
||||||
|
:to="`/item/${selectedHistory.ref}`">
|
||||||
|
<span class="q-ml-md">{{ selectedHistory.item.type }} / </span>
|
||||||
|
<span class="q-mx-sm">{{ selectedHistory.item.name }}</span>
|
||||||
<span v-if="selectedHistory.item.ref">#{{ selectedHistory.item.ref }}</span>
|
<span v-if="selectedHistory.item.ref">#{{ selectedHistory.item.ref }}</span>
|
||||||
|
</q-btn>
|
||||||
<q-separator class="q-my-md"/>
|
<q-separator class="q-my-md"/>
|
||||||
<span class="text-capitalize q-mr-sm">{{ selectedHistory.user }}</span>
|
<span class="text-capitalize q-mr-sm">{{ selectedHistory.user }}</span>
|
||||||
<template v-if="selectedHistory.solved_at">
|
<template v-if="selectedHistory.solved_at">
|
||||||
@ -94,7 +102,7 @@ export default {
|
|||||||
rawIssues () {
|
rawIssues () {
|
||||||
return this.$store.state.core.firebase.history.filter(item => {
|
return this.$store.state.core.firebase.history.filter(item => {
|
||||||
return item.type === 'issue'
|
return item.type === 'issue'
|
||||||
}) || []
|
}).reverse() || []
|
||||||
},
|
},
|
||||||
items () {
|
items () {
|
||||||
return this.$store.state.core.firebase.stock.filter(item => {
|
return this.$store.state.core.firebase.stock.filter(item => {
|
||||||
@ -133,6 +141,9 @@ export default {
|
|||||||
this.selectedHistory = null
|
this.selectedHistory = null
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
getImageUrl (history, image, thumb = false) {
|
||||||
|
return this.$pb.files.getURL(history, image, { thumb: thumb ? '300x300f' : null })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user