fixed "Booking Users"

This commit is contained in:
Paolo Arena
2021-10-04 15:55:43 +02:00
parent 76918f6b2c
commit 1a9a81a1ba
20 changed files with 145 additions and 88 deletions

View File

@@ -13,7 +13,7 @@
:dense="dense"
mask="####-##-## ##:##"
debounce="500"
@input="changeval"
@update:model-value="changeval"
:input-class="getclass()"
>
</q-input>

View File

@@ -4,7 +4,7 @@ import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { useQuasar } from 'quasar'
import { colors, Screen, Platform, date } from 'quasar'
import { EState, IBookedEvent, IBookedEventPage, IEvents, IMessage, IMessagePage } from '@model'
import { EState, IBookedEvent, IBookedEventPage, IEvents, IMessage, IMessagePage, IParamDialog } from '@model'
import { Logo } from '../logo'
import { Footer } from '../Footer'
import { CTitle } from '../CTitle'
@@ -25,6 +25,8 @@ import { useCalendarStore } from '@store/CalendarStore'
import { func_tools, toolsext } from '@store/Modules/toolsext'
import { useMessageStore } from '@store/MessageStore'
import { static_data } from '@/db/static_data'
import { lists } from '@store/Modules/lists'
import translate from '@/globalroutines/util'
export default defineComponent({
name: 'CEventsCalendar',
@@ -441,6 +443,61 @@ export default defineComponent({
tools.CancelEvent($q, eventparam)
}
function executefunc(mythisq: any, table: string, func: number, par: IParamDialog) {
if (func === lists.MenuAction.DELETE) {
// console.log('param1', par.param1)
calendarStore.CancelBookingEvent({
ideventbook: par.param1,
notify: par.param2 === true ? '1' : '0',
}).then((ris: any) => {
if (ris) {
tools.showPositiveNotif(mythisq, t('cal.canceledbooking') + ' "' + par.param3 + '"')
if (bookEventpage.value)
bookEventpage.value.show = false
} else {
tools.showNegativeNotif(mythisq, t('cal.cancelederrorbooking'))
}
})
}
}
function CancelBookingEvent(mythisq: any, eventparam: IEvents, bookeventid: string, notify: boolean, mythis?: any) {
const mytitle = translate('cal.titlebooking')
const mytext = translate('cal.cancelbooking') + ' ' + tools.gettextevent(eventparam) + '?'
const ok = translate('dialog.yes')
const funcok = lists.MenuAction.DELETE
const table = ''
const funccancel = 0
const par = {
param1: bookeventid,
param2: notify,
param3: eventparam.title,
}
console.log('CancelBookingEvent ', eventparam)
return $q.dialog({
message: mytext,
html: true,
ok: {
label: ok,
push: true,
},
title: mytitle,
cancel: true,
persistent: false,
}).onOk(() => {
// console.log('OK')
executefunc($q, table, funcok, par)
return true
}).onCancel(() => {
// console.log('CANCEL')
executefunc($q, table, funccancel, par)
return false
})
}
function duplicateEvent(eventparam: any, numgg: number, numev = 1) {
for (let i = 0; i < numev; ++i) {
globalStore.DuplicateRec({ table: costanti.TABEVENTS, id: eventparam._id }).then((rec) => {
@@ -962,6 +1019,8 @@ export default defineComponent({
createContribType,
static_data,
editEvent,
EState,
CancelBookingEvent,
}
}
})

View File

@@ -465,12 +465,13 @@
<q-btn
v-if="bookEventpage.state === EState.Modifying" flat :label="$t('cal.cancelbooking')"
color="negative"
@click="tools.CancelBookingEvent($q, myevent, bookEventForm._id, true)"></q-btn>
@click="CancelBookingEvent($q, myevent, bookEventForm._id, true)"></q-btn>
<q-btn
v-if="checkseinviaMsg" flat :label="$t('dialog.sendonlymsg')" color="primary"
v-if="checkseinviaMsg()" flat :label="$t('dialog.sendonlymsg')" color="primary"
@click="sendMsg(myevent)"></q-btn>
<q-btn
v-else :label="getTitleBtnBooking" color="primary" @click="saveBookEvent(myevent)"
v-else
:label="getTitleBtnBooking()" color="primary" @click="saveBookEvent(myevent)"
:disable="!(bookEventpage.state === EState.Creating || hasModifiedBooking)"></q-btn>

View File

@@ -52,7 +52,7 @@
label="Id"
dense
@keyup.enter.stop
@input="save"
@update:model-value="save"
debounce="1000"
autofocus>
</q-input>
@@ -71,7 +71,7 @@
:label="$t('disc.order')"
dense
@keyup.enter.stop
@input="save"
@update:model-value="save"
debounce="1000"
autofocus>
</q-input>-->
@@ -79,7 +79,7 @@
label="Alt"
dense
@keyup.enter.stop
@input="save"
@update:model-value="save"
debounce="1000"
autofocus>
</q-input>-->
@@ -89,7 +89,7 @@
dense
:label="$t('proj.longdescr')"
@keyup.enter.stop
@input="save"
@update:model-value="save"
debounce="1000"
autofocus>
</q-input>

View File

@@ -532,27 +532,9 @@ export default defineComponent({
}
function executefunc(table: string, func: number, par: IParamDialog) {
const globalStore = useGlobalStore()
const calendarStore = useCalendarStore()
function exec_func_table(table: string, func: number, par: IParamDialog) {
if (func === lists.MenuAction.DELETE) {
// console.log('param1', par.param1)
calendarStore.CancelBookingEvent({
ideventbook: par.param1,
notify: par.param2 === true ? '1' : '0',
}).then((ris: any) => {
if (ris) {
tools.showPositiveNotif($q, t('cal.canceledbooking') + ' "' + par.param3 + '"')
//++Todo: Calendar FIX:
// if (myself.bookEventpage)
// myself.bookEventpage.show = false
} else {
tools.showNegativeNotif($q, t('cal.cancelederrorbooking'))
}
})
} else if (func === lists.MenuAction.DELETE_RECTABLE) {
// console.log('param1', par.param1)
if (func === lists.MenuAction.DELETE_RECTABLE) {
globalStore.DeleteRec({ table, id: par.param1 }).then((ris) => {
if (ris) {
ActionAfterYes(func, par.param2, null)
@@ -562,7 +544,6 @@ export default defineComponent({
}
})
} else if (func === lists.MenuAction.DUPLICATE_RECTABLE) {
// console.log('param1', par.param1)
globalStore.DuplicateRec({ table, id: par.param1 }).then((ris) => {
if (ris) {
ActionAfterYes(func, par.param2, ris.data)
@@ -598,11 +579,11 @@ export default defineComponent({
persistent: false,
}).onOk(() => {
// console.log('OK')
executefunc(table, col.action, par)
exec_func_table(table, col.action, par)
return true
}).onCancel(() => {
// console.log('CANCEL')
executefunc(table, funccancel, par)
exec_func_table(table, funccancel, par)
return false
})

View File

@@ -225,7 +225,7 @@
<!--<vue-tel-input
@country-changed="intcode_change"
:value="myvalue"
@input="onInput"
@update:model-value="onInput"
:disabledFetchingCountry="true"
:preferredCountries="tools.getprefCountries"
:placeholder="$t('reg.cell')"

View File

@@ -7,7 +7,7 @@
v-model="myvalue"
autogrow
@keyup.enter.stop
@input="changevalRec"
@update:model-value="changevalRec"
autofocus
:label="col.label">
</q-input>
@@ -20,7 +20,7 @@
:readonly="false"
:minuteinterval="minuteinterval"
:dense="true"
@input="changevalRec"
@update:model-value="changevalRec"
canEdit="true"
@savetoclose="SaveValueInt"
@show="OpenEdit">
@@ -34,7 +34,7 @@
:readonly="false"
:minuteinterval="minuteinterval"
:dense="true"
@input="changevalRec"
@update:model-value="changevalRec"
canEdit="true"
@savetoclose="SaveValueInt"
@show="OpenEdit"
@@ -45,7 +45,7 @@
<q-input
v-model="myvalue" type="number"
autofocus
@input="changevalRec"
@update:model-value="changevalRec"
:label="col.label"
>
@@ -56,7 +56,7 @@
<q-input
v-model="myvalue" type="number"
autofocus
@input="changevalRec"
@update:model-value="changevalRec"
style="max-width: 100px;"
:label="col.label"
>
@@ -76,7 +76,7 @@
<!--<q-input v-model="myvalue" type="number"
autofocus
@input="changevalRec"
@update:model-value="changevalRec"
:label="col.label">
</q-input>
-->
@@ -86,7 +86,7 @@
<CGallery
:gall="row" :listimages="myvalue" :edit="isviewfield()"
@showandsave="Savedb"
@input="changevalRec"
@update:model-value="changevalRec"
>
</CGallery>
@@ -94,7 +94,7 @@
<div v-else-if="col.fieldtype === costanti.FieldType.image">
<CGallery
:gall="row" :listimages="myvalue" :edit="isviewfield()"
@input="changevalRec"
@update:model-value="changevalRec"
@showandsave="Savedb">
</CGallery>
@@ -103,7 +103,7 @@
<CMyChipList
:type="costanti.FieldType.binary"
:value="myvalue"
@input="changevalRec"
@update:model-value="changevalRec"
:options="globalStore.getTableJoinByName(col.jointable)"
:optval="fieldsTable.getKeyByTable(col.jointable)"
:optlab="fieldsTable.getLabelByTable(col.jointable)"
@@ -112,7 +112,7 @@
<!-- Show Value -->
<div v-else-if="col.fieldtype === costanti.FieldType.multiselect">
<CMyChipList
@input="changevalRec"
@update:model-value="changevalRec"
:type="costanti.FieldType.multiselect"
:value="myvalue"
:options="globalStore.getTableJoinByName(col.jointable)"
@@ -122,7 +122,7 @@
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.select">
<CMyChipList
@input="changevalRec"
@update:model-value="changevalRec"
myclass="text-center"
:type="costanti.FieldType.select"
:value="myvalue"
@@ -359,7 +359,7 @@
<!-- <vue-tel-input
@country-changed="intcode_change"
:value="scope.value"
@input="oninput"
@update:model-value="oninput"
:placeholder="$t('reg.cell')"
:enabledCountryCode="true"
inputClasses="clCell"
@@ -385,7 +385,7 @@
:option-label="fieldsTable.getLabelByTable(col.jointable)"
:option-value="fieldsTable.getKeyByTable(col.jointable)"
style="min-width: 150px"
@input="changeCol">
@update:model-value="changeCol">
</q-select>
</div>

View File

@@ -89,6 +89,7 @@ export default defineComponent({
isEventEnabled,
findEventIndex,
UpdateDbByFields,
selected,
}
}

View File

@@ -2,7 +2,7 @@
<div>
<CMyPage
v-if="myevent" :imgbackground="myevent.img" :title="myevent.title" keywords="" description=""
nofooter="true">
:nofooter="true">
<div class="q-mx-md">
<div class="listaev__align_chips q-ma-md">

View File

@@ -13,7 +13,7 @@
dense
label="Altezza"
emit-value map-options
@input="changedim"
@update:model-value="changedim"
></q-select>
</div>

View File

@@ -28,7 +28,7 @@
<!--<q-item-label class="title">Condiviso: {{ shared.numshared }}</q-item-label>
<q-item-label class="title">Rating: {{ shared.rating }}</q-item-label>-->
</q-item-section>
<!--<q-rating v-model="shared.rating" :max="5" size="16px" @input="change_rating(shared.rating, shared)"/>-->
<!--<q-rating v-model="shared.rating" :max="5" size="16px" @update:model-value="change_rating(shared.rating, shared)"/>-->
</div>
@@ -80,7 +80,7 @@
@click="add_newshare(shared.description)"></q-btn>
<!--<q-item-label class="title">Condiviso: {{ shared.numshared }}</q-item-label>
<q-item-label class="title">Rating: {{ shared.rating }}</q-item-label>-->
<!--<q-rating v-model="shared.rating" :max="5" size="16px" @input="change_rating(shared.rating, shared)"/>-->
<!--<q-rating v-model="shared.rating" :max="5" size="16px" @update:model-value="change_rating(shared.rating, shared)"/>-->
</div>
</transition>

View File

@@ -14,7 +14,7 @@
v-model="signup.email"
rounded outlined
@blur="v$.email.$touch"
@input="changeemail()"
@update:model-value="changeemail()"
:error="v$.email.$error"
:error-message="tools.errorMsg( 'email', v$.email)"
maxlength="50"
@@ -31,7 +31,7 @@
v-model="signup.username"
rounded outlined
@blur="v$.username.$touch"
@input="changeusername"
@update:model-value="changeusername"
:error="v$.username.$error"
@keydown.space="(event) => event.preventDefault()"
maxlength="20"

View File

@@ -24,7 +24,7 @@
<q-checkbox
class="bg-grey-4"
v-model="accetta_saw_video"
@input="changeval"
@update:model-value="changeval"
color="primary"
:label="$t('steps.saw_video_intro')">

View File

@@ -18,7 +18,7 @@ const functionality: IFunctionality = {
ENABLE_PROJECTS_LOADING: false,
SHOW_IF_IS_SERVER_CONNECTION: false,
SHOW_MESSAGES: false,
BOOKING_EVENTS: false,
BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: true,
ENABLE_REG_CNM: true,
}

View File

@@ -11,7 +11,7 @@ import { useI18n } from '@/boot/i18n'
// You can declare a mixin as the same style as components.
export default function () {
function getImgEvent(event: IEvents) {
if (!!event.img)
if (event && !!event.img)
return event.img
else
return 'images/noimg.png'

View File

@@ -139,6 +139,7 @@ export default defineComponent({
isnotmyevent,
setmeta,
myevent,
selected,
}
}

View File

@@ -3,7 +3,16 @@ import { tools } from '@src/store/Modules/tools'
import { func_tools } from '@src/store/Modules/toolsext'
import { CTitle } from '../../../components/CTitle/index'
import { CMyPage } from '../../../components/CMyPage/index'
import { IBookedEvent, ICalendarState, IEvents, ITodo, ITodosState, IUserState, IUserFields } from '@src/model'
import {
IBookedEvent,
ICalendarState,
IEvents,
ITodo,
ITodosState,
IUserState,
IUserFields,
IParamDialog
} from '@src/model'
import { lists } from '@src/store/Modules/lists'
import MixinUsers from '@src/mixins/mixin-users'
@@ -14,6 +23,7 @@ import { useCalendarStore } from '@store/CalendarStore'
import { useUserStore } from '@store/UserStore'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import translate from '@/globalroutines/util'
export default defineComponent({
name: 'Eventlist',
@@ -21,6 +31,7 @@ export default defineComponent({
setup() {
const showpeople = ref(false)
const shownote = ref(false)
const eventsel = ref(null)
const showPrev = ref(false)
@@ -36,6 +47,8 @@ export default defineComponent({
const { UpdateDbByFields } = MixinEvents()
const { isValidUsername } = MixinUsers()
function getEventList() {
const eventsloc: IEvents[] = []
@@ -115,10 +128,6 @@ export default defineComponent({
return eventsloc
}
function mostra() {
return $route.name
}
function showall() {
return $route.name === 'otherpages.admin.usereventlist'
}
@@ -134,7 +143,9 @@ export default defineComponent({
getNumEvent()
}
function change_rec(eventparam: any) {
console.log('change_rec')
UpdateDbByFields($q, eventparam)
}
@@ -151,6 +162,12 @@ export default defineComponent({
getTeacherByUsername,
numrec,
shownote,
showpeople,
eventsel,
isValidUsername,
gettitle,
change_rec,
$q,
}
}
})

View File

@@ -115,7 +115,7 @@
autogrow
type="textarea" debounce="500"
input-class="myinput-area"
@input="change_rec(eventsel)">
@update:model-value="change_rec(eventsel)">
</q-input>
</q-card-section>
@@ -161,7 +161,7 @@
<td class="text-center">
<q-btn
flat round color="red" icon="fas fa-trash-alt" size="sm"
@click="tools.CancelBookingEvent(mythis, eventsel, eventbook._id, false)"></q-btn>
@click="tools.CancelBookingEvent($q, eventsel, eventbook._id, false)"></q-btn>
</td>
</tr>
</tbody>

View File

@@ -1709,9 +1709,6 @@ export const tools = {
}).then((ris: any) => {
if (ris) {
this.showPositiveNotif(mythisq, t('cal.canceledbooking') + ' "' + par.param3 + '"')
//++Todo: Calendar FIX:
// if (myself.bookEventpage)
// myself.bookEventpage.show = false
} else {
this.showNegativeNotif(mythisq, t('cal.cancelederrorbooking'))
}

View File

@@ -206,7 +206,7 @@
:label="$t('proj.longdescr')"
outlined
debounce="1000"
@input="modifyfieldproj('privacywrite')"
@update:model-value="modifyfieldproj('privacywrite')"
autogrow
style="flex: auto">
</q-input>
@@ -235,7 +235,7 @@
:readonly="readonly_PanelPrivacySel"
rounded outlined v-model="itemselproj.groupId" :options="selectGroup"
:label="$t('proj.group')" emit-value map-options
@input="modifyfieldproj('groupId')">
@update:model-value="modifyfieldproj('groupId')">
</q-select>
</div>
</div>
@@ -247,7 +247,7 @@
:readonly="readonly_PanelPrivacySel"
rounded outlined v-model="itemselproj.respUsername" :options="selectResp"
:label="$t('proj.respUsername')" emit-value map-options
@input="modifyfieldproj('respUsername')">
@update:model-value="modifyfieldproj('respUsername')">
</q-select>
</div>
</div>
@@ -259,14 +259,14 @@
:readonly="readonly_PanelPrivacySel"
rounded outlined v-model="itemselproj.viceRespUsername" :options="selectResp"
:label="$t('proj.viceRespUsername')" emit-value map-options
@input="modifyfieldproj('viceRespUsername')">
@update:model-value="modifyfieldproj('viceRespUsername')">
</q-select>
<q-select
style="min-width: 200px"
:readonly="readonly_PanelPrivacySel"
rounded outlined v-model="itemselproj.vice2RespUsername" :options="selectResp"
:label="$t('proj.vice2RespUsername')" emit-value map-options
@input="modifyfieldproj('vice2RespUsername')">
@update:model-value="modifyfieldproj('vice2RespUsername')">
</q-select>
</div>
</div>
@@ -277,7 +277,7 @@
style="min-width: 150px" :readonly="readonly_PanelPrivacySel" rounded outlined
v-model="itemselproj.tipovisu"
:options="selectTipoVisu"
@input="modifyfieldproj('tipovisu')"
@update:model-value="modifyfieldproj('tipovisu')"
:label="$t('proj.tipovisu')" emit-value map-options>
</q-select>
</div>
@@ -290,7 +290,7 @@
:readonly="readonly_PanelPrivacySel"
rounded outlined v-model="itemselproj.privacyread" :options="selectPrivacy"
:label="$t('proj.privacyread')" emit-value map-options
@input="modifyfieldproj('privacyread')">
@update:model-value="modifyfieldproj('privacyread')">
</q-select>
</div>
</div>
@@ -301,7 +301,7 @@
style="min-width: 200px" :readonly="readonly_PanelPrivacySel" rounded outlined
v-model="itemselproj.privacywrite" :options="selectPrivacy"
:label="$t('proj.privacywrite')" emit-value map-options
@input="modifyfieldproj('privacywrite')">
@update:model-value="modifyfieldproj('privacywrite')">
</q-select>
</div>
</div>
@@ -330,7 +330,7 @@
:label="$t('proj.longdescr')"
outlined
:readonly="readonly_PanelPrivacy"
@input="modifyfieldtodo('descr')"
@update:model-value="modifyfieldtodo('descr')"
debounce="1000"
autogrow
style="flex: auto">
@@ -349,7 +349,7 @@
:label="$t('proj.note')"
outlined
:readonly="readonly_PanelPrivacy"
@input="modifyfieldtodo('note')"
@update:model-value="modifyfieldtodo('note')"
debounce="1000"
autogrow
style="flex: auto">
@@ -365,7 +365,7 @@
v-model="itemtodosel.pos"
type="number"
debounce="500"
@input="modifyfieldtodo('pos')"
@update:model-value="modifyfieldtodo('pos')"
rounded outlined
style="max-width: 100px;"
:label="$t('dashboard.posizione')">
@@ -378,7 +378,7 @@
<q-select
style="min-width: 200px"
:readonly="readonly_PanelPrivacy"
@input="modifyfieldtodo('assigned_to_userId')"
@update:model-value="modifyfieldtodo('assigned_to_userId')"
rounded outlined v-model="itemtodosel.assigned_to_userId" :options="selectWorkers"
:label="$t('todo.assigned_to_userId')" emit-value map-options>
</q-select>
@@ -390,7 +390,7 @@
:idmain="itemtodosel.category"
table="todos"
mykey="assignedToUsers"
@input="modifyfieldtodo('assignedToUsers')"
@update:model-value="modifyfieldtodo('assignedToUsers')"
:type="costanti.FieldType.multiselect"
jointable="workers">
</CMyFieldDb>
@@ -403,7 +403,7 @@
rounded outlined v-model="itemtodosel.statustodo" :options="selectStatus"
:readonly="readonly_PanelPrivacy"
:label="$t('todo.status')" emit-value map-options
@input="modifyfieldtodo('statustodo')">
@update:model-value="modifyfieldtodo('statustodo')">
</q-select>
</div>
@@ -485,7 +485,7 @@
readonly
v-model="itemselproj.hoursplanned"
rounded outlined
@input="modifyfieldproj('hoursplanned')"
@update:model-value="modifyfieldproj('hoursplanned')"
:label="$t('proj.hoursplanned')"
debounce="500">
@@ -500,7 +500,7 @@
<div class="flex-item itemdata">
<CDate
:readonly="readonly_PanelPrivacySel" :mydate="itemselproj.begin_development"
@input="itemselproj.begin_development = new Date(arguments[0]); modifyfieldproj('begin_development')"
@update:model-value="itemselproj.begin_development = new Date(arguments[0]); modifyfieldproj('begin_development')"
:label="$t('proj.begin_development')">
</CDate>
</div>
@@ -508,7 +508,7 @@
<div class="flex-item itemdata">
<CDate
:readonly="readonly_PanelPrivacySel" :mydate="itemselproj.begin_test"
@input="itemselproj.begin_test = new Date(arguments[0]); modifyfieldproj('begin_test')"
@update:model-value="itemselproj.begin_test = new Date(arguments[0]); modifyfieldproj('begin_test')"
:label="$t('proj.begin_test')">
</CDate>
</div>
@@ -520,7 +520,7 @@
style="min-width: 150px" :readonly="readonly_PanelPrivacySel" rounded outlined
v-model="itemselproj.actualphase"
:options="selectPhase"
@input="modifyfieldproj('actualphase')"
@update:model-value="modifyfieldproj('actualphase')"
:label="$t('proj.actualphase')" emit-value map-options>
</q-select>
</div>
@@ -530,7 +530,7 @@
style="min-width: 150px"
:readonly="readonly_PanelPrivacySel" rounded outlined v-model="itemselproj.totalphases"
:options="selectPhase"
@input="modifyfieldproj('totalphases')"
@update:model-value="modifyfieldproj('totalphases')"
:label="$t('proj.totalphases')" emit-value map-options>
</q-select>
</div>
@@ -599,7 +599,7 @@
:descr="$t('proj.progresstask')"
:readonly="readonly_PanelPrivacy"
:progressval="itemtodosel.progress"
:slider="true" @input="itemtodosel.progress = arguments[0]"></CProgress>
:slider="true" @update:model-value="itemtodosel.progress = arguments[0]"></CProgress>
</div>
</div>
<div class="flex-container clMain">
@@ -608,7 +608,7 @@
<CDate
:mydate="itemtodosel.start_date"
:readonly="readonly_PanelPrivacy"
@input="itemtodosel.start_date = new Date(arguments[0]); modifyfieldtodo('start_date')"
@update:model-value="itemtodosel.start_date = new Date(arguments[0]); modifyfieldtodo('start_date')"
:label="$t('todo.start_date')">
</CDate>
@@ -619,7 +619,7 @@
<CDate
:readonly="((itemtodosel.statustodo !== tools.Status.COMPLETED) || readonly_PanelPrivacy)"
:mydate="itemtodosel.completed_at"
@input="itemtodosel.completed_at = new Date(arguments[0]); modifyfieldtodo('completed_at')"
@update:model-value="itemtodosel.completed_at = new Date(arguments[0]); modifyfieldtodo('completed_at')"
:label="$t('todo.completed_at')">
</CDate>
</div>
@@ -630,7 +630,7 @@
<q-select
rounded outlined v-model="itemtodosel.phase" :options="selectPhase"
:readonly="readonly_PanelPrivacy"
@input="modifyfieldtodo('phase')"
@update:model-value="modifyfieldtodo('phase')"
:label="$t('todo.phase')" emit-value map-options>
</q-select>
</div>