From 684215fc4613eb9e24f98775bc713eef916529d5 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Mon, 9 Sep 2024 09:59:22 +0200 Subject: [PATCH 01/18] feat(AccountBasicData): add twoFactorFk --- src/pages/Account/Card/AccountBasicData.vue | 9 ++++++++- src/pages/Account/locale/en.yml | 1 + src/pages/Account/locale/es.yml | 1 + test/cypress/integration/outLogin/twoFactor.spec.js | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/pages/Account/Card/AccountBasicData.vue b/src/pages/Account/Card/AccountBasicData.vue index f38299f9e..b223c4bc0 100644 --- a/src/pages/Account/Card/AccountBasicData.vue +++ b/src/pages/Account/Card/AccountBasicData.vue @@ -24,7 +24,7 @@ watch( <template> <FormModel ref="formModelRef" - :url="`VnUsers/preview`" + url="VnUsers/preview" :url-update="`VnUsers/${route.params.id}/update-user`" :filter="accountFilter" model="Accounts" @@ -43,6 +43,13 @@ watch( option-value="code" option-label="code" /> + <VnSelect + url="TwoFactorTypes" + v-model="data.twoFactorFk" + :label="t('account.card.twoFactor')" + option-value="code" + option-label="code" + /> </div> </template> </FormModel> diff --git a/src/pages/Account/locale/en.yml b/src/pages/Account/locale/en.yml index 3cf861fb2..fe8707eb8 100644 --- a/src/pages/Account/locale/en.yml +++ b/src/pages/Account/locale/en.yml @@ -35,6 +35,7 @@ account: willDeactivated: User will be deactivated activated: User activated! deactivated: User deactivated! + twoFactor: Two factor actions: setPassword: Set password disableAccount: diff --git a/src/pages/Account/locale/es.yml b/src/pages/Account/locale/es.yml index b53a0153c..112ffe9cc 100644 --- a/src/pages/Account/locale/es.yml +++ b/src/pages/Account/locale/es.yml @@ -32,6 +32,7 @@ account: activated: ¡Usuario activado! deactivated: ¡Usuario desactivado! newUser: Nuevo usuario + twoFactor: Doble factor privileges: delegate: Puede delegar privilegios actions: diff --git a/test/cypress/integration/outLogin/twoFactor.spec.js b/test/cypress/integration/outLogin/twoFactor.spec.js index 4d8561f0f..259ddfc0f 100755 --- a/test/cypress/integration/outLogin/twoFactor.spec.js +++ b/test/cypress/integration/outLogin/twoFactor.spec.js @@ -12,7 +12,7 @@ describe('Two Factor', () => { cy.request( 'PATCH', `http://localhost:3000/api/VnUsers/${userId}/update-user?access_token=DEFAULT_TOKEN`, - { twoFactor: 'email' } + { twoFactorFk: 'email' } ); }); From 8be1833f9e7bbf6b9d6bc8163b84eb090ecbb1b8 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Fri, 13 Sep 2024 08:49:36 +0200 Subject: [PATCH 02/18] refs #7155 scopeDays --- src/pages/Travel/TravelList.vue | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pages/Travel/TravelList.vue b/src/pages/Travel/TravelList.vue index c7ad908f9..0fba3a8d3 100644 --- a/src/pages/Travel/TravelList.vue +++ b/src/pages/Travel/TravelList.vue @@ -11,6 +11,7 @@ import TravelSummary from './Card/TravelSummary.vue'; import VnSearchbar from 'components/ui/VnSearchbar.vue'; import { toDate } from 'src/filters'; import { getDateQBadgeColor } from 'src/composables/getDateQBadgeColor.js'; +import { dateRange } from 'src/filters'; const { viewSummary } = useSummaryDialog(); const router = useRouter(); const { t } = useI18n(); @@ -29,6 +30,18 @@ const cloneTravel = (travelData) => { redirectToCreateView(stringifiedTravelData); }; +const handleScopeDays = (params, days, callback) => { + const [from, to] = dateRange(Date.vnNew()); + if (!days) { + Object.assign(params, { from, to, scopeDays: 1 }); + } else { + params.from = from; + to.setDate(to.getDate() + days); + params.to = to; + } + if (callback) callback(); +}; + const redirectToCreateView = (queryParams) => { router.push({ name: 'TravelCreate', query: { travelData: queryParams } }); }; From 842fb9de5fb1773738cca1d4f236a29171320287 Mon Sep 17 00:00:00 2001 From: carlossa <carlossa@verdnatura.es> Date: Fri, 13 Sep 2024 12:52:25 +0200 Subject: [PATCH 03/18] refs #7155 scopeDays fix --- src/components/VnTable/VnTable.vue | 1 + src/pages/Travel/TravelList.vue | 43 +++++++++++++++++++----------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 0ed3de261..798213c08 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -301,6 +301,7 @@ defineExpose({ redirect: redirectFn, selected, CrudModelRef, + params, }); function handleOnDataSaved(_) { diff --git a/src/pages/Travel/TravelList.vue b/src/pages/Travel/TravelList.vue index 0fba3a8d3..a0976e92c 100644 --- a/src/pages/Travel/TravelList.vue +++ b/src/pages/Travel/TravelList.vue @@ -12,6 +12,8 @@ import VnSearchbar from 'components/ui/VnSearchbar.vue'; import { toDate } from 'src/filters'; import { getDateQBadgeColor } from 'src/composables/getDateQBadgeColor.js'; import { dateRange } from 'src/filters'; +import VnInputNumber from 'src/components/common/VnInputNumber.vue'; + const { viewSummary } = useSummaryDialog(); const router = useRouter(); const { t } = useI18n(); @@ -25,22 +27,26 @@ const $props = defineProps({ }, }); const entityId = computed(() => $props.id || route.params.id); + +onMounted(async () => { + stateStore.rightDrawer = true; + handleScopeDays(); +}); + const cloneTravel = (travelData) => { const stringifiedTravelData = JSON.stringify(travelData); redirectToCreateView(stringifiedTravelData); }; -const handleScopeDays = (params, days, callback) => { - const [from, to] = dateRange(Date.vnNew()); - if (!days) { - Object.assign(params, { from, to, scopeDays: 1 }); - } else { - params.from = from; - to.setDate(to.getDate() + days); - params.to = to; - } - if (callback) callback(); -}; +function handleScopeDays(days = 7) { + days = +days; + tableRef.value.params.scopeDays = days; + const [landedFrom, landedTo] = dateRange(Date.vnNew()); + landedTo.setDate(landedTo.getDate() + days); + + tableRef.value.params.landedFrom = landedFrom; + tableRef.value.params.landedTo = landedTo; +} const redirectToCreateView = (queryParams) => { router.push({ name: 'TravelCreate', query: { travelData: queryParams } }); @@ -50,10 +56,6 @@ const redirectCreateEntryView = (travelData) => { router.push({ name: 'EntryCreate', query: { travelFk: travelData.id } }); }; -onMounted(async () => { - stateStore.rightDrawer = true; -}); - const columns = computed(() => [ { align: 'left', @@ -254,6 +256,17 @@ const columns = computed(() => [ :class="{ 'is-active': row.isReceived }" /> </template> + <template #moreFilterPanel="{ params }"> + <VnInputNumber + :label="t('params.scopeDays')" + v-model.number="params.scopeDays" + @keyup.enter="(evt) => handleScopeDays(evt.target.value)" + @remove="handleScopeDays()" + class="q-px-xs q-pr-lg" + filled + dense + /> + </template> </VnTable> </template> From 56f8cbe615de8996b100cab085716c45a62629fd Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Tue, 17 Sep 2024 11:37:44 +0200 Subject: [PATCH 04/18] fix: refs #7353 sales person filter and locale --- src/components/ui/VnFilterPanel.vue | 15 +++++++++++++-- src/pages/Monitor/Ticket/MonitorTicketFilter.vue | 11 ++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/components/ui/VnFilterPanel.vue b/src/components/ui/VnFilterPanel.vue index cebdc4bbf..12525c7cc 100644 --- a/src/components/ui/VnFilterPanel.vue +++ b/src/components/ui/VnFilterPanel.vue @@ -6,7 +6,7 @@ import { useRoute } from 'vue-router'; import toDate from 'filters/toDate'; import VnFilterPanelChip from 'components/ui/VnFilterPanelChip.vue'; -const { t } = useI18n(); +const { t, te } = useI18n(); const $props = defineProps({ modelValue: { type: Object, @@ -200,6 +200,11 @@ function sanitizer(params) { } return params; } + +function getLocale(label) { + const globalLocale = `globals.params.${label}`; + return te(globalLocale) ? t(globalLocale) : t(`params.${label}`); +} </script> <template> @@ -248,7 +253,12 @@ function sanitizer(params) { :removable="!unremovableParams?.includes(chip.label)" @remove="remove(chip.label)" > - <slot name="tags" :tag="chip" :format-fn="formatValue"> + <slot + name="tags" + :tag="chip" + :format-fn="formatValue" + :locale-fn="getLocale" + > <div class="q-gutter-x-xs"> <strong>{{ chip.label }}:</strong> <span>"{{ formatValue(chip.value) }}"</span> @@ -262,6 +272,7 @@ function sanitizer(params) { :tags="customTags" :format-fn="formatValue" :search-fn="search" + :locale-fn="getLocale" /> </div> </QItem> diff --git a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue index 3c95f5cdd..01e9d65ec 100644 --- a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue +++ b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue @@ -11,7 +11,7 @@ import FetchData from 'src/components/FetchData.vue'; import { dateRange } from 'src/filters'; defineProps({ dataKey: { type: String, required: true } }); -const { t } = useI18n(); +const { t, te } = useI18n(); const warehouses = ref(); const groupedStates = ref(); @@ -26,6 +26,11 @@ const handleScopeDays = (params, days, callback) => { } if (callback) callback(); }; + +const getLocale = (label) => { + const globalLocale = `globals.params.${label}`; + return te(globalLocale) ? t(globalLocale) : t(`params.${label}`); +}; </script> <template> <FetchData url="Warehouses" auto-load @on-fetch="(data) => (warehouses = data)" /> @@ -46,7 +51,7 @@ const handleScopeDays = (params, days, callback) => { > <template #tags="{ tag, formatFn }"> <div class="q-gutter-x-xs"> - <strong v-text="`${t(`params.${tag.label}`)}:`" /> + <strong v-text="`${getLocale(tag.label)}:`" /> <span v-text="formatFn(tag.value)" /> </div> </template> @@ -110,7 +115,7 @@ const handleScopeDays = (params, days, callback) => { url="Workers/search" :params="{ departmentCodes: ['VT'] }" is-outlined - option-value="code" + option-value="id" option-label="name" :no-one="true" > From 3f03f0d4e91e6cf40b51ccd264a206937a634782 Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Tue, 17 Sep 2024 12:41:57 +0200 Subject: [PATCH 05/18] fix: refs #7353 show unremovable params --- src/pages/Monitor/Ticket/MonitorTicketFilter.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue index 01e9d65ec..2d48bd44e 100644 --- a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue +++ b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue @@ -48,6 +48,7 @@ const getLocale = (label) => { :hidden-tags="['from', 'to', 'search']" :custom-tags="['scopeDays']" :unremovable-params="['from', 'to', 'scopeDays']" + search-url="saleMonitorTickets" > <template #tags="{ tag, formatFn }"> <div class="q-gutter-x-xs"> From 2cb2ce16efacf8919e000026995a446b03b12820 Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Tue, 17 Sep 2024 12:56:50 +0200 Subject: [PATCH 06/18] fix: refs #7353 locale --- src/pages/Monitor/Ticket/MonitorTicketFilter.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue index 2d48bd44e..57248d580 100644 --- a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue +++ b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue @@ -28,8 +28,9 @@ const handleScopeDays = (params, days, callback) => { }; const getLocale = (label) => { - const globalLocale = `globals.params.${label}`; - return te(globalLocale) ? t(globalLocale) : t(`params.${label}`); + const param = label.split('.').at(-1); + const globalLocale = `globals.params.${param}`; + return te(globalLocale) ? t(globalLocale) : t(`params.${param}`); }; </script> <template> From ed4a4e1e59ab55b6698c7d50ab85e8036bd0f2bf Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Tue, 17 Sep 2024 12:57:43 +0200 Subject: [PATCH 07/18] fix: refs #7353 rollback --- src/components/ui/VnFilterPanel.vue | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/components/ui/VnFilterPanel.vue b/src/components/ui/VnFilterPanel.vue index 12525c7cc..03b01b0ab 100644 --- a/src/components/ui/VnFilterPanel.vue +++ b/src/components/ui/VnFilterPanel.vue @@ -200,11 +200,6 @@ function sanitizer(params) { } return params; } - -function getLocale(label) { - const globalLocale = `globals.params.${label}`; - return te(globalLocale) ? t(globalLocale) : t(`params.${label}`); -} </script> <template> @@ -253,12 +248,7 @@ function getLocale(label) { :removable="!unremovableParams?.includes(chip.label)" @remove="remove(chip.label)" > - <slot - name="tags" - :tag="chip" - :format-fn="formatValue" - :locale-fn="getLocale" - > + <slot name="tags" :tag="chip" :format-fn="formatValue"> <div class="q-gutter-x-xs"> <strong>{{ chip.label }}:</strong> <span>"{{ formatValue(chip.value) }}"</span> @@ -272,7 +262,6 @@ function getLocale(label) { :tags="customTags" :format-fn="formatValue" :search-fn="search" - :locale-fn="getLocale" /> </div> </QItem> From eb6f12ae3b28229372d16a87a4f46b7155da0ca5 Mon Sep 17 00:00:00 2001 From: jorgep <jorgep@verdnatura.es> Date: Tue, 17 Sep 2024 12:58:06 +0200 Subject: [PATCH 08/18] fix: refs #7353 rollback --- src/components/ui/VnFilterPanel.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ui/VnFilterPanel.vue b/src/components/ui/VnFilterPanel.vue index 03b01b0ab..cebdc4bbf 100644 --- a/src/components/ui/VnFilterPanel.vue +++ b/src/components/ui/VnFilterPanel.vue @@ -6,7 +6,7 @@ import { useRoute } from 'vue-router'; import toDate from 'filters/toDate'; import VnFilterPanelChip from 'components/ui/VnFilterPanelChip.vue'; -const { t, te } = useI18n(); +const { t } = useI18n(); const $props = defineProps({ modelValue: { type: Object, From aa6dac39449cc1db11c8130edc488717fc8a487a Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Wed, 18 Sep 2024 07:28:10 +0000 Subject: [PATCH 09/18] fix: SupplierFiscalData VnLocation --- src/pages/Supplier/Card/SupplierFiscalData.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Supplier/Card/SupplierFiscalData.vue b/src/pages/Supplier/Card/SupplierFiscalData.vue index 60cd6770b..553fc0f94 100644 --- a/src/pages/Supplier/Card/SupplierFiscalData.vue +++ b/src/pages/Supplier/Card/SupplierFiscalData.vue @@ -19,8 +19,8 @@ const sageTransactionTypesOptions = ref([]); const supplierActivitiesOptions = ref([]); function handleLocation(data, location) { - const { town, label, provinceFk, countryFk } = location ?? {}; - data.postCode = label; + const { town, code, provinceFk, countryFk } = location ?? {}; + data.postCode = code; data.city = town; data.provinceFk = provinceFk; data.countryFk = countryFk; From 21a7fafba5c63a3238b248a5b1b6832ba32b5bb3 Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 18 Sep 2024 09:57:21 +0200 Subject: [PATCH 10/18] feat: create VnSelectEnum and add in AccountBasicData and ClaimBasicData --- src/components/common/VnSelectEnum.vue | 52 ++++++++++++++ src/pages/Account/Card/AccountBasicData.vue | 9 ++- src/pages/Claim/Card/ClaimBasicData.vue | 72 ++++--------------- .../integration/outLogin/twoFactor.spec.js | 2 +- 4 files changed, 71 insertions(+), 64 deletions(-) create mode 100644 src/components/common/VnSelectEnum.vue diff --git a/src/components/common/VnSelectEnum.vue b/src/components/common/VnSelectEnum.vue new file mode 100644 index 000000000..b9db67c37 --- /dev/null +++ b/src/components/common/VnSelectEnum.vue @@ -0,0 +1,52 @@ +<script setup> +import { onBeforeMount, ref, useAttrs } from 'vue'; +import axios from 'axios'; +import VnSelect from 'components/common/VnSelect.vue'; + +const { schema, table, column, translation, defaultOptions } = defineProps({ + schema: { + type: String, + default: 'vn', + }, + table: { + type: String, + required: true, + }, + column: { + type: String, + required: true, + }, + translation: { + type: Function, + default: null, + }, + defaultOptions: { + type: Array, + default: () => [], + }, +}); + +const $attrs = useAttrs(); +const options = ref([]); +onBeforeMount(async () => { + options.value = [].concat(defaultOptions); + const { data } = await axios.get(`Applications/get-enum-values`, { + params: { schema, table, column }, + }); + + for (const value of data) + options.value.push({ + [$attrs['option-value'] ?? 'id']: value, + [$attrs['option-label'] ?? 'name']: translation ? translation(value) : value, + }); +}); +</script> + +<template> + <VnSelect + v-bind="$attrs" + :options="options" + :key="options.length" + :input-debounce="0" + /> +</template> diff --git a/src/pages/Account/Card/AccountBasicData.vue b/src/pages/Account/Card/AccountBasicData.vue index b223c4bc0..f1cdaf9df 100644 --- a/src/pages/Account/Card/AccountBasicData.vue +++ b/src/pages/Account/Card/AccountBasicData.vue @@ -2,6 +2,7 @@ import { useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; import VnSelect from 'src/components/common/VnSelect.vue'; +import VnSelectEnum from 'src/components/common/VnSelectEnum.vue'; import FormModel from 'components/FormModel.vue'; import VnInput from 'src/components/common/VnInput.vue'; import { ref, watch } from 'vue'; @@ -43,9 +44,11 @@ watch( option-value="code" option-label="code" /> - <VnSelect - url="TwoFactorTypes" - v-model="data.twoFactorFk" + <VnSelectEnum + schema="account" + table="user" + column="twoFactor" + v-model="data.twoFactor" :label="t('account.card.twoFactor')" option-value="code" option-label="code" diff --git a/src/pages/Claim/Card/ClaimBasicData.vue b/src/pages/Claim/Card/ClaimBasicData.vue index b1d3e24cd..63b0b7c0d 100644 --- a/src/pages/Claim/Card/ClaimBasicData.vue +++ b/src/pages/Claim/Card/ClaimBasicData.vue @@ -3,58 +3,18 @@ import { ref } from 'vue'; import { useRoute } from 'vue-router'; import { useI18n } from 'vue-i18n'; import VnSelect from 'src/components/common/VnSelect.vue'; +import VnSelectEnum from 'src/components/common/VnSelectEnum.vue'; import FetchData from 'components/FetchData.vue'; import FormModel from 'components/FormModel.vue'; import VnRow from 'components/ui/VnRow.vue'; import VnInput from 'src/components/common/VnInput.vue'; import VnInputDate from 'components/common/VnInputDate.vue'; -import axios from 'axios'; import VnAvatar from 'src/components/ui/VnAvatar.vue'; const route = useRoute(); const { t } = useI18n(); - -const claimStates = ref([]); -const claimStatesCopy = ref([]); -const optionsList = ref([]); - const workersOptions = ref([]); - -function setClaimStates(data) { - claimStates.value = data; - claimStatesCopy.value = data; -} - -async function getEnumValues() { - optionsList.value = [{ id: null, description: t('claim.null') }]; - const { data } = await axios.get(`Applications/get-enum-values`, { - params: { - schema: 'vn', - table: 'claim', - column: 'pickup', - }, - }); - for (let value of data) - optionsList.value.push({ id: value, description: t(`claim.${value}`) }); -} - -getEnumValues(); - -const statesFilter = { - options: claimStates, - filterFn: (options, value) => { - const search = value.toLowerCase(); - - if (value === '') return claimStatesCopy.value; - - return options.value.filter((row) => { - const description = row.description.toLowerCase(); - - return description.indexOf(search) > -1; - }); - }, -}; </script> <template> <FetchData @@ -70,7 +30,7 @@ const statesFilter = { auto-load :reload="true" > - <template #form="{ data, validate, filter }"> + <template #form="{ data, validate }"> <VnRow> <VnInput v-model="data.client.name" @@ -101,20 +61,14 @@ const statesFilter = { /> </template> </VnSelect> - <QSelect + <VnSelect v-model="data.claimStateFk" - :options="claimStates" - option-value="id" - option-label="description" - emit-value + url="ClaimStates" :label="t('claim.state')" - map-options - use-input - @filter="(value, update) => filter(value, update, statesFilter)" + option-label="description" :rules="validate('claim.claimStateFk')" :input-debounce="0" - > - </QSelect> + /> </VnRow> <VnRow> <QInput @@ -123,16 +77,14 @@ const statesFilter = { :rules="validate('claim.packages')" type="number" /> - <QSelect + <VnSelectEnum v-model="data.pickup" - :options="optionsList" - option-value="id" - option-label="description" - emit-value :label="t('claim.pickup')" - map-options - use-input - :input-debounce="0" + table="claim" + column="pickup" + option-label="description" + :translation="(value) => t(`claim.${value}`)" + :default-options="[{ id: null, description: t('claim.null') }]" /> </VnRow> </template> diff --git a/test/cypress/integration/outLogin/twoFactor.spec.js b/test/cypress/integration/outLogin/twoFactor.spec.js index 259ddfc0f..4d8561f0f 100755 --- a/test/cypress/integration/outLogin/twoFactor.spec.js +++ b/test/cypress/integration/outLogin/twoFactor.spec.js @@ -12,7 +12,7 @@ describe('Two Factor', () => { cy.request( 'PATCH', `http://localhost:3000/api/VnUsers/${userId}/update-user?access_token=DEFAULT_TOKEN`, - { twoFactorFk: 'email' } + { twoFactor: 'email' } ); }); From 3906fc386f6b99528a9973299b22b0a7c974147d Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 18 Sep 2024 12:49:45 +0200 Subject: [PATCH 11/18] hotFix: supplierDescriptor not use same data-key --- src/pages/Supplier/Card/SupplierDescriptor.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Supplier/Card/SupplierDescriptor.vue b/src/pages/Supplier/Card/SupplierDescriptor.vue index 6e60a336c..5754031b3 100644 --- a/src/pages/Supplier/Card/SupplierDescriptor.vue +++ b/src/pages/Supplier/Card/SupplierDescriptor.vue @@ -109,7 +109,7 @@ const getEntryQueryParams = (supplier) => { :subtitle="data.subtitle" :filter="filter" @on-fetch="setData" - data-key="supplier" + data-key="supplierDescriptor" :summary="$props.summary" > <template #body="{ entity }"> From f86525e31dcf0bc79a5b04dc01ab8456efae34ef Mon Sep 17 00:00:00 2001 From: alexm <alexm@verdnatura.es> Date: Wed, 18 Sep 2024 13:24:21 +0200 Subject: [PATCH 12/18] fix: not null variable --- src/components/VnTable/VnTable.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 6f678d5c1..5b39265fb 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -192,7 +192,7 @@ function setUserParams(watchedParams, watchedOrder) { function sanitizer(params) { for (const [key, value] of Object.entries(params)) { - if (typeof value == 'object') { + if (value && typeof value == 'object') { const param = Object.values(value)[0]; if (typeof param == 'string') params[key] = param.replaceAll('%', ''); } From 37329a73914ef10f355c9fe7698e9dd58a9a063a Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Wed, 18 Sep 2024 13:30:51 +0200 Subject: [PATCH 13/18] feat: add shortcut add event in some subSections --- src/pages/Customer/Card/CustomerContacts.vue | 9 +++++---- .../Customer/components/CustomerAddressEdit.vue | 9 +++++---- src/pages/Item/Card/ItemTags.vue | 9 +++++---- src/pages/Route/Roadmap/RoadmapStops.vue | 9 +++++---- src/pages/Supplier/Card/SupplierAccounts.vue | 13 ++++++------- src/pages/Supplier/Card/SupplierContacts.vue | 9 +++++---- src/pages/Worker/WorkerDepartmentTree.vue | 9 +++++---- 7 files changed, 36 insertions(+), 31 deletions(-) diff --git a/src/pages/Customer/Card/CustomerContacts.vue b/src/pages/Customer/Card/CustomerContacts.vue index cd4d553df..c420f650e 100644 --- a/src/pages/Customer/Card/CustomerContacts.vue +++ b/src/pages/Customer/Card/CustomerContacts.vue @@ -56,17 +56,18 @@ const customerContactsRef = ref(null); </div> </VnRow> <VnRow> - <QIcon + <QBtn @click="customerContactsRef.insert()" class="cursor-pointer" color="primary" - name="add" - size="sm" + flat + icon="add" + shortcut="+" > <QTooltip> {{ t('Add contact') }} </QTooltip> - </QIcon> + </QBtn> </VnRow> </QCard> </template> diff --git a/src/pages/Customer/components/CustomerAddressEdit.vue b/src/pages/Customer/components/CustomerAddressEdit.vue index 2252a96dc..82a190ae1 100644 --- a/src/pages/Customer/components/CustomerAddressEdit.vue +++ b/src/pages/Customer/components/CustomerAddressEdit.vue @@ -272,16 +272,17 @@ function handleLocation(data, location) { </div> </VnRow> - <QIcon + <QBtn @click.stop="addNote()" class="cursor-pointer add-icon q-mt-md" - name="add" - size="sm" + flat + icon="add" + shortcut="+" > <QTooltip> {{ t('Add note') }} </QTooltip> - </QIcon> + </QBtn> </template> </FormModel> </template> diff --git a/src/pages/Item/Card/ItemTags.vue b/src/pages/Item/Card/ItemTags.vue index 39723ae65..1b5eb28f0 100644 --- a/src/pages/Item/Card/ItemTags.vue +++ b/src/pages/Item/Card/ItemTags.vue @@ -168,19 +168,20 @@ const insertTag = (rows) => { </div> </VnRow> <VnRow class="justify-center items-center"> - <QIcon + <QBtn @click="insertTag(rows)" class="cursor-pointer" :disable="!validRow" color="primary" - name="add" - size="sm" + flat + icon="add" + shortcut="+" style="flex: 0" > <QTooltip> {{ t('itemTags.addTag') }} </QTooltip> - </QIcon> + </QBtn> </VnRow> </QCard> </template> diff --git a/src/pages/Route/Roadmap/RoadmapStops.vue b/src/pages/Route/Roadmap/RoadmapStops.vue index 8ff044d2d..d8215ea49 100644 --- a/src/pages/Route/Roadmap/RoadmapStops.vue +++ b/src/pages/Route/Roadmap/RoadmapStops.vue @@ -65,9 +65,10 @@ const updateDefaultStop = (data) => { </div> </QCardSection> <QCardSection> - <QIcon - name="add" - size="sm" + <QBtn + flat + icon="add" + shortcut="+" class="cursor-pointer" color="primary" @click="roadmapStopsCrudRef.insert()" @@ -75,7 +76,7 @@ const updateDefaultStop = (data) => { <QTooltip> {{ t('Add stop') }} </QTooltip> - </QIcon> + </QBtn> </QCardSection> </QCard> </template> diff --git a/src/pages/Supplier/Card/SupplierAccounts.vue b/src/pages/Supplier/Card/SupplierAccounts.vue index b0e8b06e8..f8fbba0e4 100644 --- a/src/pages/Supplier/Card/SupplierAccounts.vue +++ b/src/pages/Supplier/Card/SupplierAccounts.vue @@ -102,9 +102,7 @@ const setWireTransfer = async () => { <VnInput :label="t('supplier.accounts.iban')" v-model="row.iban"> <template #append> <QIcon name="info" class="cursor-info"> - <QTooltip>{{ - t('components.iban_tooltip') - }}</QTooltip> + <QTooltip>{{ t('components.iban_tooltip') }}</QTooltip> </QIcon> </template> </VnInput> @@ -165,9 +163,10 @@ const setWireTransfer = async () => { </div> </VnRow> <VnRow> - <QIcon - name="add" - size="sm" + <QBtn + flat + icon="add" + shortcut="+" class="cursor-pointer" color="primary" @click="supplierAccountRef.insert()" @@ -175,7 +174,7 @@ const setWireTransfer = async () => { <QTooltip> {{ t('Add account') }} </QTooltip> - </QIcon> + </QBtn> </VnRow> </QCard> </template> diff --git a/src/pages/Supplier/Card/SupplierContacts.vue b/src/pages/Supplier/Card/SupplierContacts.vue index 35e8b98fc..3f2063784 100644 --- a/src/pages/Supplier/Card/SupplierContacts.vue +++ b/src/pages/Supplier/Card/SupplierContacts.vue @@ -84,9 +84,10 @@ const insertRow = () => { </VnRow> </QCardSection> <VnRow> - <QIcon - name="add" - size="sm" + <QBtn + flat + icon="add" + shortcut="+" class="cursor-pointer" color="primary" @click="insertRow()" @@ -94,7 +95,7 @@ const insertRow = () => { <QTooltip> {{ t('Add contact') }} </QTooltip> - </QIcon> + </QBtn> </VnRow> </QCard> </template> diff --git a/src/pages/Worker/WorkerDepartmentTree.vue b/src/pages/Worker/WorkerDepartmentTree.vue index 392539c86..c73cb59b9 100644 --- a/src/pages/Worker/WorkerDepartmentTree.vue +++ b/src/pages/Worker/WorkerDepartmentTree.vue @@ -180,17 +180,18 @@ function handleEvent(type, event, node) { {{ t('Remove') }} </QTooltip> </QIcon> - <QIcon - name="add" + <QBtn color="primary" - size="sm" + flat + icon="add" + shortcut="+" class="cursor-pointer" @click.stop="showCreateNodeForm(node.id)" > <QTooltip> {{ t('Create') }} </QTooltip> - </QIcon> + </QBtn> </div> </div> </template> From d76250f56f8d3ab70dff47ac9c2b1ff5b05e1e98 Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Wed, 18 Sep 2024 12:27:48 +0000 Subject: [PATCH 14/18] fix: reset VnTable scroll properties --- src/components/VnTable/VnTable.vue | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 689be76ee..9b4341da1 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -69,10 +69,7 @@ const $props = defineProps({ type: Boolean, default: false, }, - disableInfiniteScroll: { - type: Boolean, - default: false, - }, + hasSubToolbar: { type: Boolean, default: null, @@ -368,9 +365,7 @@ function handleOnDataSaved(_) { ref="CrudModelRef" @on-fetch="(...args) => emit('onFetch', ...args)" :search-url="searchUrl" - :disable-infinite-scroll=" - $attrs['disableInfiniteScroll'] ? isTableMode : !disableInfiniteScroll - " + :disable-infinite-scroll="isTableMode" @save-changes="reload" :has-sub-toolbar="$props.hasSubToolbar ?? isEditable" :auto-load="hasParams || $attrs['auto-load']" @@ -390,7 +385,7 @@ function handleOnDataSaved(_) { card-container-class="grid-three" flat :style="isTableMode && `max-height: ${tableHeight}`" - virtual-scroll + :virtual-scroll="isTableMode" @virtual-scroll=" (event) => event.index > rows.length - 2 && From b3f27d9a84970050963f2b7598ae9fc1ad751087 Mon Sep 17 00:00:00 2001 From: jgallego <jgallego@verdnatura.es> Date: Wed, 18 Sep 2024 17:51:49 +0200 Subject: [PATCH 15/18] feat: translations fixed --- src/pages/Route/Roadmap/RoadmapBasicData.vue | 4 ++-- src/pages/Route/Roadmap/RoadmapFilter.vue | 8 ++++---- src/pages/Route/Roadmap/RoadmapSummary.vue | 4 ++-- src/pages/Route/RouteRoadmap.vue | 1 + 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/pages/Route/Roadmap/RoadmapBasicData.vue b/src/pages/Route/Roadmap/RoadmapBasicData.vue index e1611ed61..eeefaca2c 100644 --- a/src/pages/Route/Roadmap/RoadmapBasicData.vue +++ b/src/pages/Route/Roadmap/RoadmapBasicData.vue @@ -103,8 +103,8 @@ es: Roadmap: Troncal ETD date: Fecha ETD ETD hour: Hora ETD - Tractor plate: Matrícula tractor - Trailer plate: Matrícula trailer + Tractor plate: Matrícula tractora + Trailer plate: Matrícula remolque Carrier: Transportista Price: Precio Driver name: Nombre del conductor diff --git a/src/pages/Route/Roadmap/RoadmapFilter.vue b/src/pages/Route/Roadmap/RoadmapFilter.vue index 04c5c9696..ecf8d39fc 100644 --- a/src/pages/Route/Roadmap/RoadmapFilter.vue +++ b/src/pages/Route/Roadmap/RoadmapFilter.vue @@ -164,8 +164,8 @@ en: to: To es: params: - tractorPlate: Matrícula del tractor - trailerPlate: Matrícula del trailer + tractorPlate: Matrícula tractora + trailerPlate: Matrícula remolque supplierFk: Transportista price: Precio driverName: Nombre del conductor @@ -174,8 +174,8 @@ es: to: Hasta From: Desde To: Hasta - Tractor Plate: Matrícula del tractor - Trailer Plate: Matrícula del trailer + Tractor Plate: Matrícula tractora + Trailer Plate: Matrícula remolque Carrier: Transportista Price: Precio Driver name: Nombre del conductor diff --git a/src/pages/Route/Roadmap/RoadmapSummary.vue b/src/pages/Route/Roadmap/RoadmapSummary.vue index 7f8b7107b..3fb36b4f7 100644 --- a/src/pages/Route/Roadmap/RoadmapSummary.vue +++ b/src/pages/Route/Roadmap/RoadmapSummary.vue @@ -149,8 +149,8 @@ const filter = { <i18n> es: Carrier: Transportista - Tractor Plate: Matrícula tractor - Trailer Plate: Matrícula trailer + Tractor Plate: Matrícula tractora + Trailer Plate: Matrícula remolque Phone: Teléfono Worker: Trabajador Observations: Observaciones diff --git a/src/pages/Route/RouteRoadmap.vue b/src/pages/Route/RouteRoadmap.vue index 306387cbe..d921dab1f 100644 --- a/src/pages/Route/RouteRoadmap.vue +++ b/src/pages/Route/RouteRoadmap.vue @@ -237,4 +237,5 @@ es: Price: Precio Observations: Observaciones Preview: Vista previa + Select the estimated date of departure (ETD): Selecciona la fecha estimada de salida </i18n> From 1cb2981f97e42d4d678d26800e1a9a28fbefb0ad Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Wed, 18 Sep 2024 16:26:56 +0000 Subject: [PATCH 16/18] feat: apply color when today --- src/css/app.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/css/app.scss b/src/css/app.scss index 3c51dc8af..905934d4c 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -268,6 +268,7 @@ input::-webkit-inner-spin-button { max-width: 400px; } } + .edit-photo-btn { position: absolute; right: 12px; @@ -280,3 +281,10 @@ input::-webkit-inner-spin-button { color: var(--vn-label-color); text-transform: uppercase; } + +.q-date { + &__today { + border: 2px solid $info; + color: $info; + } +} From 08bec59a37cc97ac321924569f03f56d27a2f492 Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Thu, 19 Sep 2024 00:02:45 +0200 Subject: [PATCH 17/18] add_circle --- src/components/ItemsFilterPanel.vue | 7 +++--- src/pages/Item/Card/ItemBarcode.vue | 9 ++++---- src/pages/Order/Card/OrderCatalogFilter.vue | 6 +++-- src/pages/Ticket/Card/TicketNotes.vue | 9 ++++---- src/pages/Ticket/Card/TicketPackage.vue | 25 ++++++++++++--------- src/pages/Worker/Card/WorkerTimeControl.vue | 9 ++++---- 6 files changed, 37 insertions(+), 28 deletions(-) diff --git a/src/components/ItemsFilterPanel.vue b/src/components/ItemsFilterPanel.vue index 8449f9354..e89d32da4 100644 --- a/src/components/ItemsFilterPanel.vue +++ b/src/components/ItemsFilterPanel.vue @@ -297,11 +297,12 @@ const removeTag = (index, params, search) => { /> </QItem> <QItem class="q-mt-lg"> - <QIcon - name="add_circle" + <QBtn + icon="add_circle" + shortcut="+" + flat class="fill-icon-on-hover q-px-xs" color="primary" - size="sm" @click="tagValues.push({})" /> </QItem> diff --git a/src/pages/Item/Card/ItemBarcode.vue b/src/pages/Item/Card/ItemBarcode.vue index b353d67c7..197e9142f 100644 --- a/src/pages/Item/Card/ItemBarcode.vue +++ b/src/pages/Item/Card/ItemBarcode.vue @@ -65,17 +65,18 @@ const focusLastInput = () => { </QTooltip> </QIcon> </div> - <QIcon + <QBtn @click="insertRow()" class="cursor-pointer fill-icon-on-hover" color="primary" - name="add_circle" - size="sm" + icon="add_circle" + shortcut="+" + flat > <QTooltip> {{ t('Add barcode') }} </QTooltip> - </QIcon> + </QBtn> </QCard> </template> </CrudModel> diff --git a/src/pages/Order/Card/OrderCatalogFilter.vue b/src/pages/Order/Card/OrderCatalogFilter.vue index 938cc4fe2..354c44747 100644 --- a/src/pages/Order/Card/OrderCatalogFilter.vue +++ b/src/pages/Order/Card/OrderCatalogFilter.vue @@ -374,8 +374,10 @@ function addOrder(value, field, params) { /> </QItem> <QItem class="q-mt-lg"> - <QIcon - name="add_circle" + <QBtn + icon="add_circle" + shortcut="+" + flat class="filter-icon" @click="tagValues.push({})" /> diff --git a/src/pages/Ticket/Card/TicketNotes.vue b/src/pages/Ticket/Card/TicketNotes.vue index cfc0c2431..1b9d98a8b 100644 --- a/src/pages/Ticket/Card/TicketNotes.vue +++ b/src/pages/Ticket/Card/TicketNotes.vue @@ -87,17 +87,18 @@ watch( </QIcon> </div> <VnRow v-if="observationTypes.length > rows.length"> - <QIcon - name="add_circle" + <QBtn + icon="add_circle" + shortcut="+" + flat class="fill-icon-on-hover q-ml-md" - size="sm" color="primary" @click="ticketNotesCrudRef.insert()" > <QTooltip> {{ t('ticketNotes.addNote') }} </QTooltip> - </QIcon> + </QBtn> </VnRow> </QCard> </template> diff --git a/src/pages/Ticket/Card/TicketPackage.vue b/src/pages/Ticket/Card/TicketPackage.vue index a76fce2b6..c071d4f7f 100644 --- a/src/pages/Ticket/Card/TicketPackage.vue +++ b/src/pages/Ticket/Card/TicketPackage.vue @@ -114,17 +114,20 @@ watch( </QTooltip> </QIcon> </div> - <QIcon - name="add_circle" - class="fill-icon-on-hover q-ml-md" - size="sm" - color="primary" - @click="ticketPackagingsCrudRef.insert()" - > - <QTooltip> - {{ t('package.addPackage') }} - </QTooltip> - </QIcon> + <VnRow> + <QBtn + icon="add_circle" + shortcut="+" + flat + class="fill-icon-on-hover q-ml-md" + color="primary" + @click="ticketPackagingsCrudRef.insert()" + > + <QTooltip> + {{ t('package.addPackage') }} + </QTooltip> + </QBtn> + </VnRow> </QCard> </template> </CrudModel> diff --git a/src/pages/Worker/Card/WorkerTimeControl.vue b/src/pages/Worker/Card/WorkerTimeControl.vue index 9ae91f8ce..fbfd4b28d 100644 --- a/src/pages/Worker/Card/WorkerTimeControl.vue +++ b/src/pages/Worker/Card/WorkerTimeControl.vue @@ -561,15 +561,16 @@ onMounted(async () => { <span class="q-mb-md text-sm text-body1"> {{ secondsToHoursMinutes(day.dayData?.workedHours) }} </span> - <QIcon - name="add_circle" + <QBtn + icon="add_circle" + shortcut="+" + flat color="primary" class="fill-icon cursor-pointer" - size="sm" @click="showWorkerTimeForm(day.dayData?.dated, 'create')" > <QTooltip>{{ t('Add time') }}</QTooltip> - </QIcon> + </QBtn> </div> </QTd> </QTr> From 1550d79160421e7faeb177a9897be7a98a506cb6 Mon Sep 17 00:00:00 2001 From: Javier Segarra <jsegarra@verdnatura.es> Date: Thu, 19 Sep 2024 00:10:28 +0200 Subject: [PATCH 18/18] feat: add shortcut more buttons --- src/components/common/VnDmsList.vue | 9 ++++++++- src/pages/Account/Role/Card/SubRoles.vue | 8 +++++++- src/pages/Claim/Card/ClaimLines.vue | 2 +- src/pages/Claim/Card/ClaimPhoto.vue | 8 +++++++- src/pages/Customer/Card/CustomerFileManagement.vue | 1 + src/pages/Customer/Card/CustomerSamples.vue | 8 +++++++- src/pages/Entry/Card/EntryNotes.vue | 8 +++++++- src/pages/InvoiceIn/Card/InvoiceInBasicData.vue | 1 + src/pages/InvoiceIn/Card/InvoiceInDueDay.vue | 2 +- src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue | 1 + src/pages/InvoiceIn/Card/InvoiceInVat.vue | 1 + src/pages/Item/ItemRequestFilter.vue | 1 + src/pages/Route/Agency/Card/AgencyWorkcenter.vue | 2 +- src/pages/Route/RouteTickets.vue | 2 +- src/pages/Ticket/Card/TicketSale.vue | 3 ++- src/pages/Ticket/Card/TicketService.vue | 8 +++++++- src/pages/Travel/ExtraCommunityFilter.vue | 1 + src/pages/Zone/Delivery/ZoneDeliveryList.vue | 2 +- src/pages/Zone/Upcoming/ZoneUpcomingList.vue | 2 +- 19 files changed, 57 insertions(+), 13 deletions(-) diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue index 16e3c641f..52dd6ef79 100644 --- a/src/components/common/VnDmsList.vue +++ b/src/components/common/VnDmsList.vue @@ -400,7 +400,14 @@ defineExpose({ /> </QDialog> <QPageSticky position="bottom-right" :offset="[25, 25]"> - <QBtn fab color="primary" icon="add" @click="showFormDialog()" class="fill-icon"> + <QBtn + fab + color="primary" + icon="add" + shortcut="+" + @click="showFormDialog()" + class="fill-icon" + > <QTooltip> {{ t('Upload file') }} </QTooltip> diff --git a/src/pages/Account/Role/Card/SubRoles.vue b/src/pages/Account/Role/Card/SubRoles.vue index 7a0088bac..d17f96dd8 100644 --- a/src/pages/Account/Role/Card/SubRoles.vue +++ b/src/pages/Account/Role/Card/SubRoles.vue @@ -142,7 +142,13 @@ const redirectToRoleSummary = (id) => <SubRoleCreateForm @on-submit-create-subrole="createSubRole" /> </QDialog> <QPageSticky position="bottom-right" :offset="[18, 18]"> - <QBtn fab icon="add" color="primary" @click="openCreateSubRoleForm()"> + <QBtn + fab + icon="add" + shortcut="+" + color="primary" + @click="openCreateSubRoleForm()" + > <QTooltip>{{ t('warehouses.add') }}</QTooltip> </QBtn> </QPageSticky> diff --git a/src/pages/Claim/Card/ClaimLines.vue b/src/pages/Claim/Card/ClaimLines.vue index 77c7dacf1..60c470d22 100644 --- a/src/pages/Claim/Card/ClaimLines.vue +++ b/src/pages/Claim/Card/ClaimLines.vue @@ -317,7 +317,7 @@ async function saveWhenHasChanges() { </div> <QPageSticky position="bottom-right" :offset="[25, 25]"> - <QBtn fab color="primary" icon="add" @click="showImportDialog()" /> + <QBtn fab color="primary" shortcut="+" icon="add" @click="showImportDialog()" /> </QPageSticky> </template> diff --git a/src/pages/Claim/Card/ClaimPhoto.vue b/src/pages/Claim/Card/ClaimPhoto.vue index 21f1be6ed..ec619cc7d 100644 --- a/src/pages/Claim/Card/ClaimPhoto.vue +++ b/src/pages/Claim/Card/ClaimPhoto.vue @@ -246,7 +246,13 @@ function onDrag() { </QDialog> <QPageSticky position="bottom-right" :offset="[25, 25]"> <label for="fileInput"> - <QBtn fab @click="inputFile.nativeEl.click()" icon="add" color="primary"> + <QBtn + fab + @click="inputFile.nativeEl.click()" + shortcut="+" + icon="add" + color="primary" + > <QInput ref="inputFile" type="file" diff --git a/src/pages/Customer/Card/CustomerFileManagement.vue b/src/pages/Customer/Card/CustomerFileManagement.vue index 43aacf6a0..134d8dbd6 100644 --- a/src/pages/Customer/Card/CustomerFileManagement.vue +++ b/src/pages/Customer/Card/CustomerFileManagement.vue @@ -236,6 +236,7 @@ const toCustomerFileManagementCreate = () => { @click.stop="toCustomerFileManagementCreate()" color="primary" fab + shortcut="+" icon="add" /> <QTooltip> diff --git a/src/pages/Customer/Card/CustomerSamples.vue b/src/pages/Customer/Card/CustomerSamples.vue index 8e2ab92a0..f12691112 100644 --- a/src/pages/Customer/Card/CustomerSamples.vue +++ b/src/pages/Customer/Card/CustomerSamples.vue @@ -99,7 +99,13 @@ const tableRef = ref(); </VnTable> <QPageSticky :offset="[18, 18]"> - <QBtn @click.stop="toCustomerSamplesCreate()" color="primary" fab icon="add" /> + <QBtn + @click.stop="toCustomerSamplesCreate()" + color="primary" + fab + icon="add" + shortcut="+" + /> <QTooltip> {{ t('Send sample') }} </QTooltip> diff --git a/src/pages/Entry/Card/EntryNotes.vue b/src/pages/Entry/Card/EntryNotes.vue index f07d0b233..55cac0437 100644 --- a/src/pages/Entry/Card/EntryNotes.vue +++ b/src/pages/Entry/Card/EntryNotes.vue @@ -138,7 +138,13 @@ const columns = computed(() => [ </template> </CrudModel> <QPageSticky position="bottom-right" :offset="[25, 25]"> - <QBtn fab color="primary" icon="add" @click="entryObservationsRef.insert()" /> + <QBtn + fab + color="primary" + icon="add" + shortcut="+" + @click="entryObservationsRef.insert()" + /> </QPageSticky> </template> <i18n> diff --git a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue index 045517a3f..c9468557f 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInBasicData.vue @@ -281,6 +281,7 @@ async function onSubmit() { v-else icon="add_circle" round + shortcut="+" padding="xs" @click="setCreateDms()" > diff --git a/src/pages/InvoiceIn/Card/InvoiceInDueDay.vue b/src/pages/InvoiceIn/Card/InvoiceInDueDay.vue index 1593ea1be..e8f73848b 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInDueDay.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInDueDay.vue @@ -230,7 +230,7 @@ async function insert() { </template> </CrudModel> <QPageSticky position="bottom-right" :offset="[25, 25]"> - <QBtn color="primary" icon="add" size="lg" round @click="insert" /> + <QBtn color="primary" icon="add" shortcut="+" size="lg" round @click="insert" /> </QPageSticky> </template> <style lang="scss" scoped> diff --git a/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue b/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue index 717f30b7f..bee50a07d 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInIntrastat.vue @@ -224,6 +224,7 @@ const formatOpt = (row, { model, options }, prop) => { <QBtn color="primary" icon="add" + shortcut="+" size="lg" round @click="invoiceInFormRef.insert()" diff --git a/src/pages/InvoiceIn/Card/InvoiceInVat.vue b/src/pages/InvoiceIn/Card/InvoiceInVat.vue index d44880937..08834ecb8 100644 --- a/src/pages/InvoiceIn/Card/InvoiceInVat.vue +++ b/src/pages/InvoiceIn/Card/InvoiceInVat.vue @@ -405,6 +405,7 @@ const formatOpt = (row, { model, options }, prop) => { color="primary" icon="add" size="lg" + shortcut="+" round @click="invoiceInFormRef.insert()" > diff --git a/src/pages/Item/ItemRequestFilter.vue b/src/pages/Item/ItemRequestFilter.vue index aa07b8d50..0e81ff5a5 100644 --- a/src/pages/Item/ItemRequestFilter.vue +++ b/src/pages/Item/ItemRequestFilter.vue @@ -212,6 +212,7 @@ const decrement = (paramsObj, key) => { flat dense size="12px" + shortcut="+" @click="add(params, 'scopeDays')" /> <QBtn diff --git a/src/pages/Route/Agency/Card/AgencyWorkcenter.vue b/src/pages/Route/Agency/Card/AgencyWorkcenter.vue index 3531ad288..1f3cab5d0 100644 --- a/src/pages/Route/Agency/Card/AgencyWorkcenter.vue +++ b/src/pages/Route/Agency/Card/AgencyWorkcenter.vue @@ -88,7 +88,7 @@ async function deleteWorCenter(id) { </VnPaginate> </div> <QPageSticky :offset="[18, 18]"> - <QBtn @click.stop="dialog.show()" color="primary" fab icon="add"> + <QBtn @click.stop="dialog.show()" color="primary" fab shortcut="+" icon="add"> <QDialog ref="dialog"> <FormModelPopup :title="t('Add work center')" diff --git a/src/pages/Route/RouteTickets.vue b/src/pages/Route/RouteTickets.vue index 9356f7590..5960636b0 100644 --- a/src/pages/Route/RouteTickets.vue +++ b/src/pages/Route/RouteTickets.vue @@ -396,7 +396,7 @@ const openSmsDialog = async () => { </VnPaginate> </div> <QPageSticky :offset="[20, 20]"> - <QBtn fab icon="add" color="primary" @click="openTicketsDialog"> + <QBtn fab icon="add" shortcut="+" color="primary" @click="openTicketsDialog"> <QTooltip> {{ t('Add ticket') }} </QTooltip> diff --git a/src/pages/Ticket/Card/TicketSale.vue b/src/pages/Ticket/Card/TicketSale.vue index 2ea12bb05..f86863f05 100644 --- a/src/pages/Ticket/Card/TicketSale.vue +++ b/src/pages/Ticket/Card/TicketSale.vue @@ -735,6 +735,7 @@ onUnmounted(() => (stateStore.rightDrawer = false)); size="md" round flat + shortcut="+" :disable="!isTicketEditable" @click="insertRow()" > @@ -746,7 +747,7 @@ onUnmounted(() => (stateStore.rightDrawer = false)); </QTable> <QPageSticky :offset="[20, 20]"> - <QBtn @click="newOrderFromTicket()" color="primary" fab icon="add" /> + <QBtn @click="newOrderFromTicket()" color="primary" fab icon="add" shortcut="+" /> <QTooltip class="text-no-wrap"> {{ t('Add item to basket') }} </QTooltip> diff --git a/src/pages/Ticket/Card/TicketService.vue b/src/pages/Ticket/Card/TicketService.vue index 63dd454ba..873051676 100644 --- a/src/pages/Ticket/Card/TicketService.vue +++ b/src/pages/Ticket/Card/TicketService.vue @@ -184,6 +184,12 @@ const columns = computed(() => [ </template> </CrudModel> <QPageSticky position="bottom-right" :offset="[25, 25]"> - <QBtn fab color="primary" icon="add" @click="ticketServiceCrudRef.insert()" /> + <QBtn + fab + color="primary" + icon="add" + @click="ticketServiceCrudRef.insert()" + shortcut="+" + /> </QPageSticky> </template> diff --git a/src/pages/Travel/ExtraCommunityFilter.vue b/src/pages/Travel/ExtraCommunityFilter.vue index a8bbde75b..75b744168 100644 --- a/src/pages/Travel/ExtraCommunityFilter.vue +++ b/src/pages/Travel/ExtraCommunityFilter.vue @@ -112,6 +112,7 @@ warehouses(); <template #append> <QBtn icon="add" + shortcut="+" flat dense size="12px" diff --git a/src/pages/Zone/Delivery/ZoneDeliveryList.vue b/src/pages/Zone/Delivery/ZoneDeliveryList.vue index ca87dbd84..975cbdb67 100644 --- a/src/pages/Zone/Delivery/ZoneDeliveryList.vue +++ b/src/pages/Zone/Delivery/ZoneDeliveryList.vue @@ -74,7 +74,7 @@ async function remove(row) { </VnPaginate> </div> <QPageSticky position="bottom-right" :offset="[18, 18]"> - <QBtn @click="create" fab icon="add" color="primary" /> + <QBtn @click="create" fab icon="add" shortcut="+" color="primary" /> </QPageSticky> </QPage> </template> diff --git a/src/pages/Zone/Upcoming/ZoneUpcomingList.vue b/src/pages/Zone/Upcoming/ZoneUpcomingList.vue index 89e53132e..5a7f0bb4c 100644 --- a/src/pages/Zone/Upcoming/ZoneUpcomingList.vue +++ b/src/pages/Zone/Upcoming/ZoneUpcomingList.vue @@ -74,7 +74,7 @@ async function remove(row) { </VnPaginate> </div> <QPageSticky position="bottom-right" :offset="[18, 18]"> - <QBtn @click="create" fab icon="add" color="primary" /> + <QBtn @click="create" fab icon="add" shortcut="+" color="primary" /> </QPageSticky> </QPage> </template>