mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 14:29:34 +00:00
[Task modal, subtask modal] BE
This commit is contained in:
1 parent
37331335ce
commit
1024f73ab5
12 files changed
+477
-489
No files matched your search
@@ -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>
|
||||
|
||||
|
||||
Reference in new issue
Block a user