[z-delete-masterTask-modal, spenTime formatted, addSubTask, style team in subTask detail]

This commit is contained in:
romankko2 committed 2023-02-02 19:14:50 +01:00
1 parent 5eea588984
commit 2c4299616d
8 files changed
+110 -63

No files matched your search

+14 -4
View File
@@ -9,7 +9,8 @@
<Z-delete-team-modal ref="z-delete-team-modal" @update="onTeamUpdate" />
<Z-task-modal ref="z-task-modal" />
<Z-delete-task-modal ref="z-delete-task-modal" @update="onTaskDeleted" />
<Z-delete-task-modal ref="z-delete-task-modal" @on-task-deleted="onTaskDeleted" />
<Z-delete-master-task-modal ref="z-delete-master-task-modal" />
<Z-complete-task-modal ref="z-complete-task-modal" />
<Z-task-add-time-modal ref="z-task-add-time-modal" />
<Z-blocker-modal ref="z-blocker-modal" />
@@ -25,7 +26,7 @@ import ZTaskModal from '@/plugins/tm@modal/task/z-task-modal.vue'
import ZCompleteTaskModal from '@/plugins/tm@modal/task/z-complete-task-modal.vue'
import ZTaskAddTimeModal from '@/plugins/tm@modal/task/z-task-add-time-modal.vue'
import ZBlockerModal from '@/plugins/tm@modal/blocker/z-blocker-modal.vue'
// import ZDeleteMasterTaskModal from '@/plugins/tm@modal/master-task/z-delete-task-modal.vue'
import ZDeleteMasterTaskModal from '@/plugins/tm@modal/master-task/z-delete-master-task-modal.vue'
import ZMasterTaskModal from '@/plugins/tm@modal/master-task/z-master-task-modal.vue'
export default {
@@ -37,7 +38,8 @@ export default {
ZMasterTaskModal,
ZCompleteTaskModal,
ZTaskAddTimeModal,
ZBlockerModal
ZBlockerModal,
ZDeleteMasterTaskModal
},
mounted() {
@@ -53,6 +55,10 @@ export default {
this.$refs['z-delete-task-modal'].showModal(task)
})
this.$events.on('show-delete-master-task-modal', ({masterTask}) => {
this.$refs['z-delete-master-task-modal'].showModal(masterTask)
})
this.$events.on('show-task-modal', ({task, editMode}) => {
this.$refs['z-task-modal'].showModal(task, editMode)
})
@@ -77,11 +83,15 @@ export default {
methods: {
onTeamUpdate(team) {
this.$events.emit('on-team-deleted', team)
this.$events.emit('on-team-update', team)
},
onTaskDeleted(task) {
this.$events.emit('on-task-deleted', task)
},
onMasterTaskDeleted(masterTask){
this.$events.emit('on-master-task-deleted', masterTask)
}
}
}
@@ -50,28 +50,13 @@
</div>
</div>
<!-- <Z-master-task-modal ref="z-master-task-modal" />
<Z-sub-task-modal ref="z-sub-task-modal" />
<Z-blocker-modal ref="z-blocker-modal" />
<Z-team-modal ref="z-team-modal" /> -->
</v-app-bar>
</template>
<script>
import { mapGetters } from 'vuex'
// import ZTeamModal from '@/plugins/tm@modal/team/z-team-modal.vue'
// import ZBlockerModal from '@/plugins/tm@modal/blocker/z-blocker-modal.vue'
// import ZMasterTaskModal from '@/plugins/tm@modal/master-task/z-master-task-modal.vue'
// import ZSubTaskModal from '@/plugins/tm@modal/sub-task/z-sub-task-modal.vue'
export default {
// components: {
// ZTeamModal,
// ZBlockerModal,
// ZMasterTaskModal,
// ZSubTaskModal
// },
data() {
return {
search: ''
@@ -1,19 +1,16 @@
.modal-header
flex: 0 0 auto
.trash-icon
.icon
padding: 10px
background: rgba(0, 0, 0, 0.04)
border-radius: 50%
&:hover
cursor: pointer
&.trash
margin-left: 12px
border-radius: 50%
cursor: pointer
.pencil-icon
padding: 10px
background: rgba(0, 0, 0, 0.04)
border-radius: 50%
cursor: pointer
.modal-input
width: 100% !important
@@ -0,0 +1,54 @@
<template>
<v-dialog v-model="visible" max-width="650">
<v-card>
<div class="d-flex justify-space-between align-center">
<h1>Ste si istý, že chcete zmazať <b>{{ masterTask.name }}</b>?</h1>
<v-icon
@click.stop="closeModal()"
icon="mdi-close"
size="large"
class="mb-15"
></v-icon>
</div>
<v-card-actions class="mt-10 d-flex justify-start align-center">
<v-btn class="button primary half" variant="flat" @click="deleteMasterTask()">ÁNO</v-btn>
<v-btn class="button primary half outline" @click.stop="closeModal()">ZRUŠIŤ</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</template>
<script>
export default {
emits: ['on-master-task-deleted'],
data() {
return {
visible: false,
masterTask: null
}
},
methods: {
async showModal(masterTask) {
this.masterTask = masterTask
this.visible = true
},
closeModal() {
this.visible = false
},
async deleteMasterTask() {
try {
await this.$axios.delete(`v1/mastertasks/${this.masterTask.id}`)
this.$emit('on-master-task-deleted', this.masterTask)
this.closeModal()
} catch (error) {
this.$toast.error(error)
}
}
}
}
</script>
@@ -133,8 +133,8 @@
<div class="d-flex justify-space-between align-center modal-header border-bottom pb-4">
<h1>{{ masterTask.name }}</h1>
<div class="d-flex justify-start">
<img class="pencil-icon" :src="require('@/plugins/tm@overview/_img/pencil-icon.svg')" alt="pencil-icon" @click.stop="editMode = !editMode" />
<img class="trash-icon" :src="require('@/plugins/tm@overview/_img/trash-icon.svg')" alt="trash-icon" @click.stop="_delete()"/>
<img class="icon" :src="require('@/plugins/tm@overview/_img/pencil-icon.svg')" alt="pencil-icon" @click.stop="editMode = !editMode" />
<img class="icon trash" :src="require('@/plugins/tm@overview/_img/trash-icon.svg')" alt="trash-icon" @click.stop="openDeleteMasterTaskModal(masterTask)" />
</div>
</div>
@@ -177,9 +177,9 @@
</v-sheet>
</v-col>
</v-row>
<v-row no-gutters class="align-center">
<v-row no-gutters>
<v-col cols="5">
<v-sheet class="pa-2 ma-2">
<v-sheet class="pa-2 ma-2 pt-0">
<div class="d-flex align-center">
<v-icon
icon="mdi-account-multiple-outline"
@@ -190,9 +190,9 @@
</v-sheet>
</v-col>
<v-col cols="7">
<v-sheet class="ma-2 d-flex scroll-employees">
<p class="task-badge px-4 py-2 rounded-pill flex-shrink-0">{{ masterTask.team }}</p>
<div class="d-flex align-center flex-shrink-0 mx-3" v-for="(employee, index) in masterTask.employees" :key="employee.id">
<v-sheet class="d-flex flex-wrap flex-column">
<p class="task-badge px-4 py-2 rounded-pill flex-shrink-0">Tu bude vypisany nazov Timu</p>
<div class="d-flex align-center flex-shrink-0 mt-2 task-badge px-4 py-2 rounded-pill" v-for="(employee, index) in masterTask.employees" :key="employee.id">
<p class="employee-selected-avatar d-flex justify-center align-center">
{{ employee.name.charAt(0) + employee.surname.charAt(0) }}
</p>
@@ -273,14 +273,14 @@
</div>
<v-table class="mt-7 mb-5">
<tbody class="px-5 py-5">
<!-- Kravarik: natiahnut toto z masterTask.tasks -->
<tr v-for="(employee, index) in masterTask.employees" :key="employee.id">
<td class="w-25">{{ masterTask.name }}</td>
<tr v-for="task in masterTask.subtasks" :key="task.id">
<td class="w-25">{{ task.master_task }}</td>
<td class="d-flex align-center">
<p class="employee-selected-avatar d-flex justify-center align-center">
{{ employee.name.charAt(0) + employee.surname.charAt(0) }}
<!-- {{ task.name.charAt(0) + employee.surname.charAt(0) }} -->IN
</p>
<p class="ml-2" v-html="`${masterTask.employees[index].name} ${masterTask.employees[index].surname}`" />
<!-- <p class="ml-2" v-html="`${masterTask.task[index].name} ${masterTask.task[index].surname}`" /> -->
<p>Meno zamestnanca</p>
</td>
<td class="task-action">
<div class="d-flex justify-start">
@@ -293,7 +293,7 @@
</tbody>
</v-table>
<div class="d-flex align-center ">
<v-btn class="subtask-btn w-100"><v-icon class="mx-1" icon="mdi-plus" />Pridať Subtask</v-btn>
<v-btn class="subtask-btn w-100" @click="addTask()" ><v-icon class="mx-1" icon="mdi-plus" />Pridať Subtask</v-btn>
</div>
</div>
</v-card-actions>
@@ -358,6 +358,12 @@ export default {
}
},
mounted() {
this.$events.on('on-master-task-deleted', (masterTask) => {
if (masterTask?.id == this.masterTask?.id) this.closeModal()
})
},
methods: {
itemSelected(x) {
console.log(x)
@@ -385,7 +391,6 @@ export default {
} catch (error) {
this.$toast.error(error)
}
console.log(this.masterTask)
},
async save() {
@@ -410,15 +415,8 @@ export default {
this.$emit('close', this.masterTask)
},
async _delete() {
// Kravarik: Tu sa ma volat delete-master-task-modal, ak taka funkcionalita vlastne je
// try {
// await this.$axios.delete(`v1/master-tasks/${this.masterTask.id}`)
// this.closeModal()
// } catch (error) {
// this.$toast.error(error)
// }
openDeleteMasterTaskModal(masterTask) {
this.$events.emit('show-delete-master-task-modal', { masterTask })
},
employeeSelected(selectedOption) {
@@ -429,7 +427,11 @@ export default {
filesUploaded(files) {
this.masterTask.files = files
}
},
addTask() {
this.$events.emit('show-task-modal', {})
},
},
computed: {
@@ -502,9 +504,6 @@ export default {
.scrolling
overflow: hidden !important
.scroll-employees
overflow-x: scroll
.border-bottom
border-bottom: 1px solid rgba(0,0,0,.1)
@@ -8,6 +8,7 @@
@click.stop="closeModal()"
icon="mdi-close"
size="large"
class="mb-15"
></v-icon>
</div>
<v-card-actions class="mt-10 d-flex justify-start align-center">
@@ -20,7 +21,7 @@
<script>
export default {
emits: ['deleted'],
emits: ['on-task-deleted'],
data() {
return {
@@ -42,7 +43,7 @@ export default {
async deleteTask() {
try {
await this.$axios.delete(`v1/tasks/${this.task.id}`)
this.$emit('deleted', this.task)
this.$emit('on-task-deleted', this.task)
this.closeModal()
} catch (error) {
this.$toast.error(error)
@@ -103,13 +103,13 @@
<h1>{{ task.title }}</h1>
<div class="d-flex justify-start">
<img
class="pencil-icon"
class="icon"
:src="require('@/plugins/tm@overview/_img/pencil-icon.svg')"
alt="pencil-icon"
@click.stop="editMode = !editMode"
/>
<img
class="trash-icon"
class="icon trash"
:src="require('@/plugins/tm@overview/_img/trash-icon.svg')"
alt="trash-icon"
@click.stop="openDeleteTaskModal(task)"
@@ -232,7 +232,7 @@
</v-col>
<v-col cols="7">
<v-sheet class="ma-2">
<p>{{ task.duration / 3600 }} h</p>
<p>{{ (task.duration / 3600000).toFixed(2) }} h</p>
</v-sheet>
</v-col>
</v-row>
@@ -275,7 +275,7 @@
<v-col cols="7">
<v-sheet class="ma-2">
<p>
{{ (task.duration - task.spent_time) / 3600 }} h
{{ ((task.duration / 3600000) - (task.spent_time)).toFixed(2) }} h
</p>
</v-sheet>
</v-col>
@@ -399,6 +399,7 @@ export default {
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: {}}
}
+1 -1
View File
@@ -23,7 +23,7 @@ export default {
},
mounted() {
this.$events.on('on-team-deleted', () => this._loadData())
this.$events.on('on-team-update', () => this._loadData())
},
methods: {