From 8124a341a08f65dda51d70ca279e4ed208c9d6de Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Tue, 24 Sep 2024 07:25:17 +0200 Subject: [PATCH 1/8] feat: refs #7129 route extended list and simplify route list --- src/components/VnTable/VnTable.vue | 6 +- src/filters/toHour.js | 3 +- src/i18n/locale/en.yml | 1 + src/i18n/locale/es.yml | 1 + src/pages/Route/Agency/AgencyList.vue | 41 ++- src/pages/Route/RouteExtendedList.vue | 411 ++++++++++++++++++++++++++ src/pages/Route/RouteList.vue | 297 ++----------------- src/router/modules/route.js | 23 +- 8 files changed, 485 insertions(+), 298 deletions(-) create mode 100644 src/pages/Route/RouteExtendedList.vue diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index a3b64d264..b6023203e 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -10,7 +10,7 @@ import FormModelPopup from 'components/FormModelPopup.vue'; import VnFilterPanel from 'components/ui/VnFilterPanel.vue'; import VnTableColumn from 'components/VnTable/VnColumn.vue'; -import VnTableFilter from 'components/VnTable/VnFilter.vue'; +import VnFilter from 'components/VnTable/VnFilter.vue'; import VnTableChip from 'components/VnTable/VnChip.vue'; import VnVisibleColumn from 'src/components/VnTable/VnVisibleColumn.vue'; import VnLv from 'components/ui/VnLv.vue'; @@ -335,7 +335,7 @@ function handleOnDataSaved(_) { )" :key="col.id" > - <VnTableFilter + <VnFilter :column="col" :data-key="$attrs['data-key']" v-model="params[columnName(col)]" @@ -442,7 +442,7 @@ function handleOnDataSaved(_) { :search-url="searchUrl" /> </div> - <VnTableFilter + <VnFilter v-if="$props.columnSearch" :column="col" :show-title="true" diff --git a/src/filters/toHour.js b/src/filters/toHour.js index 40821e237..b5cc61c81 100644 --- a/src/filters/toHour.js +++ b/src/filters/toHour.js @@ -1,10 +1,11 @@ import isValidDate from 'filters/isValidDate'; export default function toHour(date) { + console.log('date: ', date); if (!isValidDate(date)) { return '--:--'; } - return (new Date(date || '')).toLocaleTimeString([], { + return new Date(date || '').toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', }); diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index 2e2365f7b..f6c9b15fd 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -872,6 +872,7 @@ route: tickets: Tickets log: Log autonomous: Autonomous + RouteExtendedList: Extended list cmr: list: results: results diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index 53b487e9f..201c73d43 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -216,6 +216,7 @@ globals: RouteRoadmap: Troncales RouteRoadmapCreate: Crear troncal autonomous: Autónomos + RouteExtendedList: Listado extendido suppliers: Proveedores supplier: Proveedor supplierCreate: Nuevo proveedor diff --git a/src/pages/Route/Agency/AgencyList.vue b/src/pages/Route/Agency/AgencyList.vue index 42aede8a0..30ee52f54 100644 --- a/src/pages/Route/Agency/AgencyList.vue +++ b/src/pages/Route/Agency/AgencyList.vue @@ -27,12 +27,15 @@ const columns = computed(() => [ condition: () => true, }, isId: true, + columnFilter: false, }, { align: 'left', label: t('globals.name'), name: 'name', isTitle: true, + columnFilter: false, + columnClass: 'expand', }, { align: 'left', @@ -70,18 +73,34 @@ const columns = computed(() => [ data-key="AgencyList" :expr-builder="exprBuilder" /> - <VnTable - ref="tableRef" - data-key="AgencyList" - url="Agencies" - order="name" - :columns="columns" - :right-search="false" - :use-model="true" - redirect="agency" - default-mode="card" - /> + <div class="list-container"> + <div class="list"> + <VnTable + ref="tableRef" + data-key="AgencyList" + url="Agencies" + order="name" + :columns="columns" + :right-search="false" + :use-model="true" + redirect="agency" + default-mode="card" + /> + </div> + </div> </template> +<style lang="scss" scoped> +.list { + display: flex; + flex-direction: column; + align-items: center; + width: 55%; +} +.list-container { + display: flex; + justify-content: center; +} +</style> <i18n> es: isOwn: Tiene propietario diff --git a/src/pages/Route/RouteExtendedList.vue b/src/pages/Route/RouteExtendedList.vue new file mode 100644 index 000000000..1e20df99c --- /dev/null +++ b/src/pages/Route/RouteExtendedList.vue @@ -0,0 +1,411 @@ +<script setup> +import { computed, ref } from 'vue'; +import { useI18n } from 'vue-i18n'; +import { useSession } from 'composables/useSession'; +import { useSummaryDialog } from 'src/composables/useSummaryDialog'; +import { useQuasar } from 'quasar'; +import { toDate } from 'src/filters'; +import { useRouter } from 'vue-router'; + +import axios from 'axios'; +import RouteSearchbar from 'pages/Route/Card/RouteSearchbar.vue'; +import RouteListTicketsDialog from 'pages/Route/Card/RouteListTicketsDialog.vue'; +import RouteSummary from 'pages/Route/Card/RouteSummary.vue'; +import RightMenu from 'src/components/common/RightMenu.vue'; +import RouteFilter from 'pages/Route/Card/RouteFilter.vue'; + +import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; +import VnInputDate from 'components/common/VnInputDate.vue'; +import VnTable from 'components/VnTable/VnTable.vue'; +import { usePrintService } from 'src/composables/usePrintService'; + +const { openReport } = usePrintService(); +const { t } = useI18n(); +const { viewSummary } = useSummaryDialog(); +const quasar = useQuasar(); +const session = useSession(); +const selectedRows = ref([]); +const tableRef = ref([]); +const confirmationDialog = ref(false); +const startingDate = ref(null); +const router = useRouter(); +const routeFilter = { + include: [ + { + relation: 'workers', + scope: { + fields: ['id', 'firstName'], + }, + }, + ], +}; +const columns = computed(() => [ + { + align: 'left', + name: 'id', + label: 'Id', + chip: { + condition: () => true, + }, + isId: true, + columnFilter: false, + }, + { + align: 'left', + name: 'workerFk', + label: t('Worker'), + create: true, + component: 'select', + attrs: { + url: 'Workers/activeWithInheritedRole', + fields: ['id', 'name'], + useLike: false, + optionFilter: 'firstName', + find: { + value: 'workerFk', + label: 'workerUserName', + }, + }, + columnFilter: { + inWhere: true, + }, + useLike: false, + cardVisible: true, + format: (row, dashIfEmpty) => dashIfEmpty(row.travelRef), + }, + { + align: 'left', + name: 'agencyModeFk', + label: t('Agency'), + isTitle: true, + cardVisible: true, + create: true, + component: 'select', + attrs: { + url: 'agencyModes', + fields: ['id', 'name'], + find: { + value: 'agencyModeFk', + label: 'agencyName', + }, + }, + columnClass: 'expand', + }, + { + align: 'left', + name: 'vehicleFk', + label: t('Vehicle'), + cardVisible: true, + create: true, + component: 'select', + attrs: { + url: 'vehicles', + fields: ['id', 'numberPlate'], + optionLabel: 'numberPlate', + optionFilterValue: 'numberPlate', + find: { + value: 'vehicleFk', + label: 'vehiclePlateNumber', + }, + }, + columnFilter: { + inWhere: true, + }, + }, + { + align: 'left', + name: 'created', + label: t('Date'), + columnFilter: false, + cardVisible: true, + create: true, + component: 'date', + format: ({ date }) => toDate(date), + }, + { + align: 'left', + name: 'from', + label: t('From'), + visible: false, + cardVisible: true, + create: true, + component: 'date', + format: ({ date }) => toDate(date), + }, + { + align: 'left', + name: 'to', + label: t('To'), + visible: false, + cardVisible: true, + create: true, + component: 'date', + format: ({ date }) => toDate(date), + }, + { + align: 'center', + name: 'm3', + label: t('Volume'), + cardVisible: true, + columnClass: 'shrink', + }, + { + align: 'left', + name: 'started', + label: t('hourStarted'), + component: 'time', + columnFilter: false, + }, + { + align: 'left', + name: 'finished', + label: t('hourFinished'), + component: 'time', + columnFilter: false, + }, + { + align: 'center', + name: 'kmStart', + label: t('KmStart'), + columnClass: 'shrink', + create: true, + visible: false, + }, + { + align: 'center', + name: 'kmEnd', + label: t('KmEnd'), + columnClass: 'shrink', + create: true, + visible: false, + }, + { + align: 'left', + name: 'description', + label: t('Description'), + isTitle: true, + create: true, + component: 'input', + field: 'description', + }, + { + align: 'left', + name: 'isOk', + label: t('Served'), + component: 'checkbox', + columnFilter: false, + columnClass: 'shrink', + }, + { + align: 'right', + name: 'tableActions', + actions: [ + { + title: t('Add tickets'), + icon: 'vn:ticketAdd', + action: (row) => openTicketsDialog(row?.id), + }, + { + title: t('components.smartCard.viewSummary'), + icon: 'preview', + action: (row) => viewSummary(row?.id, RouteSummary), + }, + { + title: t('Route summary'), + icon: 'arrow_forward', + isPrimary: true, + action: (row) => navigate(row?.id), + }, + ], + }, +]); + +function navigate(id) { + router.push({ path: `/route/${id}` }); +} + +const cloneRoutes = () => { + if (!selectedRows.value.length || !startingDate.value) return; + axios.post('Routes/clone', { + created: startingDate.value, + ids: selectedRows.value.map((row) => row?.id), + }); + startingDate.value = null; + tableRef.value.reload(); +}; + +const showRouteReport = () => { + const ids = selectedRows.value.map((row) => row?.id); + const idString = ids.join(','); + let url = `Routes/${idString}/driver-route-pdf`; + let params = {}; + if (selectedRows.value.length >= 1) { + params = { + id: idString, + }; + url = `Routes/downloadZip`; + } + openReport(url, params, '_blank'); +}; + +function markAsServed() { + selectedRows.value.forEach(async (row) => { + await axios.patch(`Routes/${row?.id}`, { isOk: true }); + }); + tableRef.value.reload(); + startingDate.value = null; +} + +const openTicketsDialog = (id) => { + quasar + .dialog({ + component: RouteListTicketsDialog, + componentProps: { + id, + }, + }) + .onOk(() => tableRef.value.reload()); +}; +</script> + +<template> + <RouteSearchbar /> + <QDialog v-model="confirmationDialog"> + <QCard style="min-width: 350px"> + <QCardSection> + <p class="text-h6 q-ma-none">{{ t('Select the starting date') }}</p> + </QCardSection> + + <QCardSection class="q-pt-none"> + <VnInputDate + :label="t('Stating date')" + v-model="startingDate" + autofocus + /> + </QCardSection> + <QCardActions align="right"> + <QBtn flat :label="t('Cancel')" v-close-popup class="text-primary" /> + <QBtn color="primary" v-close-popup @click="cloneRoutes"> + {{ t('globals.clone') }} + </QBtn> + </QCardActions> + </QCard> + </QDialog> + <VnSubToolbar /> + <RightMenu> + <template #right-panel> + <RouteFilter data-key="RouteList" /> + </template> + </RightMenu> + <VnTable + class="route-list" + ref="tableRef" + data-key="RouteList" + url="Routes/filter" + :columns="columns" + :right-search="false" + :is-editable="true" + :filter="routeFilter" + redirect="route" + :row-click="false" + :create="{ + urlCreate: 'Routes', + title: t('Create route'), + onDataSaved: ({ id }) => tableRef.redirect(id), + formInitialData: {}, + }" + save-url="Routes/crud" + :disable-option="{ card: true }" + table-height="85vh" + v-model:selected="selectedRows" + :table="{ + 'row-key': 'id', + selection: 'multiple', + }" + > + <template #moreBeforeActions> + <QBtn + icon="vn:clone" + color="primary" + class="q-mr-sm" + :disable="!selectedRows?.length" + @click="confirmationDialog = true" + > + <QTooltip>{{ t('Clone Selected Routes') }}</QTooltip> + </QBtn> + <QBtn + icon="cloud_download" + color="primary" + class="q-mr-sm" + :disable="!selectedRows?.length" + @click="showRouteReport" + > + <QTooltip>{{ t('Download selected routes as PDF') }}</QTooltip> + </QBtn> + <QBtn + icon="check" + color="primary" + class="q-mr-sm" + :disable="!selectedRows?.length" + @click="markAsServed()" + > + <QTooltip>{{ t('Mark as served') }}</QTooltip> + </QBtn> + </template> + </VnTable> +</template> + +<style lang="scss" scoped> +.table-input-cell { + max-width: 143px; +} + +.route-list { + width: 100%; + max-height: 100%; +} + +.table-actions { + gap: 12px; +} +th:last-child, +td:last-child { + background-color: var(--vn-section-color); + position: sticky; + right: 0; +} +</style> +<i18n> +en: + newRoute: New Route + hourStarted: Started hour + hourFinished: Finished hour +es: + From: Desde + To: Hasta + Worker: Trabajador + Agency: Agencia + Vehicle: Vehículo + Volume: Volumen + Date: Fecha + Description: Descripción + Hour started: Hora inicio + Hour finished: Hora fin + KmStart: Km inicio + KmEnd: Km fin + Served: Servida + newRoute: Nueva Ruta + Clone Selected Routes: Clonar rutas seleccionadas + Select the starting date: Seleccione la fecha de inicio + Stating date: Fecha de inicio + Cancel: Cancelar + Mark as served: Marcar como servidas + Download selected routes as PDF: Descargar rutas seleccionadas como PDF + Add ticket: Añadir tickets + Preview: Vista previa + Summary: Resumen + Route is closed: La ruta está cerrada + Route is not served: La ruta no está servida + hourStarted: Hora de inicio + hourFinished: Hora de fin +</i18n> diff --git a/src/pages/Route/RouteList.vue b/src/pages/Route/RouteList.vue index 1e20df99c..20e5deb1e 100644 --- a/src/pages/Route/RouteList.vue +++ b/src/pages/Route/RouteList.vue @@ -1,34 +1,19 @@ <script setup> import { computed, ref } from 'vue'; import { useI18n } from 'vue-i18n'; -import { useSession } from 'composables/useSession'; import { useSummaryDialog } from 'src/composables/useSummaryDialog'; -import { useQuasar } from 'quasar'; -import { toDate } from 'src/filters'; -import { useRouter } from 'vue-router'; +import { toHour } from 'src/filters'; -import axios from 'axios'; import RouteSearchbar from 'pages/Route/Card/RouteSearchbar.vue'; -import RouteListTicketsDialog from 'pages/Route/Card/RouteListTicketsDialog.vue'; import RouteSummary from 'pages/Route/Card/RouteSummary.vue'; import RightMenu from 'src/components/common/RightMenu.vue'; import RouteFilter from 'pages/Route/Card/RouteFilter.vue'; - -import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; -import VnInputDate from 'components/common/VnInputDate.vue'; import VnTable from 'components/VnTable/VnTable.vue'; -import { usePrintService } from 'src/composables/usePrintService'; +import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue'; -const { openReport } = usePrintService(); const { t } = useI18n(); const { viewSummary } = useSummaryDialog(); -const quasar = useQuasar(); -const session = useSession(); -const selectedRows = ref([]); const tableRef = ref([]); -const confirmationDialog = ref(false); -const startingDate = ref(null); -const router = useRouter(); const routeFilter = { include: [ { @@ -42,12 +27,12 @@ const routeFilter = { const columns = computed(() => [ { align: 'left', + isId: true, name: 'id', label: 'Id', chip: { condition: () => true, }, - isId: true, columnFilter: false, }, { @@ -55,138 +40,52 @@ const columns = computed(() => [ name: 'workerFk', label: t('Worker'), create: true, - component: 'select', - attrs: { - url: 'Workers/activeWithInheritedRole', - fields: ['id', 'name'], - useLike: false, - optionFilter: 'firstName', - find: { - value: 'workerFk', - label: 'workerUserName', - }, - }, - columnFilter: { - inWhere: true, - }, - useLike: false, cardVisible: true, format: (row, dashIfEmpty) => dashIfEmpty(row.travelRef), + columnFilter: false, }, { align: 'left', - name: 'agencyModeFk', + name: 'agencyModeName', label: t('Agency'), - isTitle: true, cardVisible: true, create: true, - component: 'select', - attrs: { - url: 'agencyModes', - fields: ['id', 'name'], - find: { - value: 'agencyModeFk', - label: 'agencyName', - }, - }, columnClass: 'expand', + columnFilter: false, }, { align: 'left', - name: 'vehicleFk', + name: 'vehiclePlateNumber', label: t('Vehicle'), cardVisible: true, create: true, - component: 'select', - attrs: { - url: 'vehicles', - fields: ['id', 'numberPlate'], - optionLabel: 'numberPlate', - optionFilterValue: 'numberPlate', - find: { - value: 'vehicleFk', - label: 'vehiclePlateNumber', - }, - }, - columnFilter: { - inWhere: true, - }, - }, - { - align: 'left', - name: 'created', - label: t('Date'), columnFilter: false, - cardVisible: true, - create: true, - component: 'date', - format: ({ date }) => toDate(date), - }, - { - align: 'left', - name: 'from', - label: t('From'), - visible: false, - cardVisible: true, - create: true, - component: 'date', - format: ({ date }) => toDate(date), - }, - { - align: 'left', - name: 'to', - label: t('To'), - visible: false, - cardVisible: true, - create: true, - component: 'date', - format: ({ date }) => toDate(date), - }, - { - align: 'center', - name: 'm3', - label: t('Volume'), - cardVisible: true, - columnClass: 'shrink', }, { align: 'left', name: 'started', label: t('hourStarted'), - component: 'time', + cardVisible: true, columnFilter: false, + format: (row) => toHour(row.started), }, { align: 'left', name: 'finished', label: t('hourFinished'), - component: 'time', + cardVisible: true, columnFilter: false, - }, - { - align: 'center', - name: 'kmStart', - label: t('KmStart'), - columnClass: 'shrink', - create: true, - visible: false, - }, - { - align: 'center', - name: 'kmEnd', - label: t('KmEnd'), - columnClass: 'shrink', - create: true, - visible: false, + format: (row) => toHour(row.started), }, { align: 'left', name: 'description', label: t('Description'), + cardVisible: true, isTitle: true, create: true, - component: 'input', field: 'description', + columnFilter: false, }, { align: 'left', @@ -200,111 +99,29 @@ const columns = computed(() => [ align: 'right', name: 'tableActions', actions: [ - { - title: t('Add tickets'), - icon: 'vn:ticketAdd', - action: (row) => openTicketsDialog(row?.id), - }, { title: t('components.smartCard.viewSummary'), icon: 'preview', action: (row) => viewSummary(row?.id, RouteSummary), - }, - { - title: t('Route summary'), - icon: 'arrow_forward', - isPrimary: true, - action: (row) => navigate(row?.id), + color: 'primary', }, ], }, ]); - -function navigate(id) { - router.push({ path: `/route/${id}` }); -} - -const cloneRoutes = () => { - if (!selectedRows.value.length || !startingDate.value) return; - axios.post('Routes/clone', { - created: startingDate.value, - ids: selectedRows.value.map((row) => row?.id), - }); - startingDate.value = null; - tableRef.value.reload(); -}; - -const showRouteReport = () => { - const ids = selectedRows.value.map((row) => row?.id); - const idString = ids.join(','); - let url = `Routes/${idString}/driver-route-pdf`; - let params = {}; - if (selectedRows.value.length >= 1) { - params = { - id: idString, - }; - url = `Routes/downloadZip`; - } - openReport(url, params, '_blank'); -}; - -function markAsServed() { - selectedRows.value.forEach(async (row) => { - await axios.patch(`Routes/${row?.id}`, { isOk: true }); - }); - tableRef.value.reload(); - startingDate.value = null; -} - -const openTicketsDialog = (id) => { - quasar - .dialog({ - component: RouteListTicketsDialog, - componentProps: { - id, - }, - }) - .onOk(() => tableRef.value.reload()); -}; </script> - <template> <RouteSearchbar /> - <QDialog v-model="confirmationDialog"> - <QCard style="min-width: 350px"> - <QCardSection> - <p class="text-h6 q-ma-none">{{ t('Select the starting date') }}</p> - </QCardSection> - - <QCardSection class="q-pt-none"> - <VnInputDate - :label="t('Stating date')" - v-model="startingDate" - autofocus - /> - </QCardSection> - <QCardActions align="right"> - <QBtn flat :label="t('Cancel')" v-close-popup class="text-primary" /> - <QBtn color="primary" v-close-popup @click="cloneRoutes"> - {{ t('globals.clone') }} - </QBtn> - </QCardActions> - </QCard> - </QDialog> - <VnSubToolbar /> <RightMenu> <template #right-panel> <RouteFilter data-key="RouteList" /> </template> </RightMenu> <VnTable - class="route-list" ref="tableRef" data-key="RouteList" url="Routes/filter" :columns="columns" :right-search="false" - :is-editable="true" :filter="routeFilter" redirect="route" :row-click="false" @@ -314,98 +131,22 @@ const openTicketsDialog = (id) => { onDataSaved: ({ id }) => tableRef.redirect(id), formInitialData: {}, }" - save-url="Routes/crud" - :disable-option="{ card: true }" table-height="85vh" - v-model:selected="selectedRows" - :table="{ - 'row-key': 'id', - selection: 'multiple', - }" > - <template #moreBeforeActions> - <QBtn - icon="vn:clone" - color="primary" - class="q-mr-sm" - :disable="!selectedRows?.length" - @click="confirmationDialog = true" - > - <QTooltip>{{ t('Clone Selected Routes') }}</QTooltip> - </QBtn> - <QBtn - icon="cloud_download" - color="primary" - class="q-mr-sm" - :disable="!selectedRows?.length" - @click="showRouteReport" - > - <QTooltip>{{ t('Download selected routes as PDF') }}</QTooltip> - </QBtn> - <QBtn - icon="check" - color="primary" - class="q-mr-sm" - :disable="!selectedRows?.length" - @click="markAsServed()" - > - <QTooltip>{{ t('Mark as served') }}</QTooltip> - </QBtn> + <template #column-workerFk="{ row }"> + <span class="link" @click.stop> + {{ row?.workerUserName }} + <WorkerDescriptorProxy :id="row?.workerFk" v-if="row?.workerFk" /> + </span> </template> </VnTable> </template> - -<style lang="scss" scoped> -.table-input-cell { - max-width: 143px; -} - -.route-list { - width: 100%; - max-height: 100%; -} - -.table-actions { - gap: 12px; -} -th:last-child, -td:last-child { - background-color: var(--vn-section-color); - position: sticky; - right: 0; -} -</style> <i18n> -en: - newRoute: New Route - hourStarted: Started hour - hourFinished: Finished hour es: - From: Desde - To: Hasta Worker: Trabajador Agency: Agencia Vehicle: Vehículo - Volume: Volumen - Date: Fecha Description: Descripción Hour started: Hora inicio Hour finished: Hora fin - KmStart: Km inicio - KmEnd: Km fin - Served: Servida - newRoute: Nueva Ruta - Clone Selected Routes: Clonar rutas seleccionadas - Select the starting date: Seleccione la fecha de inicio - Stating date: Fecha de inicio - Cancel: Cancelar - Mark as served: Marcar como servidas - Download selected routes as PDF: Descargar rutas seleccionadas como PDF - Add ticket: Añadir tickets - Preview: Vista previa - Summary: Resumen - Route is closed: La ruta está cerrada - Route is not served: La ruta no está servida - hourStarted: Hora de inicio - hourFinished: Hora de fin </i18n> diff --git a/src/router/modules/route.js b/src/router/modules/route.js index 3c5c860cf..9a7b16df3 100644 --- a/src/router/modules/route.js +++ b/src/router/modules/route.js @@ -11,7 +11,14 @@ export default { component: RouterView, redirect: { name: 'RouteMain' }, menus: { - main: ['RouteList', 'RouteAutonomous', 'RouteRoadmap', 'CmrList', 'AgencyList'], + main: [ + 'RouteList', + 'RouteExtendedList', + 'RouteAutonomous', + 'RouteRoadmap', + 'CmrList', + 'AgencyList', + ], card: ['RouteBasicData', 'RouteTickets', 'RouteLog'], }, children: [ @@ -19,9 +26,6 @@ export default { path: '/route', name: 'RouteMain', component: () => import('src/components/common/VnSectionMain.vue'), - props: { - leftDrawer: false, - }, redirect: { name: 'RouteList' }, children: [ { @@ -33,6 +37,15 @@ export default { }, component: () => import('src/pages/Route/RouteList.vue'), }, + { + path: 'extended-list', + name: 'RouteExtendedList', + meta: { + title: 'RouteExtendedList', + icon: 'format_list_bulleted', + }, + component: () => import('src/pages/Route/RouteExtendedList.vue'), + }, { path: 'create', name: 'RouteCreate', @@ -78,7 +91,7 @@ export default { name: 'AgencyList', meta: { title: 'agencyList', - icon: 'view_list', + icon: 'list', }, component: () => import('src/pages/Route/Agency/AgencyList.vue'), From c400929c9956587d5cfe9cab8a2a10082ff1cd5b Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Tue, 24 Sep 2024 08:33:16 +0200 Subject: [PATCH 2/8] fix: refs #7129 translate page title --- src/i18n/locale/en.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index f6c9b15fd..11fe8c41c 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -135,7 +135,7 @@ globals: fiscalData: Fiscal data billingData: Billing data consignees: Consignees - 'address-create': New address + address-create: New address notes: Notes credits: Credits greuges: Greuges @@ -273,6 +273,7 @@ globals: clientsActionsMonitor: Clients and actions serial: Serial medical: Mutual + RouteExtendedList: Extended list supplier: Supplier created: Created worker: Worker From 70d640dc378e9c7df5ddcf2312284021d1a73b9c Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Tue, 24 Sep 2024 12:54:34 +0200 Subject: [PATCH 3/8] fix: refs #7129 some style issues --- src/pages/Route/Card/RouteListTicketsDialog.vue | 2 +- src/pages/Route/RouteList.vue | 3 +-- src/pages/Route/RouteRoadmap.vue | 2 +- src/pages/Route/RouteTickets.vue | 9 +++------ 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/pages/Route/Card/RouteListTicketsDialog.vue b/src/pages/Route/Card/RouteListTicketsDialog.vue index ba07f859f..b9b2ee36b 100644 --- a/src/pages/Route/Card/RouteListTicketsDialog.vue +++ b/src/pages/Route/Card/RouteListTicketsDialog.vue @@ -167,8 +167,8 @@ const setTicketsRoute = async () => { <QTd :props="props"> <span class="link"> {{ props.value }} - <TicketDescriptorProxy :id="props?.row?.id" /> </span> + <TicketDescriptorProxy :id="props?.row?.id" /> </QTd> </template> <template #body-cell-client="props"> diff --git a/src/pages/Route/RouteList.vue b/src/pages/Route/RouteList.vue index 20e5deb1e..b6c23f8ed 100644 --- a/src/pages/Route/RouteList.vue +++ b/src/pages/Route/RouteList.vue @@ -46,7 +46,7 @@ const columns = computed(() => [ }, { align: 'left', - name: 'agencyModeName', + name: 'agencyName', label: t('Agency'), cardVisible: true, create: true, @@ -124,7 +124,6 @@ const columns = computed(() => [ :right-search="false" :filter="routeFilter" redirect="route" - :row-click="false" :create="{ urlCreate: 'Routes', title: t('Create route'), diff --git a/src/pages/Route/RouteRoadmap.vue b/src/pages/Route/RouteRoadmap.vue index d921dab1f..3687442f5 100644 --- a/src/pages/Route/RouteRoadmap.vue +++ b/src/pages/Route/RouteRoadmap.vue @@ -87,7 +87,7 @@ const columns = computed(() => [ actions: [ { title: t('Ver cmr'), - icon: 'visibility', + icon: 'preview', isPrimary: true, action: (row) => viewSummary(row?.id, RoadmapSummary), }, diff --git a/src/pages/Route/RouteTickets.vue b/src/pages/Route/RouteTickets.vue index 5960636b0..3bdad4fec 100644 --- a/src/pages/Route/RouteTickets.vue +++ b/src/pages/Route/RouteTickets.vue @@ -342,10 +342,7 @@ const openSmsDialog = async () => { </template> <template #body-cell-city="{ value, row }"> <QTd auto-width> - <span - class="text-primary cursor-pointer" - @click="goToBuscaman(row)" - > + <span class="link" @click="goToBuscaman(row)"> {{ value }} <QTooltip>{{ t('Open buscaman') }}</QTooltip> </span> @@ -353,7 +350,7 @@ const openSmsDialog = async () => { </template> <template #body-cell-client="{ value, row }"> <QTd auto-width> - <span class="text-primary cursor-pointer"> + <span class="link"> {{ value }} <CustomerDescriptorProxy :id="row?.clientFk" /> </span> @@ -361,7 +358,7 @@ const openSmsDialog = async () => { </template> <template #body-cell-ticket="{ value, row }"> <QTd auto-width class="text-center"> - <span class="text-primary cursor-pointer"> + <span class="link"> {{ value }} <TicketDescriptorProxy :id="row?.id" /> </span> From f0c2baa60edf2d281c393e69b2df5c097fd61361 Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Tue, 24 Sep 2024 12:56:14 +0200 Subject: [PATCH 4/8] fix: refs #7129 remove consoleLog --- src/filters/toHour.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/filters/toHour.js b/src/filters/toHour.js index b5cc61c81..52df9c8cd 100644 --- a/src/filters/toHour.js +++ b/src/filters/toHour.js @@ -1,7 +1,6 @@ import isValidDate from 'filters/isValidDate'; export default function toHour(date) { - console.log('date: ', date); if (!isValidDate(date)) { return '--:--'; } From 27b699ebf4f96fcdff05f58a35c1893655824076 Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Wed, 25 Sep 2024 11:16:27 +0200 Subject: [PATCH 5/8] fix: refs #7129 some component styles --- src/i18n/locale/en.yml | 8 +- src/i18n/locale/es.yml | 6 +- src/pages/Item/ItemFixedPrice.vue | 2 - src/pages/Route/Agency/AgencyList.vue | 1 - src/pages/Route/RouteExtendedList.vue | 119 +++++++----------------- src/pages/Route/RouteList.vue | 28 ++---- src/pages/Route/locale/en.yml | 25 +++++ src/pages/Route/locale/es.yml | 25 +++++ src/pages/Travel/Card/TravelSummary.vue | 2 +- 9 files changed, 101 insertions(+), 115 deletions(-) create mode 100644 src/pages/Route/locale/en.yml create mode 100644 src/pages/Route/locale/es.yml diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index 6b9a4a1e1..f1e502998 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -111,7 +111,7 @@ globals: basicData: Basic data log: Logs parkingList: Parkings list - agencyList: Agencies list + agencyList: Agencies agency: Agency workCenters: Work centers modes: Modes @@ -207,7 +207,7 @@ globals: roadmap: Roadmap stops: Stops routes: Routes - cmrsList: CMRs list + cmrsList: CMRs RouteList: List routeCreate: New route RouteRoadmap: Roadmaps @@ -273,7 +273,7 @@ globals: clientsActionsMonitor: Clients and actions serial: Serial medical: Mutual - RouteExtendedList: Extended list + RouteExtendedList: Router supplier: Supplier created: Created worker: Worker @@ -880,7 +880,7 @@ route: tickets: Tickets log: Log autonomous: Autonomous - RouteExtendedList: Extended list + RouteExtendedList: Router cmr: list: results: results diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index 15eba6706..e62553446 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -113,7 +113,7 @@ globals: basicData: Datos básicos log: Historial parkingList: Listado de parkings - agencyList: Listado de agencias + agencyList: Agencias agency: Agencia workCenters: Centros de trabajo modes: Modos @@ -211,13 +211,13 @@ globals: roadmap: Troncales stops: Paradas routes: Rutas - cmrsList: Listado de CMRs + cmrsList: CMRs RouteList: Listado routeCreate: Nueva ruta RouteRoadmap: Troncales RouteRoadmapCreate: Crear troncal autonomous: Autónomos - RouteExtendedList: Listado extendido + RouteExtendedList: Enrutador suppliers: Proveedores supplier: Proveedor supplierCreate: Nuevo proveedor diff --git a/src/pages/Item/ItemFixedPrice.vue b/src/pages/Item/ItemFixedPrice.vue index fddf154a2..2158065bd 100644 --- a/src/pages/Item/ItemFixedPrice.vue +++ b/src/pages/Item/ItemFixedPrice.vue @@ -600,11 +600,9 @@ function handleOnDataSave({ CrudModelRef }) { .q-table th, .q-table td { padding-inline: 5px !important; - // text-align: -webkit-right; } .q-table tbody td { max-width: none; - .q-td.col { & .vnInputDate { min-width: 90px; diff --git a/src/pages/Route/Agency/AgencyList.vue b/src/pages/Route/Agency/AgencyList.vue index 30ee52f54..9d456c1da 100644 --- a/src/pages/Route/Agency/AgencyList.vue +++ b/src/pages/Route/Agency/AgencyList.vue @@ -76,7 +76,6 @@ const columns = computed(() => [ <div class="list-container"> <div class="list"> <VnTable - ref="tableRef" data-key="AgencyList" url="Agencies" order="name" diff --git a/src/pages/Route/RouteExtendedList.vue b/src/pages/Route/RouteExtendedList.vue index 1e20df99c..b90434f4f 100644 --- a/src/pages/Route/RouteExtendedList.vue +++ b/src/pages/Route/RouteExtendedList.vue @@ -1,11 +1,11 @@ <script setup> import { computed, ref } from 'vue'; import { useI18n } from 'vue-i18n'; -import { useSession } from 'composables/useSession'; import { useSummaryDialog } from 'src/composables/useSummaryDialog'; import { useQuasar } from 'quasar'; import { toDate } from 'src/filters'; import { useRouter } from 'vue-router'; +import { usePrintService } from 'src/composables/usePrintService'; import axios from 'axios'; import RouteSearchbar from 'pages/Route/Card/RouteSearchbar.vue'; @@ -13,17 +13,14 @@ import RouteListTicketsDialog from 'pages/Route/Card/RouteListTicketsDialog.vue' import RouteSummary from 'pages/Route/Card/RouteSummary.vue'; import RightMenu from 'src/components/common/RightMenu.vue'; import RouteFilter from 'pages/Route/Card/RouteFilter.vue'; - import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue'; import VnInputDate from 'components/common/VnInputDate.vue'; import VnTable from 'components/VnTable/VnTable.vue'; -import { usePrintService } from 'src/composables/usePrintService'; const { openReport } = usePrintService(); const { t } = useI18n(); const { viewSummary } = useSummaryDialog(); const quasar = useQuasar(); -const session = useSession(); const selectedRows = ref([]); const tableRef = ref([]); const confirmationDialog = ref(false); @@ -53,7 +50,7 @@ const columns = computed(() => [ { align: 'left', name: 'workerFk', - label: t('Worker'), + label: t('route.Worker'), create: true, component: 'select', attrs: { @@ -76,7 +73,7 @@ const columns = computed(() => [ { align: 'left', name: 'agencyModeFk', - label: t('Agency'), + label: t('route.Agency'), isTitle: true, cardVisible: true, create: true, @@ -94,7 +91,7 @@ const columns = computed(() => [ { align: 'left', name: 'vehicleFk', - label: t('Vehicle'), + label: t('route.Vehicle'), cardVisible: true, create: true, component: 'select', @@ -115,7 +112,7 @@ const columns = computed(() => [ { align: 'left', name: 'created', - label: t('Date'), + label: t('route.Date'), columnFilter: false, cardVisible: true, create: true, @@ -125,7 +122,7 @@ const columns = computed(() => [ { align: 'left', name: 'from', - label: t('From'), + label: t('route.From'), visible: false, cardVisible: true, create: true, @@ -135,7 +132,7 @@ const columns = computed(() => [ { align: 'left', name: 'to', - label: t('To'), + label: t('route.To'), visible: false, cardVisible: true, create: true, @@ -145,28 +142,28 @@ const columns = computed(() => [ { align: 'center', name: 'm3', - label: t('Volume'), + label: 'm3', cardVisible: true, columnClass: 'shrink', }, { align: 'left', name: 'started', - label: t('hourStarted'), + label: t('route.hourStarted'), component: 'time', columnFilter: false, }, { align: 'left', name: 'finished', - label: t('hourFinished'), + label: t('route.hourFinished'), component: 'time', columnFilter: false, }, { align: 'center', name: 'kmStart', - label: t('KmStart'), + label: t('route.KmStart'), columnClass: 'shrink', create: true, visible: false, @@ -174,7 +171,7 @@ const columns = computed(() => [ { align: 'center', name: 'kmEnd', - label: t('KmEnd'), + label: t('route.KmEnd'), columnClass: 'shrink', create: true, visible: false, @@ -182,7 +179,7 @@ const columns = computed(() => [ { align: 'left', name: 'description', - label: t('Description'), + label: t('route.Description'), isTitle: true, create: true, component: 'input', @@ -191,7 +188,7 @@ const columns = computed(() => [ { align: 'left', name: 'isOk', - label: t('Served'), + label: t('route.Served'), component: 'checkbox', columnFilter: false, columnClass: 'shrink', @@ -201,20 +198,22 @@ const columns = computed(() => [ name: 'tableActions', actions: [ { - title: t('Add tickets'), + title: t('route.Add tickets'), icon: 'vn:ticketAdd', action: (row) => openTicketsDialog(row?.id), + isPrimary: true, }, { - title: t('components.smartCard.viewSummary'), + title: t('route.components.smartCard.viewSummary'), icon: 'preview', action: (row) => viewSummary(row?.id, RouteSummary), + isPrimary: true, }, { - title: t('Route summary'), + title: t('route.Route summary'), icon: 'arrow_forward', - isPrimary: true, action: (row) => navigate(row?.id), + isPrimary: true, }, ], }, @@ -226,7 +225,7 @@ function navigate(id) { const cloneRoutes = () => { if (!selectedRows.value.length || !startingDate.value) return; - axios.post('Routes/clone', { + axios.post('route.Routes/clone', { created: startingDate.value, ids: selectedRows.value.map((row) => row?.id), }); @@ -273,20 +272,25 @@ const openTicketsDialog = (id) => { <QDialog v-model="confirmationDialog"> <QCard style="min-width: 350px"> <QCardSection> - <p class="text-h6 q-ma-none">{{ t('Select the starting date') }}</p> + <p class="text-h6 q-ma-none">{{ t('route.Select the starting date') }}</p> </QCardSection> <QCardSection class="q-pt-none"> <VnInputDate - :label="t('Stating date')" + :label="t('route.Stating date')" v-model="startingDate" autofocus /> </QCardSection> <QCardActions align="right"> - <QBtn flat :label="t('Cancel')" v-close-popup class="text-primary" /> + <QBtn + flat + :label="t('route.Cancel')" + v-close-popup + class="text-primary" + /> <QBtn color="primary" v-close-popup @click="cloneRoutes"> - {{ t('globals.clone') }} + {{ t('route.globals.clone') }} </QBtn> </QCardActions> </QCard> @@ -310,7 +314,7 @@ const openTicketsDialog = (id) => { :row-click="false" :create="{ urlCreate: 'Routes', - title: t('Create route'), + title: t('route.createRoute'), onDataSaved: ({ id }) => tableRef.redirect(id), formInitialData: {}, }" @@ -331,7 +335,7 @@ const openTicketsDialog = (id) => { :disable="!selectedRows?.length" @click="confirmationDialog = true" > - <QTooltip>{{ t('Clone Selected Routes') }}</QTooltip> + <QTooltip>{{ t('route.Clone Selected Routes') }}</QTooltip> </QBtn> <QBtn icon="cloud_download" @@ -340,7 +344,7 @@ const openTicketsDialog = (id) => { :disable="!selectedRows?.length" @click="showRouteReport" > - <QTooltip>{{ t('Download selected routes as PDF') }}</QTooltip> + <QTooltip>{{ t('route.Download selected routes as PDF') }}</QTooltip> </QBtn> <QBtn icon="check" @@ -349,63 +353,8 @@ const openTicketsDialog = (id) => { :disable="!selectedRows?.length" @click="markAsServed()" > - <QTooltip>{{ t('Mark as served') }}</QTooltip> + <QTooltip>{{ t('route.Mark as served') }}</QTooltip> </QBtn> </template> </VnTable> </template> - -<style lang="scss" scoped> -.table-input-cell { - max-width: 143px; -} - -.route-list { - width: 100%; - max-height: 100%; -} - -.table-actions { - gap: 12px; -} -th:last-child, -td:last-child { - background-color: var(--vn-section-color); - position: sticky; - right: 0; -} -</style> -<i18n> -en: - newRoute: New Route - hourStarted: Started hour - hourFinished: Finished hour -es: - From: Desde - To: Hasta - Worker: Trabajador - Agency: Agencia - Vehicle: Vehículo - Volume: Volumen - Date: Fecha - Description: Descripción - Hour started: Hora inicio - Hour finished: Hora fin - KmStart: Km inicio - KmEnd: Km fin - Served: Servida - newRoute: Nueva Ruta - Clone Selected Routes: Clonar rutas seleccionadas - Select the starting date: Seleccione la fecha de inicio - Stating date: Fecha de inicio - Cancel: Cancelar - Mark as served: Marcar como servidas - Download selected routes as PDF: Descargar rutas seleccionadas como PDF - Add ticket: Añadir tickets - Preview: Vista previa - Summary: Resumen - Route is closed: La ruta está cerrada - Route is not served: La ruta no está servida - hourStarted: Hora de inicio - hourFinished: Hora de fin -</i18n> diff --git a/src/pages/Route/RouteList.vue b/src/pages/Route/RouteList.vue index b6c23f8ed..d0feb9a65 100644 --- a/src/pages/Route/RouteList.vue +++ b/src/pages/Route/RouteList.vue @@ -38,7 +38,7 @@ const columns = computed(() => [ { align: 'left', name: 'workerFk', - label: t('Worker'), + label: t('route.Worker'), create: true, cardVisible: true, format: (row, dashIfEmpty) => dashIfEmpty(row.travelRef), @@ -47,7 +47,7 @@ const columns = computed(() => [ { align: 'left', name: 'agencyName', - label: t('Agency'), + label: t('route.Agency'), cardVisible: true, create: true, columnClass: 'expand', @@ -56,7 +56,7 @@ const columns = computed(() => [ { align: 'left', name: 'vehiclePlateNumber', - label: t('Vehicle'), + label: t('route.Vehicle'), cardVisible: true, create: true, columnFilter: false, @@ -64,7 +64,7 @@ const columns = computed(() => [ { align: 'left', name: 'started', - label: t('hourStarted'), + label: t('route.hourStarted'), cardVisible: true, columnFilter: false, format: (row) => toHour(row.started), @@ -72,7 +72,7 @@ const columns = computed(() => [ { align: 'left', name: 'finished', - label: t('hourFinished'), + label: t('route.hourFinished'), cardVisible: true, columnFilter: false, format: (row) => toHour(row.started), @@ -80,7 +80,7 @@ const columns = computed(() => [ { align: 'left', name: 'description', - label: t('Description'), + label: t('route.Description'), cardVisible: true, isTitle: true, create: true, @@ -90,7 +90,7 @@ const columns = computed(() => [ { align: 'left', name: 'isOk', - label: t('Served'), + label: t('route.Served'), component: 'checkbox', columnFilter: false, columnClass: 'shrink', @@ -103,7 +103,7 @@ const columns = computed(() => [ title: t('components.smartCard.viewSummary'), icon: 'preview', action: (row) => viewSummary(row?.id, RouteSummary), - color: 'primary', + isPrimary: true, }, ], }, @@ -117,7 +117,6 @@ const columns = computed(() => [ </template> </RightMenu> <VnTable - ref="tableRef" data-key="RouteList" url="Routes/filter" :columns="columns" @@ -126,7 +125,7 @@ const columns = computed(() => [ redirect="route" :create="{ urlCreate: 'Routes', - title: t('Create route'), + title: t('route.createRoute'), onDataSaved: ({ id }) => tableRef.redirect(id), formInitialData: {}, }" @@ -140,12 +139,3 @@ const columns = computed(() => [ </template> </VnTable> </template> -<i18n> -es: - Worker: Trabajador - Agency: Agencia - Vehicle: Vehículo - Description: Descripción - Hour started: Hora inicio - Hour finished: Hora fin -</i18n> diff --git a/src/pages/Route/locale/en.yml b/src/pages/Route/locale/en.yml new file mode 100644 index 000000000..617d704d2 --- /dev/null +++ b/src/pages/Route/locale/en.yml @@ -0,0 +1,25 @@ +route: + Worker: Worker + Agency: Agency + Vehicle: Vehicle + Description: Description + hourStarted: H.Start + hourFinished: H.End + createRoute: Create route + From: From + To: To + Date: Date + KmStart: Km start + KmEnd: Km end + Served: Served + Clone Selected Routes: Clone selected routes + Select the starting date: Select the starting date + Stating date: Starting date + Cancel: Cancel + Mark as served: Mark as served + Download selected routes as PDF: Download selected routes as PDF + Add ticket: Add ticket + Preview: Preview + Summary: Summary + Route is closed: Route is closed + Route is not served: Route is not served diff --git a/src/pages/Route/locale/es.yml b/src/pages/Route/locale/es.yml new file mode 100644 index 000000000..ed96ad915 --- /dev/null +++ b/src/pages/Route/locale/es.yml @@ -0,0 +1,25 @@ +route: + Worker: Trabajador + Agency: Agencia + Vehicle: Vehículo + Description: Descripción + hourStarted: H.Inicio + hourFinished: H.Fin + createRoute: Crear ruta + From: Desde + To: Hasta + Date: Fecha + KmStart: Km inicio + KmEnd: Km fin + Served: Servida + Clone Selected Routes: Clonar rutas seleccionadas + Select the starting date: Seleccione la fecha de inicio + Stating date: Fecha de inicio + Cancel: Cancelar + Mark as served: Marcar como servidas + Download selected routes as PDF: Descargar rutas seleccionadas como PDF + Add ticket: Añadir tickets + Preview: Vista previa + Summary: Resumen + Route is closed: La ruta está cerrada + Route is not served: La ruta no está servida diff --git a/src/pages/Travel/Card/TravelSummary.vue b/src/pages/Travel/Card/TravelSummary.vue index d7dce911b..829eb3a17 100644 --- a/src/pages/Travel/Card/TravelSummary.vue +++ b/src/pages/Travel/Card/TravelSummary.vue @@ -319,7 +319,7 @@ const getLink = (param) => `#/travel/${entityId.value}/${param}`; </template> <template #body-cell-id="{ col, value }"> <QTd> - <QBtn v-if="col.name === 'id'" flat color="blue"> + <QBtn v-if="col.name === 'id'" flat class="link"> {{ value }} <EntryDescriptorProxy :id="value" /> </QBtn> From ca568c31ca5168b9825d2cd529fb955c5532899b Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Wed, 25 Sep 2024 11:51:51 +0200 Subject: [PATCH 6/8] fix: refs #7129 clone post --- src/pages/Route/RouteExtendedList.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Route/RouteExtendedList.vue b/src/pages/Route/RouteExtendedList.vue index b90434f4f..bf5d844f6 100644 --- a/src/pages/Route/RouteExtendedList.vue +++ b/src/pages/Route/RouteExtendedList.vue @@ -225,7 +225,7 @@ function navigate(id) { const cloneRoutes = () => { if (!selectedRows.value.length || !startingDate.value) return; - axios.post('route.Routes/clone', { + axios.post('Routes/clone', { created: startingDate.value, ids: selectedRows.value.map((row) => row?.id), }); From cea5edd506e93e043507b8b94591bfa749d77f1b Mon Sep 17 00:00:00 2001 From: pablone <pablone@verdnatura.es> Date: Wed, 25 Sep 2024 12:33:19 +0200 Subject: [PATCH 7/8] fix: refs #7129 translate --- src/pages/Route/RouteExtendedList.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Route/RouteExtendedList.vue b/src/pages/Route/RouteExtendedList.vue index bf5d844f6..51da4ec12 100644 --- a/src/pages/Route/RouteExtendedList.vue +++ b/src/pages/Route/RouteExtendedList.vue @@ -290,7 +290,7 @@ const openTicketsDialog = (id) => { class="text-primary" /> <QBtn color="primary" v-close-popup @click="cloneRoutes"> - {{ t('route.globals.clone') }} + {{ t('globals.clone') }} </QBtn> </QCardActions> </QCard> From a2b7e8198202298613ea40ad592112da4af7c019 Mon Sep 17 00:00:00 2001 From: jgallego <jgallego@verdnatura.es> Date: Thu, 26 Sep 2024 16:23:18 +0200 Subject: [PATCH 8/8] feat: warehouse --- src/pages/Travel/Card/TravelThermographsForm.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Travel/Card/TravelThermographsForm.vue b/src/pages/Travel/Card/TravelThermographsForm.vue index 1d3410903..42acf30b9 100644 --- a/src/pages/Travel/Card/TravelThermographsForm.vue +++ b/src/pages/Travel/Card/TravelThermographsForm.vue @@ -101,7 +101,7 @@ const setEditDefaultParams = async () => { thermographForm.value.thermographFk = data.thermographFk; thermographForm.value.state = data.result; thermographForm.value.reference = data.dms?.reference; - thermographForm.value.warehouseId = data.dms?.warehouseFk; + thermographForm.value.warehouseId = data.warehouseFk; thermographForm.value.companyId = data.dms?.companyFk; thermographForm.value.dmsTypeId = data.dms?.dmsTypeFk; thermographForm.value.description = data.dms?.description || '';