diff --git a/src/css/app.scss b/src/css/app.scss index 770df8e01..2e524e693 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -141,15 +141,6 @@ select:-webkit-autofill { background-color: var(--vn-section-color); } -.q-checkbox { - & .q-checkbox__label { - color: var(--vn-text-color); - } - & .q-checkbox__inner { - color: var(--vn-label-color); - } -} - .tr-header { color: var(--vn-label-color); } diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index 942018b84..7a341dded 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -1166,6 +1166,12 @@ item: type: Type intrastat: Intrastat origin: Origin +zone: + pageTitles: + zones: Zone + zonesList: Zones + deliveryList: Delivery days + upcomingList: Upcoming deliveries components: topbar: {} itemsFilterPanel: diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index 3de5af50c..9286cbccb 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -1165,6 +1165,12 @@ item: type: Tipo intrastat: Intrastat origin: Origen +zone: + pageTitles: + zones: Zona + zonesList: Zonas + deliveryList: Días de entrega + upcomingList: Próximos repartos components: topbar: {} itemsFilterPanel: diff --git a/src/pages/Claim/Card/ClaimDescriptor.vue b/src/pages/Claim/Card/ClaimDescriptor.vue index 3b5dd82b8..aae999117 100644 --- a/src/pages/Claim/Card/ClaimDescriptor.vue +++ b/src/pages/Claim/Card/ClaimDescriptor.vue @@ -74,8 +74,9 @@ const filter = { const STATE_COLOR = { pending: 'warning', - managed: 'info', + incomplete: 'info', resolved: 'positive', + canceled: 'negative', }; function stateColor(code) { return STATE_COLOR[code]; @@ -142,7 +143,7 @@ onMounted(async () => { diff --git a/src/pages/Claim/Card/ClaimSummary.vue b/src/pages/Claim/Card/ClaimSummary.vue index c4c2785d5..36a26008e 100644 --- a/src/pages/Claim/Card/ClaimSummary.vue +++ b/src/pages/Claim/Card/ClaimSummary.vue @@ -14,6 +14,7 @@ import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue'; import VnTitle from 'src/components/common/VnTitle.vue'; import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue'; import axios from 'axios'; +import dashIfEmpty from 'src/filters/dashIfEmpty'; const route = useRoute(); const router = useRouter(); @@ -101,8 +102,9 @@ const detailsColumns = ref([ const STATE_COLOR = { pending: 'warning', - managed: 'info', + incomplete: 'info', resolved: 'positive', + canceled: 'negative', }; function stateColor(code) { return STATE_COLOR[code]; @@ -260,7 +262,7 @@ async function changeState(value) { diff --git a/src/pages/Zone/Card/ZoneCard.vue b/src/pages/Zone/Card/ZoneCard.vue new file mode 100644 index 000000000..948636c55 --- /dev/null +++ b/src/pages/Zone/Card/ZoneCard.vue @@ -0,0 +1,6 @@ + + diff --git a/src/pages/Zone/Card/ZoneDescriptor.vue b/src/pages/Zone/Card/ZoneDescriptor.vue index 665cb6f0e..b56443c84 100644 --- a/src/pages/Zone/Card/ZoneDescriptor.vue +++ b/src/pages/Zone/Card/ZoneDescriptor.vue @@ -8,7 +8,6 @@ import VnLv from 'src/components/ui/VnLv.vue'; import ZoneDescriptorMenuItems from './ZoneDescriptorMenuItems.vue'; import useCardDescription from 'src/composables/useCardDescription'; -import { toDate } from 'src/filters'; const $props = defineProps({ id: { @@ -22,28 +21,11 @@ const route = useRoute(); const { t } = useI18n(); const filter = { - fields: [ - 'id', - 'ref', - 'shipped', - 'landed', - 'totalEntries', - 'warehouseInFk', - 'warehouseOutFk', - 'cargoSupplierFk', - 'agencyModeFk', - ], include: [ { - relation: 'warehouseIn', + relation: 'agencyMode', scope: { - fields: ['name'], - }, - }, - { - relation: 'warehouseOut', - scope: { - fields: ['name'], + fields: ['name', 'id'], }, }, ], @@ -58,6 +40,13 @@ const data = ref(useCardDescription()); const setData = (entity) => { data.value = useCardDescription(entity.ref, entity.id); }; + +function extractHour(dateTime) { + const date = new Date(dateTime); + const hours = date.getHours().toString().padStart(2, '0'); + const minutes = date.getMinutes().toString().padStart(2, '0'); + return `${hours}:${minutes}`; +} - es: - Go to module index: Ir al índice del módulo + Summary: Detalles The travel will be deleted: El envío será eliminado Do you want to delete this travel?: ¿Quieres eliminar este envío? All travels with current agency: Todos los envíos con la agencia actual + Agency: Agencia + Closing hour: Hora de cierre + traveling days: Días de viaje + Price: Precio + Bonus: Bonificación diff --git a/src/router/modules/index.js b/src/router/modules/index.js index 302ba7fe0..2fe40038f 100644 --- a/src/router/modules/index.js +++ b/src/router/modules/index.js @@ -15,6 +15,7 @@ import Department from './department'; import Entry from './entry'; import roadmap from './roadmap'; import Parking from './parking'; +import Zone from './zone'; export default [ Item, @@ -34,4 +35,5 @@ export default [ Entry, roadmap, Parking, + Zone, ]; diff --git a/src/router/modules/zone.js b/src/router/modules/zone.js new file mode 100644 index 000000000..bd74a76f3 --- /dev/null +++ b/src/router/modules/zone.js @@ -0,0 +1,158 @@ +import { RouterView } from 'vue-router'; + +export default { + path: '/zone', + name: 'Zone', + meta: { + title: 'zones', + icon: 'vn:zone', + moduleName: 'Zone', + }, + component: RouterView, + redirect: { name: 'ZoneMain' }, + menus: { + main: ['ZoneList' /*'ZoneDeliveryList', 'ZoneUpcomingList'*/], + card: [ + // + ], + }, + children: [ + { + path: '/zone', + name: 'ZoneMain', + component: () => import('src/pages/Zone/ZoneMain.vue'), + redirect: { name: 'ZoneList' }, + children: [ + { + path: 'list', + name: 'ZoneList', + meta: { + title: 'zonesList', + icon: 'vn:zone', + }, + component: () => import('src/pages/Zone/ZoneList.vue'), + }, + // { + // path: 'create', + // name: 'ZoneCreate', + // meta: { + // title: 'zoneCreate', + // icon: 'create', + // }, + // component: () => import('src/pages/Zone/ZoneCreate.vue'), + // }, + // { + // path: ':id/edit', + // name: 'ZoneEdit', + // meta: { + // title: 'zoneEdit', + // icon: 'edit', + // }, + // component: () => import('src/pages/Zone/ZoneCreate.vue'), + // }, + // { + // path: 'counter', + // name: 'ZoneCounter', + // meta: { + // title: 'zoneCounter', + // icon: 'add_circle', + // }, + // component: () => import('src/pages/Zone/ZoneCounter.vue'), + // }, + ], + }, + { + name: 'ZoneCard', + path: ':id', + component: () => import('src/pages/Zone/Card/ZoneCard.vue'), + redirect: { name: 'ZoneSummary' }, + children: [ + { + name: 'ZoneSummary', + path: 'summary', + meta: { + title: 'summary', + icon: 'launch', + }, + component: () => import('src/pages/Zone/Card/ZoneSummary.vue'), + }, + // { + // path: '/zone/delivery', + // name: 'ZoneDeliveryMain', + // component: () => import('src/pages/Zone/ZoneMain.vue'), + // redirect: { name: 'ZoneDeliveryList' }, + // children: [ + // { + // path: 'list', + // name: 'ZoneDeliveryList', + // meta: { + // title: 'deliveryList', + // icon: 'today', + // }, + // component: () => + // import('src/pages/Zone/Delivery/ZoneDeliveryList.vue'), + // }, + // { + // path: 'create', + // name: 'ZoneDeliveryCreate', + // meta: { + // title: 'deliveryCreate', + // icon: 'create', + // }, + // component: () => + // import('src/pages/Zone/Delivery/ZoneDeliveryCreate.vue'), + // }, + // { + // path: ':id/edit', + // name: 'ZoneDeliveryEdit', + // meta: { + // title: 'deliveryEdit', + // icon: 'edit', + // }, + // component: () => + // import('src/pages/Zone/Delivery/ZoneDeliveryCreate.vue'), + // }, + // ], + // }, + // { + // path: '/zone/upcoming', + // name: 'ZoneUpcomingMain', + // component: () => import('src/pages/Zone/ZoneMain.vue'), + // redirect: { name: 'ZoneUpcomingList' }, + // children: [ + // { + // path: 'list', + // name: 'ZoneUpcomingList', + // meta: { + // title: 'upcomingList', + // icon: 'today', + // }, + // component: () => + // import('src/pages/Zone/Upcoming/ZoneUpcomingList.vue'), + // }, + // { + // path: 'create', + // name: 'ZoneUpcomingCreate', + // meta: { + // title: 'upcomingCreate', + // icon: 'create', + // }, + // component: () => + // import('src/pages/Zone/Upcoming/ZoneUpcomingCreate.vue'), + // }, + // { + // path: ':id/edit', + // name: 'ZoneUpcomingEdit', + // meta: { + // title: 'upcomingEdit', + // icon: 'edit', + // }, + // component: () => + // import('src/pages/Zone/Upcoming/ZoneUpcomingCreate.vue'), + // }, + // ], + // }, + ], + }, + ], +}; diff --git a/src/router/routes.js b/src/router/routes.js index 51e726a62..14bf6665f 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -15,6 +15,7 @@ import order from 'src/router/modules/order'; import entry from 'src/router/modules/entry'; import roadmap from 'src/router/modules/roadmap'; import parking from 'src/router/modules/parking'; +import zone from 'src/router/modules/zone'; const routes = [ { @@ -71,6 +72,7 @@ const routes = [ roadmap, entry, parking, + zone, { path: '/:catchAll(.*)*', name: 'NotFound', diff --git a/src/stores/useNavigationStore.js b/src/stores/useNavigationStore.js index f075301f6..ee1e04e9b 100644 --- a/src/stores/useNavigationStore.js +++ b/src/stores/useNavigationStore.js @@ -21,6 +21,7 @@ export const useNavigationStore = defineStore('navigationStore', () => { 'ticket', 'worker', 'wagon', + 'zone', ]; const pinnedModules = ref([]); const role = useRole();