bton/dev #69

Merged
j3d1 merged 5 commits from bton/dev into jedi/dev 2024-11-03 19:59:20 +00:00
5 changed files with 57 additions and 15 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "web/extras"]
path = web/extras
url = https://git.neulandlabor.de/j3d1/vue-extras.git

View file

@ -0,0 +1,20 @@
# Generated by Django 4.2.7 on 2024-11-03 18:30
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('inventory', '0004_alter_event_created_at_alter_item_created_at'),
('mail', '0004_alter_emailattachment_file'),
]
operations = [
migrations.AlterField(
model_name='eventaddress',
name='event',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='addresses', to='inventory.event'),
),
]

1
deploy/dev/.backend.env Normal file
View file

@ -0,0 +1 @@
HTTP_HOST=core

View file

@ -130,4 +130,4 @@ export default {
transform: translate(24px, 0); transform: translate(24px, 0);
} }
} }
</style> </style>

View file

@ -15,21 +15,25 @@
Delete Delete
</button--> </button-->
<div class="btn-group"> <div class="btn-group">
<select class="form-control" v-model="ticket.assigned_to"> <select class="form-control" v-model="selected_assignee">
<option v-for="user in users" :value="user.username">{{ user.username }}</option> <option v-for="user in users" :value="user.username">{{ user.username }}</option>
</select> </select>
<button class="form-control btn btn-success" @click="assignTicket(ticket)"> <button class="form-control btn btn-success"
Assign&nbsp;Ticket @click="assignTicket(ticket)"
:disabled="!selected_assignee || (selected_assignee == ticket.assigned_to)">
Assign&nbsp;Ticket
</button> </button>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<select class="form-control" v-model="ticket.state"> <select class="form-control" v-model="selected_state">
<option v-for="status in state_options" :value="status.value">{{ <option v-for="status in state_options" :value="status.value">{{
status.text status.text
}} }}
</option> </option>
</select> </select>
<button class="form-control btn btn-success" @click="changeTicketStatus(ticket)"> <button class="form-control btn btn-success"
@click="changeTicketStatus(ticket)"
:disabled="(selected_state == ticket.state)">
Change&nbsp;Status Change&nbsp;Status
</button> </button>
</div> </div>
@ -69,11 +73,23 @@ export default {
name: 'Ticket', name: 'Ticket',
components: {AsyncLoader, ClipboardButton, Timeline}, components: {AsyncLoader, ClipboardButton, Timeline},
data() { data() {
return { return {
shipping_voucher_type: null selected_state: null,
selected_assignee: null,
shipping_voucher_type: null,
} }
}, },
computed: { watch: {
ticket(val) {
if (this.selected_state == null){
this.selected_state = val.state;
};
if(this.selected_assignee == null){
this.selected_assignee = val.assigned_to
}
}
},
computed: {
...mapState(['tickets', 'state_options', 'users']), ...mapState(['tickets', 'state_options', 'users']),
...mapGetters(['availableShippingVoucherTypes']), ...mapGetters(['availableShippingVoucherTypes']),
ticket() { ticket() {
@ -85,7 +101,7 @@ export default {
const domain = document.location.hostname; const domain = document.location.hostname;
return `ticket+${this.ticket.uuid}@${domain}`; return `ticket+${this.ticket.uuid}@${domain}`;
} }
}, },
methods: { methods: {
...mapActions(['deleteItem', 'markItemReturned', 'sendMail', 'updateTicketPartial', 'postComment']), ...mapActions(['deleteItem', 'markItemReturned', 'sendMail', 'updateTicketPartial', 'postComment']),
...mapActions(['loadTickets', 'fetchTicketStates', 'loadUsers', 'scheduleAfterInit']), ...mapActions(['loadTickets', 'fetchTicketStates', 'loadUsers', 'scheduleAfterInit']),
@ -103,15 +119,17 @@ export default {
}) })
}, },
changeTicketStatus(ticket) { changeTicketStatus(ticket) {
this.updateTicketPartial({ ticket.state = this.selected_state;
this.updateTicketPartial({
id: ticket.id, id: ticket.id,
state: ticket.state state: this.selected_state,
}) })
}, },
assignTicket(ticket) { assignTicket(ticket) {
this.updateTicketPartial({ ticket.assigned_to = this.selected_assignee;
this.updateTicketPartial({
id: ticket.id, id: ticket.id,
assigned_to: ticket.assigned_to assigned_to: this.selected_assignee
}) })
}, },
}, },
@ -124,4 +142,4 @@ export default {
<style scoped> <style scoped>
</style> </style>