0
1
Fork 0

Resolve conflicts

This commit is contained in:
William Buezas 2024-09-04 07:17:22 -03:00
commit bfbe3621d6
22 changed files with 185 additions and 72 deletions

View File

@ -200,7 +200,10 @@ defineExpose({
</script>
<template>
<QCard class="form-container" v-bind="$attrs">
<QCard
class="form-container"
v-bind="$attrs"
>
<QForm
v-if="!loading"
ref="addressFormRef"
@ -210,7 +213,14 @@ defineExpose({
<span v-if="title" class="text-h6 text-bold">
{{ title }}
</span>
<slot name="form" :data="formData" />
<slot
name="form"
:data="formData"
/>
<slot
name="extraForm"
:data="formData"
/>
<component
v-if="isHeaderMounted"
:is="showBottomActions ? 'div' : Teleport"
@ -244,11 +254,20 @@ defineExpose({
<slot name="actions" :data="formData" />
</component>
</QForm>
<QSpinner v-else color="primary" size="3em" :thickness="2" />
<QSpinner
v-else
color="primary"
size="3em"
:thickness="2"
/>
</QCard>
</template>
<style lang="scss" scoped>
.no-form-container {
padding: 0 !important;
box-shadow: none;
border: none;
}
.form-container {
width: 100%;
height: max-content;

View File

@ -85,11 +85,17 @@ const inputRules = [
hide-bottom-space
@keyup.enter="emit('keyup.enter')"
>
<template v-if="$slots.prepend" #prepend>
<template
v-if="$slots.prepend"
#prepend
>
<slot name="prepend" />
</template>
<template #append>
<slot v-if="$slots.append && !$attrs.disabled" name="append" />
<slot
v-if="$slots.append && !$attrs.disabled"
name="append"
/>
<QIcon
v-if="hover && value && !$attrs.disabled && props.clearable"
name="close"
@ -101,7 +107,10 @@ const inputRules = [
}
"
/>
<QIcon v-if="info" name="info">
<QIcon
v-if="info"
name="info"
>
<QTooltip max-width="350px">
{{ info }}
</QTooltip>

View File

@ -162,7 +162,10 @@ async function filterHandler(val, update) {
:rules="$attrs.required ? [requiredFieldRule] : null"
virtual-scroll-slice-size="options.length"
>
<template v-if="isClearable" #append>
<template
v-if="isClearable"
#append
>
<QIcon
v-show="value"
name="close"
@ -176,7 +179,11 @@ async function filterHandler(val, update) {
#[slotName]="slotData"
:key="slotName"
>
<slot :name="slotName" v-bind="slotData ?? {}" :key="slotName" />
<slot
:name="slotName"
v-bind="slotData ?? {}"
:key="slotName"
/>
</template>
</QSelect>
</template>

View File

@ -73,8 +73,8 @@ async function confirm() {
/>
</QCardSection>
<QCardSection class="row items-center">
<span v-html="message"></span>
<slot name="customHTML"></slot>
<span v-html="message" />
<slot name="customHTML" />
</QCardSection>
<QCardActions align="right">
<QBtn

View File

@ -10,7 +10,7 @@ const props = defineProps({
},
hideBottom: {
type: Boolean,
default: true
default: false
},
rowsPerPageOptions: {
type: Array,
@ -22,12 +22,12 @@ const props = defineProps({
<template>
<QTable
v-bind="$attrs"
:no-data-label="props.noDataLabel || t('noInvoicesFound')"
:no-data-label="props.noDataLabel || t('noData')"
:hide-bottom="props.hideBottom"
:rows-per-page-options="props.rowsPerPageOptions"
table-header-class="vntable-header-default"
>
<template v-for="(_, slotName) in $slots" v-slot:[slotName]="slotProps">
<template v-for="(_, slotName) in $slots" #[slotName]="slotProps">
<slot :name="slotName" v-bind="slotProps" />
</template>
</QTable>

View File

@ -45,3 +45,12 @@ a.link {
.no-padding {
padding: 0 !important;
}
input[type='number'] {
-moz-appearance: textfield;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}

View File

@ -17,6 +17,7 @@ const appStore = useAppStore();
const { isHeaderMounted } = storeToRefs(appStore);
const vnFormRef = ref(null);
const vnFormRef2 = ref(null);
const changePasswordFormDialog = ref(null);
const showChangePasswordForm = ref(false);
const langOptions = ref([]);
@ -101,6 +102,26 @@ onMounted(() => fetchLanguagesSql());
@update:model-value="vnFormRef.submit()"
/>
</template>
<template #extraForm>
<VnForm
class="no-form-container"
ref="vnFormRef2"
:pks="pks"
table="myClient"
schema="hedera"
:fetch-form-data-sql="fetchConfigDataSql"
:default-actions="false"
>
<template #form="{ data }">
<QCheckbox
v-model="data.isToBeMailed"
:label="t('isToBeMailed')"
@update:model-value="vnFormRef2.submit()"
dense
/>
</template>
</VnForm>
</template>
</VnForm>
</QPage>
<QDialog
@ -117,6 +138,7 @@ onMounted(() => fetchLanguagesSql());
<i18n lang="yaml">
en-US:
personalInformation: Personal Information
isToBeMailed: Receive invoices by email
name: Name
email: Email
nickname: Display name
@ -126,6 +148,7 @@ en-US:
changePassword: Change password
es-ES:
personalInformation: Datos personales
isToBeMailed: Recibir facturas por correo electrónico
name: Nombre
email: Correo electrónico
nickname: Nombre a mostrar
@ -135,6 +158,7 @@ es-ES:
changePassword: Cambiar contraseña
ca-ES:
personalInformation: Dades personals
isToBeMailed: Rebre factures per correu electrònic
name: Nom
email: Correu electrònic
nickname: Nom a mostrar
@ -144,6 +168,7 @@ ca-ES:
changePassword: Canviar contrasenya
fr-FR:
personalInformation: Informations personnelles
isToBeMailed: Recevoir des factures par e-mail
name: Nom
email: E-mail
nickname: Nom à afficher
@ -153,6 +178,7 @@ fr-FR:
changePassword: Changer le mot de passe
pt-PT:
personalInformation: Dados pessoais
isToBeMailed: Receber facturas por e-mail
name: Nome
email: E-mail
nickname: Nom à afficher

View File

@ -90,10 +90,22 @@ onMounted(() => getCountries());
@on-data-saved="goBack()"
>
<template #form="{ data }">
<VnInput v-model="data.nickname" :label="t('name')" />
<VnInput v-model="data.street" :label="t('address')" />
<VnInput v-model="data.city" :label="t('city')" />
<VnInput v-model="data.postalCode" :label="t('postalCode')" />
<VnInput
v-model="data.nickname"
:label="t('name')"
/>
<VnInput
v-model="data.street"
:label="t('address')"
/>
<VnInput
v-model="data.city"
:label="t('city')"
/>
<VnInput
v-model="data.postalCode"
:label="t('postalCode')"
/>
<VnSelect
v-model="data.countryFk"
:label="t('country')"
@ -122,7 +134,6 @@ onMounted(() => getCountries());
<i18n lang="yaml">
en-US:
accept: Accept
addEditAddress: Add or edit address
name: Consignee
address: Address
city: City
@ -134,7 +145,6 @@ en-US:
editAddress: Edit address
es-ES:
accept: Aceptar
addEditAddress: Añadir o modificar dirección
name: Consignatario
address: Dirección
city: Ciudad
@ -146,7 +156,6 @@ es-ES:
editAddress: Modificar dirección
ca-ES:
accept: Acceptar
addEditAddress: Afegir o modificar adreça
name: Consignatari
address: Direcció
city: Ciutat
@ -158,7 +167,6 @@ ca-ES:
editAddress: Modificar adreça
fr-FR:
accept: Accepter
addEditAddress: Ajouter ou modifier l'adresse
name: Destinataire
address: Numéro Rue
city: Ville
@ -170,7 +178,6 @@ fr-FR:
editAddress: Modifier adresse
pt-PT:
accept: Aceitar
addEditAddress: Adicionar ou modificar morada
name: Consignatario
address: Morada
city: Concelho

View File

@ -104,7 +104,10 @@ onMounted(async () => {
</QBtn>
</Teleport>
<QPage class="vn-w-sm">
<QList class="rounded-borders shadow-1 shadow-transition" separator>
<QList
class="rounded-borders shadow-1 shadow-transition"
separator
>
<CardList
v-for="(address, index) in addresses"
:key="index"

View File

@ -93,31 +93,26 @@ const supplantUser = async user => {
<i18n lang="yaml">
en-US:
noData: No data
User management: User management
Disabled: Disabled
Impersonate user: Impersonate user
Access log: Access log
es-ES:
noData: Sin datos
User management: Gestión de usuarios
Disabled: Desactivado
Impersonate user: Suplantar usuario
Access log: Registro de accesos
ca-ES:
noData: Sense dades
User management: Gestió d'usuaris
Disabled: Deshabilitat
Impersonate user: Suplantar usuari
Access log: Registre d'accessos
fr-FR:
noData: Aucune donnée
User management: Gestion des utilisateurs
Disabled: Désactivé
Impersonate user: Accès utilisateur
Access log: Journal des accès
pt-PT:
noData: Sem dados
User management: Gestão de usuarios
Disabled: Desativado
Impersonate user: Suplantar usuario

View File

@ -20,15 +20,27 @@ onMounted(async () => await fetchData());
<template>
<div style="padding: 0">
<div class="q-pa-sm row items-start">
<div class="new-card q-pa-sm" v-for="myNew in news" :key="myNew.id">
<div
class="new-card q-pa-sm"
v-for="myNew in news"
:key="myNew.id"
>
<QCard>
<VnImg :id="myNew.image" storage="news" />
<VnImg
:id="myNew.image"
storage="news"
/>
<QCardSection>
<div class="text-h5">{{ myNew.title }}</div>
<div class="text-h5">
{{ myNew.title }}
</div>
</QCardSection>
<QCardSection class="new-body">
<div v-html="myNew.text" class="card-text" />
<div
v-html="myNew.text"
class="card-text"
/>
</QCardSection>
</QCard>
</div>
@ -43,7 +55,10 @@ onMounted(async () => await fetchData());
/>
</QPageSticky>
</div>
<QDialog v-model="showPreview" @hide="selectedImageSrc = ''">
<QDialog
v-model="showPreview"
@hide="selectedImageSrc = ''"
>
<QImg :src="selectedImageSrc" />
</QDialog>
</template>

View File

@ -175,8 +175,7 @@
:disable="disableScroll"
>
<div class="q-pa-md row justify-center q-gutter-md">
<QSpinner v-if="isLoading" color="primary" size="50px">
</QSpinner>
<QSpinner v-if="isLoading" color="primary" size="50px" />
<div
v-if="items && !items.length"
class="text-subtitle1 text-grey-7 q-pa-md"
@ -189,19 +188,21 @@
>
{{ $t('pleaseSetFilter') }}
</div>
<QCard class="my-card" v-for="item in items" :key="item.id">
<img :src="`${$imageBase}/catalog/200x200/${item.image}`" />
<QCard class="my-card" v-for="_item in items" :key="_item.id">
<img
:src="`${$imageBase}/catalog/200x200/${_item.image}`"
/>
<QCardSection>
<div class="name text-subtitle1">
{{ item.longName }}
{{ _item.longName }}
</div>
<div
class="sub-name text-uppercase text-subtitle1 text-grey-7 ellipsize q-pt-xs"
>
{{ item.subName }}
{{ _item.subName }}
</div>
<div class="tags q-pt-xs">
<div v-for="tag in item.tags" :key="tag.tagFk">
<div v-for="tag in _item.tags" :key="tag.tagFk">
<span class="text-grey-7">{{
tag.tag.name
}}</span>
@ -212,20 +213,19 @@
<QCardActions class="actions justify-between">
<div class="q-pl-sm">
<span class="available bg-green text-white">{{
item.available
_item.available
}}</span>
{{ $t('from') }}
<span class="price">{{
currency(item.buy?.price3)
currency(_item.buy?.price3)
}}</span>
</div>
<QBtn
icon="add_shopping_cart"
:title="$t('buy')"
@click="showItem(item)"
@click="showItem(_item)"
flat
>
</QBtn>
/>
</QCardActions>
</QCard>
</div>

View File

@ -239,13 +239,6 @@ const onPreviousStep = async stepIndex => {
}
};
const getDefaultValues = async () => {
return await jApi.query(
`SELECT deliveryMethod, agencyModeFk, addressFk, defaultAgencyFk
FROM myBasketDefaults`
);
};
const submit = async () => {
loading.value = true;
let query =
@ -299,11 +292,6 @@ onMounted(async () => {
orderForm.value.agency = order.agencyModeFk;
orderForm.value.address = order.addressFk;
}
} else {
const [defaultValues] = await getDefaultValues();
if (defaultValues) {
orderForm.value.method = defaultValues.deliveryMethod;
}
}
getAddresses();
@ -318,6 +306,7 @@ onMounted(async () => {
ref="stepperRef"
animated
keep-alive
contracted
class="default-radius"
>
<QStep
@ -362,6 +351,8 @@ onMounted(async () => {
color="accent"
:locale="localeDates"
first-day-of-week="1"
:minimal="appStore.isMobile"
flat
/>
</div>
<!-- Address step -->

View File

@ -40,6 +40,7 @@ const columns = computed(() => [
label: t('amount'),
field: 'amount',
align: 'right',
sortable: true,
format: val => currency(val)
},
{
@ -62,6 +63,7 @@ const fetchInvoices = async () => {
LIMIT 100`,
params
);
console.log(invoices.value);
};
onMounted(async () => {

View File

@ -84,9 +84,11 @@ onMounted(async () => {
:to="{ name: 'basket', params: { id: order.id } }"
>
<template #content>
<QItemLabel class="text-bold q-mb-sm">{{
formatDateTitle(order.sent)
}}</QItemLabel>
<QItemLabel class="text-bold q-mb-sm">
{{
formatDateTitle(order.sent)
}}
</QItemLabel>
<QItemLabel> #{{ order.id }} </QItemLabel>
<QItemLabel>{{ order.nickname }}</QItemLabel>
<QItemLabel>{{ order.agency }}</QItemLabel>

View File

@ -103,7 +103,7 @@ const deleteRow = id => {
<QSeparator inset />
<QList v-for="(row, index) in rows" :key="index">
<QItem v-if="row">
<QItemSection avatar>
<QItemSection v-if="canDeleteItems" avatar>
<QBtn
icon="delete"
rounded

View File

@ -60,7 +60,10 @@ const onPrintClick = () => {
/>
</Teleport>
<QPage>
<TicketDetails :rows="rows" :ticket="ticket" />
<TicketDetails
:rows="rows"
:ticket="ticket"
/>
</QPage>
</template>

View File

@ -3,9 +3,14 @@
class="fullscreen bg-accent text-white text-center q-pa-md flex flex-center"
>
<div>
<div style="font-size: 30vh">404</div>
<div style="font-size: 30vh">
404
</div>
<div class="text-h2" style="opacity: 0.4">
<div
class="text-h2"
style="opacity: 0.4"
>
Oops. Nothing here...
</div>

View File

@ -49,7 +49,7 @@ async function onLogin() {
:label="$t('password')"
:type="!showPwd ? 'password' : 'text'"
>
<template v-slot:append>
<template #append>
<QIcon
:name="showPwd ? 'visibility_off' : 'visibility'"
class="cursor-pointer"

View File

@ -8,7 +8,10 @@
/>
</div>
<div>
<QForm @submit="onSend" class="q-gutter-y-md text-grey-8">
<QForm
@submit="onSend"
class="q-gutter-y-md text-grey-8"
>
<div class="text-h5">
<div>
{{ $t('dontWorry') }}
@ -37,7 +40,10 @@
unelevated
/>
<div class="text-center q-mt-md">
<router-link to="/login" class="link">
<router-link
to="/login"
class="link"
>
{{ $t('return') }}
</router-link>
</div>

View File

@ -8,7 +8,11 @@
/>
</QCard-section>
<QCard-section>
<QForm @submit="onRegister" ref="form" class="q-gutter-y-md">
<QForm
@submit="onRegister"
ref="form"
class="q-gutter-y-md"
>
<div class="text-grey-8 text-h5 text-center">
{{ $t('fillData') }}
</div>
@ -21,7 +25,7 @@
hint=""
filled
>
<template v-slot:append>
<template #append>
<QIcon
:name="
showPwd ? 'visibility_off' : 'visibility'
@ -42,7 +46,7 @@
hint=""
filled
>
<template v-slot:append>
<template #append>
<QIcon
:name="
showRpPwd ? 'visibility_off' : 'visibility'
@ -61,7 +65,10 @@
color="primary"
/>
<div class="text-center q-mt-xs">
<router-link to="/login" class="link">
<router-link
to="/login"
class="link"
>
{{ $t('return') }}
</router-link>
</div>

View File

@ -2,6 +2,7 @@ import { defineStore } from 'pinia';
import { jApi } from 'boot/axios';
import useNotify from 'src/composables/useNotify.js';
import { i18n } from 'src/boot/i18n';
import { useQuasar } from 'quasar';
const { notify } = useNotify();
@ -134,5 +135,11 @@ export const useAppStore = defineStore('hedera', {
notify('orderLoadedIntoBasket', 'positive');
}
}
},
getters: {
isMobile() {
const $q = useQuasar();
return $q?.screen?.width <= 768;
}
}
});