2024-01-07 20:32:42 +00:00
|
|
|
<template>
|
|
|
|
<div class="container-fluid px-xl-5 mt-3">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-xl-8 offset-xl-2">
|
|
|
|
<div class="card bg-dark text-light mb-2" id="filters">
|
|
|
|
<div class="card-header">
|
|
|
|
<h3>Ticket #{{ ticket.id }} - {{ ticket.name }}</h3>
|
|
|
|
</div>
|
2024-01-13 00:40:37 +00:00
|
|
|
<Timeline :timeline="ticket.timeline" @sendMail="handleMail" @addComment="handleComment"/>
|
2024-01-07 20:32:42 +00:00
|
|
|
<div class="card-footer d-flex justify-content-between">
|
2024-01-19 20:42:05 +00:00
|
|
|
<button class="btn btn-secondary mr-2" @click="$router.go(-1)">Back</button>
|
2023-12-28 20:08:26 +00:00
|
|
|
<!--button class="btn btn-danger" @click="deleteItem({type: 'tickets', id: ticket.id})">
|
2024-01-07 20:32:42 +00:00
|
|
|
<font-awesome-icon icon="trash"/>
|
|
|
|
Delete
|
2023-12-28 20:08:26 +00:00
|
|
|
</button-->
|
2024-01-13 00:32:59 +00:00
|
|
|
<ClipboardButton :payload="shippingEmail" class="btn btn-primary">
|
|
|
|
<font-awesome-icon icon="clipboard"/>
|
|
|
|
Copy DHL contact to clipboard
|
|
|
|
</ClipboardButton>
|
2024-01-22 16:21:22 +00:00
|
|
|
<div class="btn-group">
|
|
|
|
<select class="form-control" v-model="ticket.assigned_to">
|
|
|
|
<option v-for="user in users" :value="user.username">{{ user.username }}</option>
|
|
|
|
</select>
|
|
|
|
<button class="form-control btn btn-success" @click="assigTicket(ticket)">
|
|
|
|
Assign Ticket
|
|
|
|
</button>
|
|
|
|
</div>
|
2023-12-28 20:08:26 +00:00
|
|
|
<div class="btn-group">
|
|
|
|
<select class="form-control" v-model="ticket.state">
|
|
|
|
<option v-for="status in state_options" :value="status.value">{{ status.text }}</option>
|
|
|
|
</select>
|
2024-01-13 00:40:37 +00:00
|
|
|
<button class="form-control btn btn-success" @click="changeTicketStatus(ticket)">
|
|
|
|
Change Status
|
|
|
|
</button>
|
2023-12-28 20:08:26 +00:00
|
|
|
</div>
|
2024-01-07 20:32:42 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import {mapActions, mapState} from 'vuex';
|
|
|
|
import Timeline from "@/components/Timeline.vue";
|
2024-01-13 00:32:59 +00:00
|
|
|
import ClipboardButton from "@/components/inputs/ClipboardButton.vue";
|
2024-01-07 20:32:42 +00:00
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'Ticket',
|
2024-01-13 00:32:59 +00:00
|
|
|
components: {ClipboardButton, Timeline},
|
2024-01-07 20:32:42 +00:00
|
|
|
computed: {
|
2024-01-22 16:21:22 +00:00
|
|
|
...mapState(['tickets', 'state_options', 'users']),
|
2024-01-07 20:32:42 +00:00
|
|
|
ticket() {
|
|
|
|
const id = parseInt(this.$route.params.id)
|
|
|
|
const ret = this.tickets.find(ticket => ticket.id === id);
|
|
|
|
return ret ? ret : {};
|
2024-01-13 00:32:59 +00:00
|
|
|
},
|
|
|
|
shippingEmail() {
|
|
|
|
const domain = document.location.hostname;
|
|
|
|
return `ticket+${this.ticket.uuid}@${domain}`;
|
2024-01-07 20:32:42 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
2024-01-22 16:21:22 +00:00
|
|
|
...mapActions(['deleteItem', 'markItemReturned', 'sendMail', 'updateTicketPartial', 'postComment']),
|
|
|
|
...mapActions(['loadTickets', 'loadUsers', 'fetchTicketStates']),
|
2024-01-07 20:32:42 +00:00
|
|
|
handleMail(mail) {
|
|
|
|
this.sendMail({
|
|
|
|
id: this.ticket.id,
|
|
|
|
message: mail
|
|
|
|
})
|
2023-12-28 20:08:26 +00:00
|
|
|
},
|
2024-01-13 00:40:37 +00:00
|
|
|
handleComment(comment) {
|
|
|
|
this.postComment({
|
|
|
|
id: this.ticket.id,
|
|
|
|
message: comment
|
|
|
|
})
|
|
|
|
},
|
2023-12-28 20:08:26 +00:00
|
|
|
changeTicketStatus(ticket) {
|
|
|
|
this.updateTicketPartial({
|
|
|
|
id: ticket.id,
|
|
|
|
state: ticket.state
|
|
|
|
})
|
2024-01-22 16:21:22 +00:00
|
|
|
},
|
|
|
|
assigTicket(ticket) {
|
|
|
|
this.updateTicketPartial({
|
|
|
|
id: ticket.id,
|
|
|
|
assigned_to: ticket.assigned_to
|
|
|
|
})
|
2024-01-07 20:32:42 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
created() {
|
2023-12-28 20:08:26 +00:00
|
|
|
this.fetchTicketStates()
|
2024-01-07 20:32:42 +00:00
|
|
|
this.loadTickets()
|
2024-01-22 16:21:22 +00:00
|
|
|
this.loadUsers()
|
2024-01-07 20:32:42 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
|
|
</style>
|