#8197 - advancedMenu #1248

Merged
alexm merged 8 commits from 8197-advancedMenu into dev 2025-01-23 07:27:37 +00:00
12 changed files with 310 additions and 276 deletions
Showing only changes of commit 58b8b2f7b0 - Show all commits

View File

@ -4,7 +4,6 @@ import { useQuasar } from 'quasar';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import axios from 'axios'; import axios from 'axios';
import { useStateStore } from 'src/stores/useStateStore';
import { toDate, toPercentage, toCurrency } from 'filters/index'; import { toDate, toPercentage, toCurrency } from 'filters/index';
import { tMobile } from 'src/composables/tMobile'; import { tMobile } from 'src/composables/tMobile';
import CrudModel from 'src/components/CrudModel.vue'; import CrudModel from 'src/components/CrudModel.vue';
@ -13,11 +12,11 @@ import VnSelect from 'src/components/common/VnSelect.vue';
import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue'; import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue'; import TicketDescriptorProxy from 'src/pages/Ticket/Card/TicketDescriptorProxy.vue';
import { useArrayData } from 'composables/useArrayData'; import { useArrayData } from 'composables/useArrayData';
import RightMenu from 'src/components/common/RightMenu.vue';
const { t } = useI18n(); const { t } = useI18n();
const quasar = useQuasar(); const quasar = useQuasar();
const route = useRoute(); const route = useRoute();
const stateStore = computed(() => useStateStore());
const claim = ref(null); const claim = ref(null);
const claimRef = ref(); const claimRef = ref();
const claimId = route.params.id; const claimId = route.params.id;
@ -201,58 +200,62 @@ async function post(query, params) {
auto-load auto-load
@on-fetch="(data) => (destinationTypes = data)" @on-fetch="(data) => (destinationTypes = data)"
/> />
<Teleport to="#right-panel" v-if="stateStore.isHeaderMounted() && claim"> <RightMenu v-if="claim">
<QCard class="totalClaim q-my-md q-pa-sm no-box-shadow"> <template #right-panel>
{{ `${t('Total claimed')}: ${toCurrency(totalClaimed)}` }} <QCard class="totalClaim q-my-md q-pa-sm no-box-shadow">
</QCard> {{ `${t('Total claimed')}: ${toCurrency(totalClaimed)}` }}
<QCard class="q-mb-md q-pa-sm no-box-shadow"> </QCard>
<QItem class="justify-between"> <QCard class="q-mb-md q-pa-sm no-box-shadow">
<QItemLabel class="slider-container"> <QItem class="justify-between">
<p class="text-primary"> <QItemLabel class="slider-container">
{{ t('claim.actions') }} <p class="text-primary">
</p> {{ t('claim.actions') }}
<QSlider </p>
class="responsibility { 'background-color:primary': quasar.platform.is.mobile }" <QSlider
v-model="claim.responsibility" class="responsibility { 'background-color:primary': quasar.platform.is.mobile }"
:label-value="t('claim.responsibility')" v-model="claim.responsibility"
@change="(value) => save({ responsibility: value })" :label-value="t('claim.responsibility')"
label-always @change="(value) => save({ responsibility: value })"
color="primary" label-always
markers color="primary"
:marker-labels="marker_labels" markers
:min="DEFAULT_MIN_RESPONSABILITY" :marker-labels="marker_labels"
:max="DEFAULT_MAX_RESPONSABILITY" :min="DEFAULT_MIN_RESPONSABILITY"
:max="DEFAULT_MAX_RESPONSABILITY"
/>
</QItemLabel>
</QItem>
</QCard>
<QCard class="q-mb-md q-pa-sm no-box-shadow" style="margin-bottom: 1em">
<QItemLabel class="mana q-mb-md">
<QCheckbox
v-model="claim.isChargedToMana"
@update:model-value="(value) => save({ isChargedToMana: value })"
/> />
<span>{{ t('mana') }}</span>
</QItemLabel> </QItemLabel>
</QItem> </QCard>
</QCard> <QCard class="q-mb-md q-pa-sm no-box-shadow" style="position: static">
<QCard class="q-mb-md q-pa-sm no-box-shadow" style="margin-bottom: 1em"> <QInput
<QItemLabel class="mana q-mb-md"> :disable="
<QCheckbox !(
v-model="claim.isChargedToMana" claim.responsibility >=
@update:model-value="(value) => save({ isChargedToMana: value })" Math.ceil(DEFAULT_MAX_RESPONSABILITY) / 2
)
"
:label="t('confirmGreuges')"
class="q-field__native text-grey-2"
Review

q-field__native???

q-field__native???
Review

Esta asi en dev, solo he movido la linea

Esta asi en dev, solo he movido la linea
type="number"
placeholder="0"
id="multiplicatorValue"
name="multiplicatorValue"
min="0"
max="50"
v-model="multiplicatorValue"
Review

v-model.number?

v-model.number?
Review

Esta asi en dev, solo he movido la linea

Incluso usa QInput

Esta asi en dev, solo he movido la linea Incluso usa `QInput`
/> />
<span>{{ t('mana') }}</span> </QCard>
</QItemLabel> </template>
</QCard> </RightMenu>
<QCard class="q-mb-md q-pa-sm no-box-shadow" style="position: static">
<QInput
:disable="
!(claim.responsibility >= Math.ceil(DEFAULT_MAX_RESPONSABILITY) / 2)
"
:label="t('confirmGreuges')"
class="q-field__native text-grey-2"
type="number"
placeholder="0"
id="multiplicatorValue"
name="multiplicatorValue"
min="0"
max="50"
v-model="multiplicatorValue"
/>
</QCard>
</Teleport>
<Teleport to="#st-data" v-if="stateStore.isSubToolbarShown()"> </Teleport>
<CrudModel <CrudModel
v-if="claim" v-if="claim"
data-key="ClaimEnds" data-key="ClaimEnds"

View File

@ -134,7 +134,7 @@ const STATE_COLOR = {
order: ['cs.priority ASC', 'created ASC'], order: ['cs.priority ASC', 'created ASC'],
}" }"
> >
<template #rightMenu> <template #advanced-menu>
<ClaimFilter data-key="ClaimList" ref="claimFilterRef" /> <ClaimFilter data-key="ClaimList" ref="claimFilterRef" />
</template> </template>
<template #body> <template #body>

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import { useStateStore } from 'stores/useStateStore'; import { useStateStore } from 'stores/useStateStore';
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import { onMounted, ref, computed, watch } from 'vue'; import { onMounted, ref, watch } from 'vue';
import axios from 'axios'; import axios from 'axios';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import VnPaginate from 'src/components/ui/VnPaginate.vue'; import VnPaginate from 'src/components/ui/VnPaginate.vue';

View File

@ -4,7 +4,6 @@ import { useI18n } from 'vue-i18n';
import { ref, computed, watch } from 'vue'; import { ref, computed, watch } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import axios from 'axios'; import axios from 'axios';
import { useStateStore } from 'stores/useStateStore';
import { useArrayData } from 'composables/useArrayData'; import { useArrayData } from 'composables/useArrayData';
import { confirm } from 'src/pages/Order/composables/confirmOrder'; import { confirm } from 'src/pages/Order/composables/confirmOrder';
import { toCurrency, toDate } from 'src/filters'; import { toCurrency, toDate } from 'src/filters';
@ -16,9 +15,9 @@ import VnImg from 'src/components/ui/VnImg.vue';
import VnLv from 'src/components/ui/VnLv.vue'; import VnLv from 'src/components/ui/VnLv.vue';
import FetchedTags from 'src/components/ui/FetchedTags.vue'; import FetchedTags from 'src/components/ui/FetchedTags.vue';
import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue'; import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
const router = useRouter(); const router = useRouter();
const stateStore = useStateStore();
const route = useRoute(); const route = useRoute();
const { t } = useI18n(); const { t } = useI18n();
const quasar = useQuasar(); const quasar = useQuasar();
@ -265,23 +264,27 @@ watch(
@on-fetch="(data) => (orderSummary.vat = data)" @on-fetch="(data) => (orderSummary.vat = data)"
auto-load auto-load
/> />
<Teleport to="#right-panel" v-if="stateStore.isHeaderMounted()"> <RightMenu>
<QCard <template #right-panel>
class="order-lines-summary q-pa-lg" <QCard
v-if="orderSummary.vat && orderSummary.total" class="order-lines-summary q-pa-lg"
> v-if="orderSummary.vat && orderSummary.total"
<p class="header text-right block"> >
{{ t('summary') }} <p class="header text-right block">
</p> {{ t('summary') }}
<VnLv </p>
:label="t('subtotal') + ': '" <VnLv
:value="toCurrency(orderSummary.total - orderSummary.vat)" :label="t('subtotal') + ': '"
/> :value="toCurrency(orderSummary.total - orderSummary.vat)"
<VnLv :label="t('VAT') + ': '" :value="toCurrency(orderSummary?.vat)" /> />
<VnLv :label="t('total') + ': '" :value="toCurrency(orderSummary?.total)" /> <VnLv :label="t('VAT') + ': '" :value="toCurrency(orderSummary?.vat)" />
</QCard> <VnLv
</Teleport> :label="t('total') + ': '"
:value="toCurrency(orderSummary?.total)"
/>
</QCard>
</template>
</RightMenu>
<VnTable <VnTable
ref="tableLinesRef" ref="tableLinesRef"
data-key="OrderLines" data-key="OrderLines"

View File

@ -190,7 +190,7 @@ const getDateColor = (date) => {
order: ['landed DESC', 'clientFk ASC', 'id DESC'], order: ['landed DESC', 'clientFk ASC', 'id DESC'],
}" }"
> >
<template #rightMenu> <template #advanced-menu>
<OrderFilter data-key="OrderList" /> <OrderFilter data-key="OrderList" />
</template> </template>
<template #body> <template #body>

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import axios from 'axios'; import axios from 'axios';
import { date, useQuasar } from 'quasar'; import { date, useQuasar } from 'quasar';
import { useStateStore } from 'src/stores/useStateStore'; import RightMenu from 'src/components/common/RightMenu.vue';
import { computed, onMounted, reactive, ref } from 'vue'; import { computed, onMounted, reactive, ref } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
@ -9,9 +9,7 @@ import { useRouter } from 'vue-router';
const router = useRouter(); const router = useRouter();
const { t } = useI18n(); const { t } = useI18n();
const quasar = useQuasar(); const quasar = useQuasar();
const stateStore = useStateStore();
onMounted(async () => { onMounted(async () => {
stateStore.rightDrawer = true;
await fetch(); await fetch();
}); });
@ -86,69 +84,73 @@ async function getVideoList(expeditionId, timed) {
</script> </script>
<template> <template>
<Teleport to="#right-panel" v-if="stateStore.isHeaderMounted()"> <RightMenu>
<QList bordered separator style="max-width: 318px"> <template #right-panel>
<QItem v-if="lastExpedition && videoList.length"> <QList bordered separator style="max-width: 318px">
<QItemSection> <QItem v-if="lastExpedition && videoList.length">
<QItemLabel class="text-h6"> <QItemSection>
{{ t('ticket.boxing.selectTime') }} ({{ time.min }}-{{ <QItemLabel class="text-h6">
time.max {{ t('ticket.boxing.selectTime') }} ({{ time.min }}-{{
}}) time.max
</QItemLabel> }})
<QRange </QItemLabel>
v-model="time" <QRange
@change="getVideoList(lastExpedition, time)" v-model="time"
:min="0" @change="getVideoList(lastExpedition, time)"
:max="24" :min="0"
:step="1" :max="24"
:left-label-value="time.min + ':00'" :step="1"
:right-label-value="time.max + ':00'" :left-label-value="time.min + ':00'"
label :right-label-value="time.max + ':00'"
markers label
snap markers
color="primary" snap
/> color="primary"
</QItemSection> />
</QItem> </QItemSection>
<QItem v-if="lastExpedition && videoList.length"> </QItem>
<QItemSection> <QItem v-if="lastExpedition && videoList.length">
<QSelect <QItemSection>
color="primary" <QSelect
v-model="slide" color="primary"
:options="videoList" v-model="slide"
:label="t('ticket.boxing.selectVideo')" :options="videoList"
emit-value :label="t('ticket.boxing.selectVideo')"
map-options emit-value
> map-options
<template #prepend> >
<QIcon name="schedule" /> <template #prepend>
</template> <QIcon name="schedule" />
</QSelect> </template>
</QItemSection> </QSelect>
</QItem> </QItemSection>
<QItem </QItem>
v-for="expedition in expeditions" <QItem
:key="expedition.id" v-for="expedition in expeditions"
@click="getVideoList(expedition.id)" :key="expedition.id"
clickable @click="getVideoList(expedition.id)"
v-ripple clickable
> v-ripple
<QItemSection> >
<QItemLabel class="text-h6">#{{ expedition.id }}</QItemLabel> <QItemSection>
</QItemSection> <QItemLabel class="text-h6">#{{ expedition.id }}</QItemLabel>
<QItemSection> </QItemSection>
<QItemLabel caption>{{ t('globals.created') }}</QItemLabel> <QItemSection>
<QItemLabel> <QItemLabel caption>{{ t('globals.created') }}</QItemLabel>
{{ date.formatDate(expedition.created, 'YYYY-MM-DD HH:mm:ss') }} <QItemLabel>
</QItemLabel> {{
<QItemLabel caption>{{ t('globals.item') }}</QItemLabel> date.formatDate(expedition.created, 'YYYY-MM-DD HH:mm:ss')
Review

esta linea la veo muy repetida(en el proyecto). No teníamos un composable o filtro o util que lo hacia?

esta linea la veo muy repetida(en el proyecto). No teníamos un composable o filtro o util que lo hacia?
Review

Esta asi en dev, solo he movido la linea

Esta asi en dev, solo he movido la linea
<QItemLabel>{{ expedition.packagingItemFk }}</QItemLabel> }}
<QItemLabel caption>{{ t('ticket.boxing.worker') }}</QItemLabel> </QItemLabel>
<QItemLabel>{{ expedition.userName }}</QItemLabel> <QItemLabel caption>{{ t('globals.item') }}</QItemLabel>
</QItemSection> <QItemLabel>{{ expedition.packagingItemFk }}</QItemLabel>
</QItem> <QItemLabel caption>{{ t('ticket.boxing.worker') }}</QItemLabel>
</QList> <QItemLabel>{{ expedition.userName }}</QItemLabel>
</Teleport> </QItemSection>
</QItem>
</QList>
</template>
</RightMenu>
<QCard> <QCard>
<QCarousel animated v-model="slide" height="max-content"> <QCarousel animated v-model="slide" height="max-content">
<QCarouselSlide <QCarouselSlide

View File

@ -1,5 +1,5 @@
<script setup> <script setup>
import { ref, computed, onMounted, watch, nextTick } from 'vue'; import { ref, computed, watch, nextTick } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
@ -9,15 +9,14 @@ import FetchData from 'components/FetchData.vue';
import ZoneDescriptorProxy from 'src/pages/Zone/Card/ZoneDescriptorProxy.vue'; import ZoneDescriptorProxy from 'src/pages/Zone/Card/ZoneDescriptorProxy.vue';
import VnImg from 'src/components/ui/VnImg.vue'; import VnImg from 'src/components/ui/VnImg.vue';
import { useStateStore } from 'stores/useStateStore';
import { dashIfEmpty } from 'src/filters'; import { dashIfEmpty } from 'src/filters';
import { useArrayData } from 'composables/useArrayData'; import { useArrayData } from 'composables/useArrayData';
import { toCurrency } from 'filters/index'; import { toCurrency } from 'filters/index';
import axios from 'axios'; import axios from 'axios';
import VnTable from 'src/components/VnTable/VnTable.vue'; import VnTable from 'src/components/VnTable/VnTable.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
const route = useRoute(); const route = useRoute();
const stateStore = useStateStore();
const { t } = useI18n(); const { t } = useI18n();
const salesRef = ref(null); const salesRef = ref(null);
const arrayData = useArrayData('ticketData'); const arrayData = useArrayData('ticketData');
@ -164,10 +163,6 @@ const getTicketVolume = async () => {
const { data } = await axios.get(`Tickets/${ticketData.value.id}/getVolume`); const { data } = await axios.get(`Tickets/${ticketData.value.id}/getVolume`);
ticketVolume.value = data[0].volume; ticketVolume.value = data[0].volume;
}; };
onMounted(() => {
stateStore.rightDrawer = true;
});
</script> </script>
<template> <template>
@ -178,93 +173,121 @@ onMounted(() => {
@on-fetch="(data) => (components = data)" @on-fetch="(data) => (components = data)"
auto-load auto-load
/> />
<Teleport to="#right-panel" v-if="stateStore.isHeaderMounted()"> <RightMenu>
<QCard class="q-pa-sm color-vn-text" bordered flat style="border-color: black"> <template #right-panel>
<QCardSection horizontal> <QCard
<span class="text-weight-bold text-subtitle1 text-center full-width"> class="q-pa-sm color-vn-text"
{{ t('basicData.total') }} bordered
</span> flat
</QCardSection> style="border-color: black"
<QCardSection horizontal>
<span class="q-mr-xs color-vn-label"
>{{ t('ticketComponents.baseToCommission') }}:
</span>
<span>{{ toCurrency(getBase) }}</span>
</QCardSection>
<QCardSection horizontal>
<span class="q-mr-xs color-vn-label"
>{{ t('ticketComponents.totalWithoutVat') }}:
</span>
<span>{{ toCurrency(getTotal) }}</span>
</QCardSection>
</QCard>
<QCard class="q-pa-sm color-vn-text" bordered flat style="border-color: black">
<QCardSection horizontal>
<span class="text-weight-bold text-subtitle1 text-center full-width">
{{ t('ticketComponents.components') }}
</span>
</QCardSection>
<QCardSection
v-for="(component, index) in componentsList"
:key="index"
horizontal
> >
<span v-if="component.name" class="q-mr-xs color-vn-label"> <QCardSection horizontal>
{{ component.name }}: <span class="text-weight-bold text-subtitle1 text-center full-width">
</span> {{ t('basicData.total') }}
<span v-if="component.value">{{ </span>
toCurrency(component.value, 'EUR', 3) </QCardSection>
}}</span> <QCardSection horizontal>
</QCardSection> <span class="q-mr-xs color-vn-label"
</QCard> >{{ t('ticketComponents.baseToCommission') }}:
<QCard class="q-pa-sm color-vn-text" bordered flat style="border-color: black"> </span>
<QCardSection horizontal> <span>{{ toCurrency(getBase) }}</span>
<span class="text-weight-bold text-subtitle1 text-center full-width"> </QCardSection>
{{ t('ticketComponents.zoneBreakdown') }} <QCardSection horizontal>
</span> <span class="q-mr-xs color-vn-label"
</QCardSection> >{{ t('ticketComponents.totalWithoutVat') }}:
<QCardSection horizontal> </span>
<span class="q-mr-xs color-vn-label"> {{ t('basicData.price') }}: </span> <span>{{ toCurrency(getTotal) }}</span>
<span>{{ toCurrency(ticketData?.zonePrice, 'EUR', 2) }}</span> </QCardSection>
</QCardSection> </QCard>
<QCardSection horizontal> <QCard
<span class="q-mr-xs color-vn-label"> class="q-pa-sm color-vn-text"
{{ t('ticketComponents.bonus') }}: bordered
</span> flat
<span>{{ toCurrency(ticketData?.zoneBonus, 'EUR', 2) }}</span> style="border-color: black"
</QCardSection> >
<QCardSection horizontal> <QCardSection horizontal>
<span class="q-mr-xs color-vn-label"> {{ t('ticketList.zone') }}: </span> <span class="text-weight-bold text-subtitle1 text-center full-width">
<span class="link"> {{ t('ticketComponents.components') }}
{{ dashIfEmpty(ticketData?.zone?.name) }} </span>
<ZoneDescriptorProxy :id="ticketData?.zone?.id" /> </QCardSection>
</span> <QCardSection
</QCardSection> v-for="(component, index) in componentsList"
<QCardSection v-if="ticketData?.zone?.isVolumetric" horizontal> :key="index"
<span class="q-mr-xs color-vn-label"> {{ t('volume.volume') }}: </span> horizontal
<span>{{ ticketVolume }}</span> >
</QCardSection> <span v-if="component.name" class="q-mr-xs color-vn-label">
<QCardSection horizontal> {{ component.name }}:
<span class="q-mr-xs color-vn-label"> </span>
{{ t('ticketComponents.packages') }}: <span v-if="component.value">{{
</span> toCurrency(component.value, 'EUR', 3)
<span>{{ dashIfEmpty(ticketData?.packages) }}</span> }}</span>
</QCardSection> </QCardSection>
</QCard> </QCard>
<QCard class="q-pa-sm color-vn-text" bordered flat style="border-color: black"> <QCard
<QCardSection horizontal> class="q-pa-sm color-vn-text"
<span class="text-weight-bold text-subtitle1 text-center full-width"> bordered
{{ t('ticketComponents.theoricalCost') }} flat
</span> style="border-color: black"
</QCardSection> >
<QCardSection horizontal> <QCardSection horizontal>
<span class="q-mr-xs color-vn-label"> <span class="text-weight-bold text-subtitle1 text-center full-width">
{{ t('ticketComponents.totalPrice') }}: {{ t('ticketComponents.zoneBreakdown') }}
</span> </span>
<span>{{ toCurrency(theoricalCost, 'EUR', 2) }}</span> </QCardSection>
</QCardSection> <QCardSection horizontal>
</QCard> <span class="q-mr-xs color-vn-label">
</Teleport> {{ t('basicData.price') }}:
</span>
<span>{{ toCurrency(ticketData?.zonePrice, 'EUR', 2) }}</span>
</QCardSection>
<QCardSection horizontal>
<span class="q-mr-xs color-vn-label">
{{ t('ticketComponents.bonus') }}:
</span>
<span>{{ toCurrency(ticketData?.zoneBonus, 'EUR', 2) }}</span>
</QCardSection>
<QCardSection horizontal>
<span class="q-mr-xs color-vn-label">
{{ t('ticketList.zone') }}:
</span>
<span class="link">
{{ dashIfEmpty(ticketData?.zone?.name) }}
<ZoneDescriptorProxy :id="ticketData?.zone?.id" />
</span>
</QCardSection>
<QCardSection v-if="ticketData?.zone?.isVolumetric" horizontal>
<span class="q-mr-xs color-vn-label">
{{ t('volume.volume') }}:
</span>
<span>{{ ticketVolume }}</span>
</QCardSection>
<QCardSection horizontal>
<span class="q-mr-xs color-vn-label">
{{ t('ticketComponents.packages') }}:
</span>
<span>{{ dashIfEmpty(ticketData?.packages) }}</span>
</QCardSection>
</QCard>
<QCard
class="q-pa-sm color-vn-text"
bordered
flat
style="border-color: black"
>
<QCardSection horizontal>
<span class="text-weight-bold text-subtitle1 text-center full-width">
{{ t('ticketComponents.theoricalCost') }}
</span>
</QCardSection>
<QCardSection horizontal>
<span class="q-mr-xs color-vn-label">
{{ t('ticketComponents.totalPrice') }}:
</span>
<span>{{ toCurrency(theoricalCost, 'EUR', 2) }}</span>
</QCardSection>
</QCard>
</template>
</RightMenu>
<VnTable <VnTable
ref="tableRef" ref="tableRef"
data-key="TicketComponents" data-key="TicketComponents"

View File

@ -465,7 +465,7 @@ function setReference(data) {
exprBuilder, exprBuilder,
}" }"
> >
<template #rightMenu> <template #advanced-menu>
<TicketFilter data-key="TicketList" /> <TicketFilter data-key="TicketList" />
</template> </template>
<template #body> <template #body>

View File

@ -1,18 +1,16 @@
<script setup> <script setup>
import { nextTick, ref, watch } from 'vue'; import { nextTick, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useRoute } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import WorkerCalendarFilter from 'pages/Worker/Card/WorkerCalendarFilter.vue'; import WorkerCalendarFilter from 'pages/Worker/Card/WorkerCalendarFilter.vue';
import FetchData from 'components/FetchData.vue'; import FetchData from 'components/FetchData.vue';
import WorkerCalendarItem from 'pages/Worker/Card/WorkerCalendarItem.vue'; import WorkerCalendarItem from 'pages/Worker/Card/WorkerCalendarItem.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
import { useStateStore } from 'stores/useStateStore';
import axios from 'axios'; import axios from 'axios';
import { useRouter } from 'vue-router';
const router = useRouter(); const router = useRouter();
const stateStore = useStateStore();
const route = useRoute(); const route = useRoute();
const { t } = useI18n(); const { t } = useI18n();
const workerIsFreelance = ref(); const workerIsFreelance = ref();
@ -171,16 +169,18 @@ watch([year, businessFk], () => refreshData());
ref="WorkerFreelanceRef" ref="WorkerFreelanceRef"
auto-load auto-load
/> />
<Teleport to="#right-panel" v-if="stateStore.isHeaderMounted()"> <RightMenu>
<WorkerCalendarFilter <template #right-panel>
ref="workerCalendarFilterRef" <WorkerCalendarFilter
v-model:business-fk="businessFk" ref="workerCalendarFilterRef"
v-model:year="year" v-model:business-fk="businessFk"
v-model:absence-type="absenceType" v-model:year="year"
:contract-holidays="contractHolidays" v-model:absence-type="absenceType"
:year-holidays="yearHolidays" :contract-holidays="contractHolidays"
/> :year-holidays="yearHolidays"
</Teleport> />
</template>
</RightMenu>
<QPage class="column items-center"> <QPage class="column items-center">
<QCard v-if="workerIsFreelance"> <QCard v-if="workerIsFreelance">
<QCardSection class="text-center"> <QCardSection class="text-center">

View File

@ -10,6 +10,7 @@ import WorkerTimeForm from 'pages/Worker/Card/WorkerTimeForm.vue';
import WorkerTimeReasonForm from 'pages/Worker/Card/WorkerTimeReasonForm.vue'; import WorkerTimeReasonForm from 'pages/Worker/Card/WorkerTimeReasonForm.vue';
import WorkerDateLabel from './WorkerDateLabel.vue'; import WorkerDateLabel from './WorkerDateLabel.vue';
import WorkerTimeControlCalendar from 'pages/Worker/Card/WorkerTimeControlCalendar.vue'; import WorkerTimeControlCalendar from 'pages/Worker/Card/WorkerTimeControlCalendar.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
import useNotify from 'src/composables/useNotify.js'; import useNotify from 'src/composables/useNotify.js';
import axios from 'axios'; import axios from 'axios';
@ -482,33 +483,35 @@ onMounted(async () => {
</QBtnGroup> </QBtnGroup>
</div> </div>
</Teleport> </Teleport>
<Teleport to="#right-panel" v-if="stateStore.isHeaderMounted()"> <RightMenu>
<div class="q-pa-md q-mb-md" style="border: 2px solid #222"> <template #right-panel>
<QCardSection horizontal> <div class="q-pa-md q-mb-md" style="border: 2px solid #222">
<span class="text-weight-bold text-subtitle1 text-center full-width"> <QCardSection horizontal>
{{ t('Hours') }} <span class="text-weight-bold text-subtitle1 text-center full-width">
</span> {{ t('Hours') }}
</QCardSection> </span>
<QCardSection class="column items-center" horizontal> </QCardSection>
<div> <QCardSection class="column items-center" horizontal>
<span class="details-label">{{ t('Total semana') }} </span> <div>
<span>: {{ formattedWeekTotalHours }}</span> <span class="details-label">{{ t('Total semana') }} </span>
</div> <span>: {{ formattedWeekTotalHours }}</span>
<div> </div>
<span class="details-label">{{ t('Termina a las') }}: </span> <div>
<span>{{ dashIfEmpty(getFinishTime()) }}</span> <span class="details-label">{{ t('Termina a las') }}: </span>
</div> <span>{{ dashIfEmpty(getFinishTime()) }}</span>
</QCardSection> </div>
</div> </QCardSection>
<WorkerTimeControlCalendar </div>
v-model:model-value="selectedDateFormatted" <WorkerTimeControlCalendar
:selected-dates="selectedCalendarDates" v-model:model-value="selectedDateFormatted"
:active-date="false" :selected-dates="selectedCalendarDates"
:worker-time-control-mails="workerTimeControlMails" :active-date="false"
@click-date="onInputChange" :worker-time-control-mails="workerTimeControlMails"
@on-moved="getMailStates" @click-date="onInputChange"
/> @on-moved="getMailStates"
</Teleport> />
</template>
</RightMenu>
<QPage class="column items-center"> <QPage class="column items-center">
<QTable :columns="columns" :rows="['']" hide-bottom class="full-width"> <QTable :columns="columns" :rows="['']" hide-bottom class="full-width">
<template #header="props"> <template #header="props">

View File

@ -195,7 +195,7 @@ async function autofillBic(worker) {
order: ['id DESC'], order: ['id DESC'],
}" }"
> >
<template #rightMenu> <template #advanced-menu>
<WorkerFilter data-key="WorkerList" /> <WorkerFilter data-key="WorkerList" />
</template> </template>
<template #body> <template #body>

View File

@ -168,7 +168,7 @@ const ticketCard = {
name: 'TicketBoxing', name: 'TicketBoxing',
meta: { meta: {
title: 'boxing', title: 'boxing',
icon: 'science', icon: 'view_in_ar',
Review

Comentario: mucho mejor este icono

Comentario: mucho mejor este icono
Review

Siii jaja, estaba ese icono pq fue la primera sección que estaba en lilium y no en salix y se puso como para saber q era "experimental"

Siii jaja, estaba ese icono pq fue la primera sección que estaba en lilium y no en salix y se puso como para saber q era "experimental"
}, },
component: () => import('src/pages/Ticket/Card/TicketBoxing.vue'), component: () => import('src/pages/Ticket/Card/TicketBoxing.vue'),
}, },