Create route tickets
This commit is contained in:
parent
6629a2d59a
commit
67f862ebe3
|
@ -62,14 +62,8 @@ export default {
|
||||||
selectRows: 'Select all { numberRows } row(s)',
|
selectRows: 'Select all { numberRows } row(s)',
|
||||||
allRows: 'All { numberRows } row(s)',
|
allRows: 'All { numberRows } row(s)',
|
||||||
markAll: 'Mark all',
|
markAll: 'Mark all',
|
||||||
requiredField: 'Required field',
|
|
||||||
class: 'clase',
|
|
||||||
type: 'type',
|
|
||||||
reason: 'reason',
|
|
||||||
noResults: 'No results',
|
noResults: 'No results',
|
||||||
system: 'System',
|
system: 'System',
|
||||||
fieldRequired: 'Field required',
|
|
||||||
allowedFilesText: 'Allowed file types: { allowedContentTypes }',
|
|
||||||
},
|
},
|
||||||
errors: {
|
errors: {
|
||||||
statusUnauthorized: 'Access denied',
|
statusUnauthorized: 'Access denied',
|
||||||
|
@ -137,8 +131,6 @@ export default {
|
||||||
log: 'Log',
|
log: 'Log',
|
||||||
sms: 'Sms',
|
sms: 'Sms',
|
||||||
creditManagement: 'Credit management',
|
creditManagement: 'Credit management',
|
||||||
creditContracts: 'Credit contracts',
|
|
||||||
creditOpinion: 'Credit opinion',
|
|
||||||
others: 'Others',
|
others: 'Others',
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
|
@ -274,8 +266,6 @@ export default {
|
||||||
buys: 'Buys',
|
buys: 'Buys',
|
||||||
notes: 'Notes',
|
notes: 'Notes',
|
||||||
log: 'Log',
|
log: 'Log',
|
||||||
create: 'Create',
|
|
||||||
latestBuys: 'Latest buys',
|
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
newEntry: 'New entry',
|
newEntry: 'New entry',
|
||||||
|
@ -331,12 +321,6 @@ export default {
|
||||||
booked: 'Booked',
|
booked: 'Booked',
|
||||||
raid: 'Raid',
|
raid: 'Raid',
|
||||||
excludedFromAvailable: 'Inventory',
|
excludedFromAvailable: 'Inventory',
|
||||||
agency: 'Agency',
|
|
||||||
warehouseOut: 'Warehouse Out',
|
|
||||||
warehouseIn: 'Warehouse In',
|
|
||||||
shipped: 'Shipped',
|
|
||||||
landed: 'Landed',
|
|
||||||
id: 'ID',
|
|
||||||
},
|
},
|
||||||
buys: {
|
buys: {
|
||||||
groupingPrice: 'Grouping price',
|
groupingPrice: 'Grouping price',
|
||||||
|
@ -350,12 +334,6 @@ export default {
|
||||||
grouping: 'Grouping',
|
grouping: 'Grouping',
|
||||||
buyingValue: 'Buying value',
|
buyingValue: 'Buying value',
|
||||||
packagingFk: 'Box',
|
packagingFk: 'Box',
|
||||||
file: 'File',
|
|
||||||
name: 'Name',
|
|
||||||
producer: 'Producer',
|
|
||||||
type: 'Type',
|
|
||||||
color: 'Color',
|
|
||||||
id: 'ID',
|
|
||||||
},
|
},
|
||||||
notes: {
|
notes: {
|
||||||
observationType: 'Observation type',
|
observationType: 'Observation type',
|
||||||
|
@ -366,36 +344,6 @@ export default {
|
||||||
landed: 'Landed',
|
landed: 'Landed',
|
||||||
warehouseOut: 'Warehouse Out',
|
warehouseOut: 'Warehouse Out',
|
||||||
},
|
},
|
||||||
latestBuys: {
|
|
||||||
picture: 'Picture',
|
|
||||||
itemFk: 'Item ID',
|
|
||||||
packing: 'Packing',
|
|
||||||
grouping: 'Grouping',
|
|
||||||
quantity: 'Quantity',
|
|
||||||
description: 'Description',
|
|
||||||
size: 'Size',
|
|
||||||
tags: 'Tags',
|
|
||||||
type: 'Type',
|
|
||||||
intrastat: 'Intrastat',
|
|
||||||
origin: 'Origin',
|
|
||||||
weightByPiece: 'Weight/Piece',
|
|
||||||
isActive: 'Active',
|
|
||||||
family: 'Family',
|
|
||||||
entryFk: 'Entry',
|
|
||||||
buyingValue: 'Buying value',
|
|
||||||
freightValue: 'Freight value',
|
|
||||||
comissionValue: 'Commission value',
|
|
||||||
packageValue: 'Package value',
|
|
||||||
isIgnored: 'Is ignored',
|
|
||||||
price2: 'Grouping',
|
|
||||||
price3: 'Packing',
|
|
||||||
minPrice: 'Min',
|
|
||||||
ektFk: 'Ekt',
|
|
||||||
weight: 'Weight',
|
|
||||||
packagingFk: 'Package',
|
|
||||||
packingOut: 'Package out',
|
|
||||||
landing: 'Landing',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
ticket: {
|
ticket: {
|
||||||
pageTitles: {
|
pageTitles: {
|
||||||
|
@ -547,7 +495,6 @@ export default {
|
||||||
responsible: 'Responsible',
|
responsible: 'Responsible',
|
||||||
worker: 'Worker',
|
worker: 'Worker',
|
||||||
redelivery: 'Redelivery',
|
redelivery: 'Redelivery',
|
||||||
returnOfMaterial: 'RMA',
|
|
||||||
},
|
},
|
||||||
basicData: {
|
basicData: {
|
||||||
customer: 'Customer',
|
customer: 'Customer',
|
||||||
|
@ -686,7 +633,6 @@ export default {
|
||||||
vat: 'VAT',
|
vat: 'VAT',
|
||||||
dueDay: 'Due day',
|
dueDay: 'Due day',
|
||||||
intrastat: 'Intrastat',
|
intrastat: 'Intrastat',
|
||||||
corrective: 'Corrective',
|
|
||||||
log: 'Logs',
|
log: 'Logs',
|
||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
|
@ -941,6 +887,7 @@ export default {
|
||||||
create: 'Create',
|
create: 'Create',
|
||||||
basicData: 'Basic Data',
|
basicData: 'Basic Data',
|
||||||
summary: 'Summary',
|
summary: 'Summary',
|
||||||
|
tickets: 'Tickets'
|
||||||
},
|
},
|
||||||
cmr: {
|
cmr: {
|
||||||
list: {
|
list: {
|
||||||
|
@ -1070,7 +1017,6 @@ export default {
|
||||||
m3Price: 'M3 Price',
|
m3Price: 'M3 Price',
|
||||||
routePrice: 'Route price',
|
routePrice: 'Route price',
|
||||||
minimumKm: 'Minimum Km',
|
minimumKm: 'Minimum Km',
|
||||||
addRow: 'Add row',
|
|
||||||
},
|
},
|
||||||
consumption: {
|
consumption: {
|
||||||
entry: 'Entry',
|
entry: 'Entry',
|
||||||
|
@ -1087,8 +1033,8 @@ export default {
|
||||||
extraCommunity: 'Extra community',
|
extraCommunity: 'Extra community',
|
||||||
travelCreate: 'New travel',
|
travelCreate: 'New travel',
|
||||||
basicData: 'Basic data',
|
basicData: 'Basic data',
|
||||||
history: 'Log',
|
history: 'History',
|
||||||
thermographs: 'Thermograph',
|
thermographs: 'Termographs',
|
||||||
},
|
},
|
||||||
summary: {
|
summary: {
|
||||||
confirmed: 'Confirmed',
|
confirmed: 'Confirmed',
|
||||||
|
@ -1100,10 +1046,7 @@ export default {
|
||||||
entries: 'Entries',
|
entries: 'Entries',
|
||||||
cloneShipping: 'Clone travel',
|
cloneShipping: 'Clone travel',
|
||||||
CloneTravelAndEntries: 'Clone travel and his entries',
|
CloneTravelAndEntries: 'Clone travel and his entries',
|
||||||
deleteTravel: 'Delete travel',
|
|
||||||
AddEntry: 'Add entry',
|
AddEntry: 'Add entry',
|
||||||
thermographs: 'Thermographs',
|
|
||||||
hb: 'HB',
|
|
||||||
},
|
},
|
||||||
variables: {
|
variables: {
|
||||||
search: 'Id/Reference',
|
search: 'Id/Reference',
|
||||||
|
@ -1115,50 +1058,6 @@ export default {
|
||||||
continent: 'Continent out',
|
continent: 'Continent out',
|
||||||
totalEntries: 'Total entries',
|
totalEntries: 'Total entries',
|
||||||
},
|
},
|
||||||
basicData: {
|
|
||||||
reference: 'Reference',
|
|
||||||
agency: 'Agency',
|
|
||||||
shipped: 'Shipped',
|
|
||||||
landed: 'Landed',
|
|
||||||
warehouseOut: 'Warehouse Out',
|
|
||||||
warehouseIn: 'Warehouse In',
|
|
||||||
delivered: 'Delivered',
|
|
||||||
received: 'Received',
|
|
||||||
},
|
|
||||||
thermographs: {
|
|
||||||
code: 'Code',
|
|
||||||
temperature: 'Temperature',
|
|
||||||
state: 'State',
|
|
||||||
destination: 'Destination',
|
|
||||||
created: 'Created',
|
|
||||||
thermograph: 'Thermograph',
|
|
||||||
reference: 'Reference',
|
|
||||||
type: 'Type',
|
|
||||||
company: 'Company',
|
|
||||||
warehouse: 'Warehouse',
|
|
||||||
travelFileDescription: 'Travel id { travelId }',
|
|
||||||
file: 'File',
|
|
||||||
description: 'Description',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
item: {
|
|
||||||
pageTitles: {
|
|
||||||
items: 'Items',
|
|
||||||
list: 'List',
|
|
||||||
diary: 'Diary',
|
|
||||||
tags: 'Tags',
|
|
||||||
},
|
|
||||||
descriptor: {
|
|
||||||
item: 'Item',
|
|
||||||
buyer: 'Buyer',
|
|
||||||
color: 'Color',
|
|
||||||
category: 'Category',
|
|
||||||
stems: 'Stems',
|
|
||||||
visible: 'Visible',
|
|
||||||
available: 'Available',
|
|
||||||
warehouseText: 'Calculated on the warehouse of { warehouseName }',
|
|
||||||
itemDiary: 'Item diary',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
topbar: {},
|
topbar: {},
|
||||||
|
@ -1183,9 +1082,5 @@ export default {
|
||||||
addToPinned: 'Add to pinned',
|
addToPinned: 'Add to pinned',
|
||||||
removeFromPinned: 'Remove from pinned',
|
removeFromPinned: 'Remove from pinned',
|
||||||
},
|
},
|
||||||
VnLv: {
|
|
||||||
copyText: '{copyValue} has been copied to the clipboard',
|
|
||||||
},
|
|
||||||
iban_tooltip: 'IBAN: ES21 1234 5678 90 0123456789',
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -941,6 +941,7 @@ export default {
|
||||||
create: 'Crear',
|
create: 'Crear',
|
||||||
basicData: 'Datos básicos',
|
basicData: 'Datos básicos',
|
||||||
summary: 'Summary',
|
summary: 'Summary',
|
||||||
|
tickets: 'Tickets'
|
||||||
},
|
},
|
||||||
cmr: {
|
cmr: {
|
||||||
list: {
|
list: {
|
||||||
|
|
|
@ -0,0 +1,325 @@
|
||||||
|
<script setup>
|
||||||
|
import VnPaginate from 'components/ui/VnPaginate.vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import { computed, ref } from 'vue';
|
||||||
|
import { dashIfEmpty } from 'src/filters';
|
||||||
|
import VnInputDate from 'components/common/VnInputDate.vue';
|
||||||
|
import VnInput from 'components/common/VnInput.vue';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { QIcon, useQuasar } from 'quasar';
|
||||||
|
import { useSession } from 'composables/useSession';
|
||||||
|
import RouteListTicketsDialog from 'pages/Route/Card/RouteListTicketsDialog.vue';
|
||||||
|
import TicketDescriptorProxy from 'pages/Ticket/Card/TicketDescriptorProxy.vue';
|
||||||
|
import CustomerDescriptorProxy from 'pages/Customer/Card/CustomerDescriptorProxy.vue';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
const quasar = useQuasar();
|
||||||
|
const session = useSession();
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
|
const selectedRows = ref([]);
|
||||||
|
const columns = computed(() => [
|
||||||
|
{
|
||||||
|
name: 'order',
|
||||||
|
label: t('Order'),
|
||||||
|
field: (row) => dashIfEmpty(row?.priority),
|
||||||
|
sortable: false,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'street',
|
||||||
|
label: t('Street'),
|
||||||
|
field: (row) => row?.street,
|
||||||
|
sortable: false,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'city',
|
||||||
|
label: t('City'),
|
||||||
|
field: (row) => row?.city,
|
||||||
|
sortable: false,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'pc',
|
||||||
|
label: t('PC'),
|
||||||
|
field: (row) => row?.postalCode,
|
||||||
|
sortable: false,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'client',
|
||||||
|
label: t('Client'),
|
||||||
|
field: (row) => row?.nickname,
|
||||||
|
sortable: false,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'warehouse',
|
||||||
|
label: t('Warehouse'),
|
||||||
|
field: (row) => row?.warehouseName,
|
||||||
|
sortable: false,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'packages',
|
||||||
|
label: t('Packages'),
|
||||||
|
field: (row) => row?.packages,
|
||||||
|
sortable: false,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'volume',
|
||||||
|
label: 'm³',
|
||||||
|
field: (row) => row?.volume,
|
||||||
|
sortable: false,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'packaging',
|
||||||
|
label: t('Packaging'),
|
||||||
|
field: (row) => row?.ipt,
|
||||||
|
sortable: false,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'ticket',
|
||||||
|
label: t('Ticket'),
|
||||||
|
field: (row) => row?.id,
|
||||||
|
sortable: false,
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'observations',
|
||||||
|
label: '',
|
||||||
|
field: (row) => row?.ticketObservation,
|
||||||
|
sortable: false,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
const refreshKey = ref(0);
|
||||||
|
const confirmationDialog = ref(false);
|
||||||
|
const startingDate = ref(null);
|
||||||
|
|
||||||
|
const cloneRoutes = () => {
|
||||||
|
axios.post('Routes/clone', {
|
||||||
|
created: startingDate.value,
|
||||||
|
ids: selectedRows.value.map((row) => row?.id),
|
||||||
|
});
|
||||||
|
refreshKey.value++;
|
||||||
|
startingDate.value = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const showRouteReport = () => {
|
||||||
|
const ids = selectedRows.value.map((row) => row?.id);
|
||||||
|
const idString = ids.join(',');
|
||||||
|
let url;
|
||||||
|
|
||||||
|
if (selectedRows.value.length <= 1) {
|
||||||
|
url = `api/Routes/${idString}/driver-route-pdf?access_token=${session.getToken()}`;
|
||||||
|
} else {
|
||||||
|
const params = new URLSearchParams({
|
||||||
|
access_token: session.getToken(),
|
||||||
|
id: idString,
|
||||||
|
});
|
||||||
|
url = `api/Routes/downloadZip?${params.toString()}`;
|
||||||
|
}
|
||||||
|
window.open(url, '_blank');
|
||||||
|
};
|
||||||
|
|
||||||
|
const markAsServed = () => {
|
||||||
|
selectedRows.value.forEach((row) => {
|
||||||
|
if (row?.id) {
|
||||||
|
axios.patch(`Routes/${row?.id}`, { isOk: true });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
refreshKey.value++;
|
||||||
|
startingDate.value = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const openTicketsDialog = () => {
|
||||||
|
quasar
|
||||||
|
.dialog({
|
||||||
|
component: RouteListTicketsDialog,
|
||||||
|
componentProps: {
|
||||||
|
id: route.params.id,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.onOk(() => refreshKey.value++);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<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('Clone') }}
|
||||||
|
</QBtn>
|
||||||
|
</QCardActions>
|
||||||
|
</QCard>
|
||||||
|
</QDialog>
|
||||||
|
<QPage class="column items-center">
|
||||||
|
<QToolbar class="bg-vn-dark justify-end">
|
||||||
|
<div id="st-actions" class="q-pa-sm">
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
</QToolbar>
|
||||||
|
<div class="route-list">
|
||||||
|
<VnPaginate
|
||||||
|
:key="refreshKey"
|
||||||
|
data-key="RouteTicketList"
|
||||||
|
url="Routes/getTickets"
|
||||||
|
:filter="{ id: route.params.id }"
|
||||||
|
:order="['priority ASC']"
|
||||||
|
auto-load
|
||||||
|
>
|
||||||
|
<template #body="{ rows }">
|
||||||
|
<div class="q-pa-md">
|
||||||
|
<QTable
|
||||||
|
v-model:selected="selectedRows"
|
||||||
|
:columns="columns"
|
||||||
|
:rows="rows"
|
||||||
|
:rows-per-page-options="[0]"
|
||||||
|
row-key="id"
|
||||||
|
flat
|
||||||
|
hide-pagination
|
||||||
|
selection="multiple"
|
||||||
|
>
|
||||||
|
<template #body-cell-order="{ row }">
|
||||||
|
<QTd class="order-field">
|
||||||
|
<VnInput
|
||||||
|
v-model="row.priority"
|
||||||
|
is-outlined
|
||||||
|
/>
|
||||||
|
</QTd>
|
||||||
|
</template>
|
||||||
|
<template #body-cell-city="{ value, row }">
|
||||||
|
<QTd auto-width>
|
||||||
|
<span
|
||||||
|
class="text-primary cursor-pointer"
|
||||||
|
@click="openBuscaman(entity?.route, row)"
|
||||||
|
>
|
||||||
|
{{ value }}
|
||||||
|
</span>
|
||||||
|
</QTd>
|
||||||
|
</template>
|
||||||
|
<template #body-cell-client="{ value, row }">
|
||||||
|
<QTd auto-width>
|
||||||
|
<span class="text-primary cursor-pointer">
|
||||||
|
{{ value }}
|
||||||
|
<CustomerDescriptorProxy :id="row?.clientFk" />
|
||||||
|
</span>
|
||||||
|
</QTd>
|
||||||
|
</template>
|
||||||
|
<template #body-cell-ticket="{ value, row }">
|
||||||
|
<QTd auto-width class="text-center">
|
||||||
|
<span class="text-primary cursor-pointer">
|
||||||
|
{{ value }}
|
||||||
|
<TicketDescriptorProxy :id="row?.id" />
|
||||||
|
</span>
|
||||||
|
</QTd>
|
||||||
|
</template>
|
||||||
|
<template #body-cell-observations="{ value }">
|
||||||
|
<QTd auto-width>
|
||||||
|
<div class="flex items-center no-wrap table-actions">
|
||||||
|
<QIcon
|
||||||
|
name="delete"
|
||||||
|
color="primary"
|
||||||
|
class="cursor-pointer"
|
||||||
|
size="xs"
|
||||||
|
>
|
||||||
|
<QTooltip>{{ t('globals.remove') }}</QTooltip>
|
||||||
|
</QIcon>
|
||||||
|
<QIcon
|
||||||
|
v-if="value"
|
||||||
|
name="vn:notes"
|
||||||
|
color="primary"
|
||||||
|
class="cursor-pointer"
|
||||||
|
>
|
||||||
|
<QTooltip>{{ value }}</QTooltip>
|
||||||
|
</QIcon>
|
||||||
|
</div>
|
||||||
|
</QTd>
|
||||||
|
</template>
|
||||||
|
</QTable>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</VnPaginate>
|
||||||
|
</div>
|
||||||
|
<QPageSticky :offset="[20, 20]">
|
||||||
|
<QBtn fab icon="add" color="primary" @click="openTicketsDialog">
|
||||||
|
<QTooltip>
|
||||||
|
{{ t('newRoute') }}
|
||||||
|
</QTooltip>
|
||||||
|
</QBtn>
|
||||||
|
</QPageSticky>
|
||||||
|
</QPage>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.route-list {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-field {
|
||||||
|
max-width: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-actions {
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<i18n>
|
||||||
|
en:
|
||||||
|
newRoute: New Route
|
||||||
|
es:
|
||||||
|
Order: Orden
|
||||||
|
Street: Dirección fiscal
|
||||||
|
City: Población
|
||||||
|
PC: CP
|
||||||
|
Client: Cliente
|
||||||
|
Warehouse: Almacén
|
||||||
|
Packages: Bultos
|
||||||
|
Packaging: Encajado
|
||||||
|
</i18n>
|
|
@ -11,7 +11,7 @@ export default {
|
||||||
redirect: { name: 'RouteMain' },
|
redirect: { name: 'RouteMain' },
|
||||||
menus: {
|
menus: {
|
||||||
main: ['RouteList', 'CmrList'],
|
main: ['RouteList', 'CmrList'],
|
||||||
card: ['RouteBasicData'],
|
card: ['RouteBasicData', 'RouteTickets'],
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
|
@ -72,6 +72,15 @@ export default {
|
||||||
},
|
},
|
||||||
component: () => import('pages/Route/Card/RouteSummary.vue'),
|
component: () => import('pages/Route/Card/RouteSummary.vue'),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'tickets',
|
||||||
|
name: 'RouteTickets',
|
||||||
|
meta: {
|
||||||
|
title: 'tickets',
|
||||||
|
icon: 'vn:ticket',
|
||||||
|
},
|
||||||
|
component: () => import('src/pages/Route/RouteTickets.vue'),
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in New Issue