mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 14:29:34 +00:00
bug fixes, vyskakovacie okno v kalendari
This commit is contained in:
1 parent
955fdaf087
commit
b5cc4bb977
10 files changed
+77
-11
No files matched your search
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
<Z-master-task-modal ref="z-master-task-modal" @master-task-edited="onMasterTaskEdited" />
|
<Z-master-task-modal ref="z-master-task-modal" @master-task-edited="onMasterTaskEdited" />
|
||||||
<Z-delete-team-member-modal ref="z-delete-team-member-modal" />
|
<Z-delete-team-member-modal ref="z-delete-team-member-modal" />
|
||||||
|
<Z-show-menu-modal ref="z-show-menu-modal" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -32,6 +33,7 @@ import ZBlockerModal from '@/plugins/tm@modal/blocker/z-blocker-modal.vue'
|
|||||||
import ZDeleteMasterTaskModal from '@/plugins/tm@modal/master-task/z-delete-master-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'
|
import ZMasterTaskModal from '@/plugins/tm@modal/master-task/z-master-task-modal.vue'
|
||||||
import ZDeleteTeamMemberModal from '@/plugins/tm@modal/master-task/z-delete-team-member-modal.vue'
|
import ZDeleteTeamMemberModal from '@/plugins/tm@modal/master-task/z-delete-team-member-modal.vue'
|
||||||
|
import ZShowMenuModal from '@/plugins/tm@modal/task-cell/z-show-menu-modal.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -45,10 +47,15 @@ export default {
|
|||||||
ZTaskAddTimeModal,
|
ZTaskAddTimeModal,
|
||||||
ZBlockerModal,
|
ZBlockerModal,
|
||||||
ZDeleteMasterTaskModal,
|
ZDeleteMasterTaskModal,
|
||||||
ZDeleteTeamMemberModal
|
ZDeleteTeamMemberModal,
|
||||||
|
ZShowMenuModal
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.$events.on('show-menu-modal', () => {
|
||||||
|
this.$refs['z-show-menu-modal'].showModal()
|
||||||
|
})
|
||||||
|
|
||||||
this.$events.on('show-delete-team-modal', ({team}) => {
|
this.$events.on('show-delete-team-modal', ({team}) => {
|
||||||
this.$refs['z-delete-team-modal'].showModal({ team })
|
this.$refs['z-delete-team-modal'].showModal({ team })
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<rect width="16" height="16" fill="white"/>
|
|
||||||
<path d="M2 7.82843L4.82843 10.6569L10.4853 5" stroke="black" stroke-opacity="0.87" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M2 7.82843L4.82843 10.6569L10.4853 5" stroke="black" stroke-opacity="0.87" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
<rect x="7.03906" y="7.61621" width="1.09208" height="1.7726" transform="rotate(45 7.03906 7.61621)" fill="white"/>
|
<rect x="7.03906" y="7.61621" width="1.09208" height="1.7726" transform="rotate(45 7.03906 7.61621)" fill="white"/>
|
||||||
<path d="M6 7.82843L8.82843 10.6569L14.4853 5" stroke="black" stroke-opacity="0.87" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M6 7.82843L8.82843 10.6569L14.4853 5" stroke="black" stroke-opacity="0.87" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 529 B After Width: | Height: | Size: 485 B |
@@ -64,6 +64,7 @@ transition-group.vuecal__cell(
|
|||||||
<script>
|
<script>
|
||||||
import Event from './event.vue'
|
import Event from './event.vue'
|
||||||
import tmUtils from '@/plugins/tm@_utils/tm.utils'
|
import tmUtils from '@/plugins/tm@_utils/tm.utils'
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
inject: ['vuecal', 'utils', 'modules', 'view', 'domEvents'],
|
inject: ['vuecal', 'utils', 'modules', 'view', 'domEvents'],
|
||||||
@@ -259,7 +260,17 @@ export default {
|
|||||||
dateFrom.setHours(Math.floor(DOMEvent.offsetY / 100), 0, 0, 0)
|
dateFrom.setHours(Math.floor(DOMEvent.offsetY / 100), 0, 0, 0)
|
||||||
const dateTo = new Date(dateFrom)
|
const dateTo = new Date(dateFrom)
|
||||||
dateTo.setHours(dateFrom.getHours() + 1)
|
dateTo.setHours(dateFrom.getHours() + 1)
|
||||||
this.$events.emit('show-subtask-modal', {})
|
|
||||||
|
const splitDate = split.date
|
||||||
|
|
||||||
|
const time = moment(splitDate).format('hh:mm')
|
||||||
|
const date = moment(splitDate).format('YYYY-MM-DD') // dd.MM.yyyy
|
||||||
|
|
||||||
|
console.log(time)
|
||||||
|
console.log(date)
|
||||||
|
|
||||||
|
this.$events.emit('show-menu-modal', {})
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.$events.emit('add-timeblock', {
|
this.$events.emit('add-timeblock', {
|
||||||
id: null,
|
id: null,
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ export default {
|
|||||||
...event.subtask,
|
...event.subtask,
|
||||||
timeblocks: [...event.subtask.timeblocks, {
|
timeblocks: [...event.subtask.timeblocks, {
|
||||||
id: event._timeblock_id,
|
id: event._timeblock_id,
|
||||||
|
is_finished: 0,
|
||||||
start: tmUtils.formatDateTimeForBackend(start),
|
start: tmUtils.formatDateTimeForBackend(start),
|
||||||
end: tmUtils.formatDateTimeForBackend(end)
|
end: tmUtils.formatDateTimeForBackend(end)
|
||||||
}]
|
}]
|
||||||
|
|||||||
@@ -4,10 +4,8 @@
|
|||||||
|
|
||||||
<v-select v-model="filter.teamId" class="subheader-input" :items="[null, ...teams]" label="Tím" variant="outlined" item-title="name" item-value="id" />
|
<v-select v-model="filter.teamId" class="subheader-input" :items="[null, ...teams]" label="Tím" variant="outlined" item-title="name" item-value="id" />
|
||||||
|
|
||||||
<!-- <v-select v-model="filter.employeeId" class="subheader-input" :items="[null, ...enrichedEmployees]" label="Zamestnanec" variant="outlined" item-title="_fullName" item-value="id" /> -->
|
|
||||||
<v-autocomplete v-model="filter.employeeId" class="subheader-input" :items="[...enrichedEmployees]" item-title="_fullName" item-value="id" label="Zamestnanec" variant="outlined" />
|
<v-autocomplete v-model="filter.employeeId" class="subheader-input" :items="[...enrichedEmployees]" item-title="_fullName" item-value="id" label="Zamestnanec" variant="outlined" />
|
||||||
|
|
||||||
<!-- <v-select v-model="filter.createdById" class="subheader-input" :items="[null, ...enrichedEmployees]" label="Vytvoril" variant="outlined" item-title="_fullName" item-value="id" /> -->
|
|
||||||
<v-autocomplete v-model="filter.createdById" class="subheader-input" :items="[...enrichedEmployees]" label="Vytvoril" variant="outlined" item-title="_fullName" item-value="id" />
|
<v-autocomplete v-model="filter.createdById" class="subheader-input" :items="[...enrichedEmployees]" label="Vytvoril" variant="outlined" item-title="_fullName" item-value="id" />
|
||||||
|
|
||||||
<v-select v-model="filter.month" class="subheader-input" :items="months" label="Mesiac" variant="outlined" />
|
<v-select v-model="filter.month" class="subheader-input" :items="months" label="Mesiac" variant="outlined" />
|
||||||
|
|||||||
@@ -43,8 +43,8 @@ export default {
|
|||||||
|
|
||||||
this.mastertask.employees = this.mastertask.employees.map(employee => {
|
this.mastertask.employees = this.mastertask.employees.map(employee => {
|
||||||
if (typeof employee.duration == 'string') {
|
if (typeof employee.duration == 'string') {
|
||||||
totalDuration += parseInt(employee.duration)
|
totalDuration += parseFloat(employee.duration)
|
||||||
employee.duration = parseInt(employee.duration)
|
employee.duration = parseFloat(employee.duration)
|
||||||
}
|
}
|
||||||
else if (typeof employee.duration == 'number') {
|
else if (typeof employee.duration == 'number') {
|
||||||
totalDuration += employee.duration
|
totalDuration += employee.duration
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog v-model="visible" max-width="750">
|
||||||
|
<v-card>
|
||||||
|
<div class="d-flex justify-space-between align-center">
|
||||||
|
<h1>
|
||||||
|
Vytvoriť
|
||||||
|
</h1>
|
||||||
|
<v-icon @click.stop="closeModal()" icon="mdi-close" size="large"></v-icon>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<v-card-actions class="mt-10 d-flex justify-start align-center">
|
||||||
|
<v-btn class="button primary half outline" @click.stop="createTeam()">TÍM</v-btn>
|
||||||
|
<v-btn class="button primary half outline" @click.stop="createBlocker()">BLOCKER</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
emits: ['update'],
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async showModal() {
|
||||||
|
this.visible = true
|
||||||
|
},
|
||||||
|
|
||||||
|
closeModal() {
|
||||||
|
this.visible = false
|
||||||
|
},
|
||||||
|
|
||||||
|
createTeam() {
|
||||||
|
this.$events.emit('show-team-modal', {})
|
||||||
|
},
|
||||||
|
|
||||||
|
createBlocker() {
|
||||||
|
this.$events.emit('show-blocker-modal', {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -81,7 +81,7 @@ export default {
|
|||||||
validations() {
|
validations() {
|
||||||
return {
|
return {
|
||||||
form: {
|
form: {
|
||||||
hours: {required, numeric, minValue: minValue(1)}
|
hours: {required, numeric, minValue: minValue(0.1)}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -96,7 +96,7 @@ export default {
|
|||||||
subtask.timesheets.push({
|
subtask.timesheets.push({
|
||||||
id: null,
|
id: null,
|
||||||
employee_id: subtask.employee_id,
|
employee_id: subtask.employee_id,
|
||||||
time: typeof this.form.hours == 'string' ? parseInt(this.form.hours) : this.form.hours
|
time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours
|
||||||
})
|
})
|
||||||
|
|
||||||
this._update(subtask)
|
this._update(subtask)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export default {
|
|||||||
validations() {
|
validations() {
|
||||||
return {
|
return {
|
||||||
form: {
|
form: {
|
||||||
hours: {required, numeric, minValue: minValue(1)}
|
hours: {required, numeric, minValue: minValue(0.1)}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -57,7 +57,7 @@ export default {
|
|||||||
this.subtask.timesheets.push({
|
this.subtask.timesheets.push({
|
||||||
id: null,
|
id: null,
|
||||||
employee_id: this.subtask.employee_id,
|
employee_id: this.subtask.employee_id,
|
||||||
time: typeof this.form.hours == 'string' ? parseInt(this.form.hours) : this.form.hours
|
time: typeof this.form.hours == 'string' ? parseFloat(this.form.hours) : this.form.hours
|
||||||
})
|
})
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ import VuetifyFixFocusMixin from "@/plugins/tm@modal/_mixins/vuetify-fix-focus"
|
|||||||
import SelectsMixin from "../master-task/_mixins/selects.mixin"
|
import SelectsMixin from "../master-task/_mixins/selects.mixin"
|
||||||
import * as FileSaver from "file-saver"
|
import * as FileSaver from "file-saver"
|
||||||
import tmUtils from "@/plugins/tm@_utils/tm.utils"
|
import tmUtils from "@/plugins/tm@_utils/tm.utils"
|
||||||
|
import moment from 'moment'
|
||||||
import "@vueup/vue-quill/dist/vue-quill.snow.css"
|
import "@vueup/vue-quill/dist/vue-quill.snow.css"
|
||||||
|
|
||||||
import ZTaskReadonlyInfo from "./_components/z-task-readonly-info.vue"
|
import ZTaskReadonlyInfo from "./_components/z-task-readonly-info.vue"
|
||||||
@@ -222,6 +223,8 @@ export default {
|
|||||||
this._mergeDeadlineTimeDate()
|
this._mergeDeadlineTimeDate()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
this.subtask.deadline = moment(this.subtask.deadline).format('YYYY-MM-DD HH:MM:SS')
|
||||||
|
|
||||||
if (this.subtask?.id) {
|
if (this.subtask?.id) {
|
||||||
const { subtask } = await this.$axios.put_auth(`v1/subtasks/${this.subtask.id}`, this.subtask)
|
const { subtask } = await this.$axios.put_auth(`v1/subtasks/${this.subtask.id}`, this.subtask)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user