[Task modal, subtask modal] BE

This commit is contained in:
Matej Glasnák committed 2023-02-10 03:38:54 +01:00
1 parent 37331335ce
commit 1024f73ab5
12 files changed
+477 -489

No files matched your search

+46 -38
View File
@@ -19,31 +19,32 @@
<!-- Toto treba fixnut -->
<v-select
v-model="masterTaskIdSelect"
v-model="task.master_task.id"
@focus="onInputFocus"
class="modal-input border-select"
label="MasterTask"
label="Master task"
variant="solo"
:items="masterTasks"
:class="{ error: v$.task.master_task.id.$errors.length }"
item-value="id"
item-title="name"
></v-select>
<v-select
v-model="employeeIdSelect"
v-model="task.employee_id"
@focus="onInputFocus"
class="modal-input border-select"
label="Priradený"
:class="{ error: v$.task.employee_id.$errors.length }"
variant="solo"
:items="employees"
:items="filteredEmployees"
item-value="id"
item-title="_fullName"
></v-select>
<Datepicker
<!-- <Datepicker
class="modal-input mb-5"
v-model="task.date"
v-model="task.timeblocks"
format="dd.MM.yyyy, HH:mm"
locale="sk"
:class="{ error: v$.task.date.$errors.length }"
@@ -53,7 +54,7 @@
cancel-text="Zrušiť"
placeholder="Trvanie od - do"
range
/>
/> -->
<v-text-field
v-model="task.duration"
@@ -71,12 +72,14 @@
append-inner-icon="mdi-clock-outline"
></v-text-field>
<div class="w-100 modal-input">
<div class="w-100 modal-input" :class="{ error: v$.task.description.$errors.length }">
<QuillEditor
ref="description"
v-model="task.description"
placeholder="Popis"
theme="snow"
class="rich-text-editor"
@input="task.description = $event.srcElement.innerHTML"
/>
</div>
@@ -394,29 +397,34 @@ export default {
v$: useVuelidate(),
preventInputFocus: false,
masterTasks: [],
employees: null,
masterTaskIdSelect: null,
employeeIdSelect: null,
showDatePicker: false,
selectedNewDate: []
}
},
computed: {
employees() {
if (!this.task?.master_task?.employees)
filteredEmployees() {
if (!this.employees || !this.task?.master_task)
return []
return tmUtils.enrichEmployeesByFullName(this.task.master_task.employees)
const selectedEmployees = this.task.master_task.employees?.map(employee => employee.id) || []
const filteredEmployees = this.employees.filter(employee => !selectedEmployees.includes(employee.id))
return tmUtils.enrichEmployeesByFullName(filteredEmployees)
}
},
validations() {
return {
task: {
date: { required },
// team_id: { required },
description: { required },
master_task: {
id: { required }
},
duration: { required },
employee_id: { required },
employee_id: { required }
}
}
},
@@ -428,32 +436,28 @@ export default {
},
methods: {
async showModal(task, editMode = false, masterTask = null) {
async showModal(task, editMode = false, masterTask = {}) {
this.v$.$reset()
this.visible = true
this.task = null
this.employeeIdSelect = null
this.masterTaskIdSelect = null
try {
this.masterTasks = await this.$axios.get_auth_data('v1/mastertasks')
this.masterTasks = await this.$axios.get_auth_data('v1/mastertasks')
this.employees = await this.$axios.get_auth_data('v1/employees')
if (task?.id) {
const t = await this.$axios.get_auth_data(`v1/subtasks/${task.id}`)
t.master_task = this.masterTasks.find(mt => mt.id == t.master_task_id)
t.employee = t.master_task.employees.find(e => t.employee_id == e.id)
t.employee = this.employees.find(employee => employee.id == t.employee_id)
this.employeeIdSelect = t.employee.id
this.masterTaskIdSelect = t.master_task.id
this.task = t
this.task.spent_time = ((t.spent_time) / 3600000).toFixed(2)
} else {
this.task = {master_task: masterTask}
this.masterTaskIdSelect = masterTask ? masterTask.id : null
this.masterTaskIdSelect = masterTask.id
}
console.log(this.task)
this.editMode = (editMode || !this.task.id)
} catch (error) {
this.$toast.error(error)
@@ -468,14 +472,17 @@ export default {
if (!(await this.v$.$validate()))
return
this.task.description = this.$refs['description'].getHTML()
try {
if (this.task?.id) {
await this.$axios.put_auth(`v1/mastertasks/subtasks/${this.task.id}`, this.task)
this.$events.emit('on-task-edited', this.task)
await this.$axios.put_auth_data(`v1/subtasks/${this.task.id}`, this.task)
} else {
await this.$axios.post_auth(`v1/mastertasks/${this.task.master_task.id}/subtasks`, this.task)
const { subtask } = await this.$axios.post_auth(`v1/mastertasks/${this.task.master_task.id}/subtasks`, this.task)
this.task.id = subtask.id
}
this.$events.emit('on-task-edited', this.task)
this.closeModal()
} catch (error) {
this.$toast.error(error)
@@ -519,20 +526,21 @@ export default {
masterTaskIdSelect(value) {
if (!value || !this.task) return
this.task.master_task = this.masterTasks.find(masterTask => masterTask.id == value)
const selectedMasterTask = this.masterTasks.find(masterTask => masterTask.id === value)
if (selectedMasterTask) {
this.task.project_code = selectedMasterTask.project_code
}
this.task.master_task = this.masterTasks.find(masterTask => masterTask.id == value)
this.task.project_code = this.task.master_task.project_code
},
employeeIdSelect(value) {
if (!value || !this.task) return
this.task.employee = this.task.master_task.employees.find(employee => employee.id == value)
this.task.employee_id = value
'task.employee_id'(value) {
if (!value) return
this.task.employee = this.employees.find(employee => employee.id == value)
},
},
editMode() {
this.$nextTick(() => {
this.$refs['description']?.setHTML(this.task.description || '')
})
}
}
}
</script>