- Corretto la possibilità di effettuare un Ordine di libri, sul sito gruppomacro.app. arriverà una email a "info@gruppomacro.app".

This commit is contained in:
Surya Paolo
2025-06-03 01:01:40 +02:00
parent 94d844c104
commit 12f816b738
18 changed files with 1150 additions and 899 deletions

View File

@@ -29,7 +29,7 @@
<MyFooter></MyFooter>
</q-layout>
</div>
<!--<BannerCookies urlInfo="/policy"></BannerCookies>-->
<BannerCookies urlInfo="/policy"></BannerCookies>
</template>
<script lang="ts" src="./App.ts">
</script>

View File

@@ -2085,6 +2085,7 @@ export const shared_consts = {
},
MAX_QTA_PREORD: 5000,
MAX_QTA_NON_IMPOSTATA: -1,
getStatusStr(status: number) {
const trovatorec = this.OrderStatusStr.find((rec) => rec.value === status)

View File

@@ -4,6 +4,8 @@ import {
import { useI18n } from 'vue-i18n'
import { useQuasar } from 'quasar'
import { useGlobalStore } from '@store/globalStore'
// PropType,
export default defineComponent({
@@ -21,6 +23,8 @@ export default defineComponent({
const $q = useQuasar()
const globalStore = useGlobalStore()
const elementId = ref<string>('id');
const disableDecline = ref<boolean>(true);
const debug = ref<boolean>(false);
@@ -38,6 +42,7 @@ export default defineComponent({
const init = (): void => {
const visitedType = getCookieStatus()
console.log('visitedType', visitedType)
if (visitedType && (visitedType === 'accept' || visitedType === 'decline' || visitedType === 'postpone')) {
isOpen.value = false
}
@@ -157,6 +162,7 @@ export default defineComponent({
removeCookie,
isOpen,
t,
globalStore,
}
},
})

View File

@@ -1,5 +1,5 @@
<template>
<div v-if="isOpen" class="tothebottomfixed" role="dialog">
<div v-if="globalStore.showHeader && isOpen" class="tothebottomfixed" role="dialog">
<div class="q-pa-md q-gutter-sm">
<transition appear name="slide-up" mode="out-in" :duration="2000">
<q-banner class="bg-primary text-white" transition-show="jump-down">

View File

@@ -104,7 +104,7 @@
.card_titolo_prod {
text-align: center;
padding: 4px 4px 4px 4px;
height: 70px;
min-height: 70px;
}
.book-image-fixed {
@@ -115,7 +115,7 @@
.img-pic {
width: 100%;
height: 100%;
object-fit: cover;
object-fit: contain; // cover
}
.q-card__section--vert {

View File

@@ -214,40 +214,40 @@
</div>
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.verifica">
<div>
<div v-if="myvalue">
<div>
<q-chip
dense
class="q-ma-xs q-pa-xs"
:color="
myvalue.esito === costanti.VALIDATO.SI
myvalue?.esito === costanti.VALIDATO.SI
? 'green'
: myvalue.esito === costanti.VALIDATO.TO_RESOLV
: myvalue?.esito === costanti.VALIDATO.TO_RESOLV
? 'red'
: 'grey-7'
"
text-color="white"
:icon="
myvalue.esito === costanti.VALIDATO.NO
myvalue?.esito === costanti.VALIDATO.NO
? 'fas fa-question-circle'
: myvalue.esito === costanti.VALIDATO.SI
? 'fas fa-check-circle'
: 'fas fa-exclamation-circle'
"
:label="
myvalue.esito === costanti.VALIDATO.NO
myvalue?.esito === costanti.VALIDATO.NO
? $t('validazione.NO')
: myvalue.esito === costanti.VALIDATO.SI
: myvalue?.esito === costanti.VALIDATO.SI
? $t('validazione.SI')
: $t('validazione.TO_RESOLV')
"
></q-chip>
</div>
<div v-if="myvalue.username">
<div v-if="myvalue?.username">
<span>(Utente: {{ myvalue.username }} - in Data: {{ tools.getstrDateTime(myvalue.data) }})</span>
</div>
<div v-if="myvalue.note">
<div v-if="myvalue?.note">
<span>Note: {{ myvalue.note }}</span>
</div>
</div>

View File

@@ -124,14 +124,18 @@
.card_titolo_prod {
text-align: center;
padding: 4px 4px 4px 4px;
height: 70px;
min-height: 90px;
}
.image-container {
width: 316px;
height: 316px;
width: 216px;
height: 216px;
position: relative;
overflow: auto;
border-radius: 10px;
overflow: hidden;
background-color: #fff;
box-shadow: 0 4px 10px rgba(0,0,0,0.1);
@media (max-width: 718px) {
width: 200px;
@@ -143,16 +147,16 @@
.img-pic {
width: 98%;
height: 98%;
transition: all 0.3s ease;
object-fit: cover;
padding: 0px;
border-radius: 15px;
box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.19);
transition: transform 0.3s ease, box-shadow 0.3s ease;
z-index: 2;
}
.img-pic:hover {
transform: scale(1.5);
transform: scale(1.05);
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.25), 0 8px 30px rgba(0, 0, 0, 0.22);
}

View File

@@ -10,6 +10,7 @@ import { CCardState } from '../CCardState'
import { CCopyBtn } from '../CCopyBtn'
import { CMyFieldRec } from '../CMyFieldRec'
import { CBarCode } from '../CBarCode'
import { CText } from '../CText'
import { CMyValueDb } from '../CMyValueDb'
import { func_tools, toolsext } from '@store/Modules/toolsext'
@@ -51,7 +52,7 @@ export default defineComponent({
},
components: {
CTitleBanner, CCardState, CCopyBtn,
CMyFieldRec, CMyValueDb, CBarCode,
CMyFieldRec, CMyValueDb, CBarCode, CText,
},
setup(props, { emit }) {
const $q = useQuasar()
@@ -186,6 +187,7 @@ export default defineComponent({
async function updateproduct() {
console.log('props.id', props.id)
myproduct.value = await products.getProductById(props.id)
// products.updateQuantityAvailable(myproduct.value._id)

View File

@@ -1,12 +1,16 @@
<template>
<div class="row">
<q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" />
<q-spinner
v-if="!endload"
color="primary"
size="3em"
:thickness="2"
/>
<q-card
:class="{
'my-card-big': complete,
'my-card-prod': !complete,
'my-card-selected':
myorder && myorder.quantity + myorder.quantitypreordered > 0,
'my-card-selected': myorder && myorder.quantity + myorder.quantitypreordered > 0,
}"
v-if="!!myproduct && endload && !!myproduct.productInfo"
bordered
@@ -25,8 +29,14 @@
t('ecomm.not_active')
}}</span>
</div>
<q-card-section horizontal :class="'image-section'">
<div v-if="hasImage()" :class="hasImage() ? 'image-container' : ''">
<q-card-section
horizontal
:class="'image-section'"
>
<div
v-if="hasImage()"
:class="hasImage() ? 'image-container' : ''"
>
<q-img
:src="
myproduct.productInfo.imagefile
@@ -37,6 +47,7 @@
: myproduct.productInfo.image_link
"
:alt="myproduct.productInfo.name"
fit="contain"
class="cursor-pointer img-pic"
@click="
complete
@@ -51,12 +62,7 @@
class="absolute semi-transparent"
size="md"
@click="toggleFullScreen"
style="
bottom: -10px;
right: 0px;
transform: translateY(-50%);
z-index: 2;
"
style="bottom: -10px; right: 0px; transform: translateY(-50%); z-index: 2"
/>
</div>
@@ -72,17 +78,15 @@
<q-item-section>
<q-item-label>
<span class="prod_price" v-if="!!myproduct.price">{{
myproduct.price ? myproduct.price.toFixed(2) : 0
}}</span>
<span v-if="!!myproduct.after_price">{{
myproduct.after_price
}}</span>
<span
class="prod_price"
v-if="!!myproduct.price"
>{{ myproduct.price ? myproduct.price.toFixed(2) : 0 }}</span
>
<span v-if="!!myproduct.after_price">{{ myproduct.after_price }}</span>
</q-item-label>
<q-item-label
v-if="
myproduct.scontisticas && myproduct.scontisticas.length > 0
"
v-if="myproduct.scontisticas && myproduct.scontisticas.length > 0"
>
<div
class="prod_sconti"
@@ -94,9 +98,15 @@
</q-item-label>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar v-if="myproduct.productInfo.weight">
<q-icon name="fas fa-balance-scale" class="icone_prod" />
<q-item v-if="myproduct.productInfo.weight">
<q-item-section
avatar
v-if="myproduct.productInfo.weight"
>
<q-icon
name="fas fa-balance-scale"
class="icone_prod"
/>
</q-item-section>
<q-item-section v-if="myproduct.productInfo.weight">
<q-item-label>
@@ -126,10 +136,10 @@
v-if="
(cosa === shared_consts.PROD.TUTTI && !isOrdGas()) ||
cosa === shared_consts.PROD.BOTTEGA ||
(cosa === shared_consts.PROD.GAS &&
products.getQtyAvailable(myproduct) > 0)
(cosa === shared_consts.PROD.GAS && products.getQtyAvailable(myproduct) > 0)
"
:clickable="tools.isManager()"
style="padding: 16px !important;"
@click="
tools.isManager() &&
!editOn &&
@@ -140,7 +150,11 @@
"
>
<q-item-section avatar>
<q-icon color="green" name="fas fa-store" class="icone_prod" />
<q-icon
color="green"
name="fas fa-store"
class="icone_prod"
/>
</q-item-section>
<q-item-section>
@@ -148,7 +162,10 @@
{{ t('ecomm.available') }}
</q-item-label>
<q-item-label>
<span v-if="!editOn" class="prod_disp">
<span
v-if="!editOn"
class="prod_disp"
>
{{ products.getQtyAvailable(myproduct) }}
</span>
<CMyValueDb
@@ -165,11 +182,7 @@
>
</CMyValueDb>
<div class="prod_qtywarn">
<div
v-if="
tools.isManager() && !!myproduct.QuantitaOrdinateInAttesa
"
>
<div v-if="tools.isManager() && !!myproduct.QuantitaOrdinateInAttesa">
{{
t('ecomm.qta_in_attesa', {
qty: myproduct.QuantitaOrdinateInAttesa,
@@ -180,10 +193,7 @@
</q-item-label>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
v-if="tools.isManager() && products.getQtyBloccataAvailable(myproduct) > 0"
>
<q-item-section avatar>
<q-icon
@@ -193,13 +203,15 @@
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
tools.isManager() && products.getQtyBloccataAvailable(myproduct) > 0
"
>
<q-item-label> {{ t('ecomm.bloccati') }}: </q-item-label>
<q-item-label>
<span v-if="!editOn" class="text-black q-ml-xs text-h8">
<span
v-if="!editOn"
class="text-black q-ml-xs text-h8"
>
{{ myproduct.stockBloccatiQty }}</span
>
</q-item-label>
@@ -227,13 +239,22 @@
<div class="text-h7 boldhigh titolo_prod">
{{ myproduct.productInfo.name }}
</div>
<div v-if="myproduct?.productInfo?.authors" class="text-h8 text-italic titolo_prod q-mb-sm">
{{ products.getAutoriByArrayAuthors(myproduct.productInfo.authors) }}
</div>
<div class="product_code">
&nbsp; {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }}
</div>
<div v-if="false" class="barcode">
<CBarCode :value="myproduct.productInfo.code" format="EAN-13" text="ISBN:">
<div
v-if="false"
class="barcode"
>
<CBarCode
:value="myproduct.productInfo.code"
format="EAN-13"
text="ISBN:"
>
</CBarCode>
</div>
<div
v-if="
@@ -261,7 +282,11 @@
</q-card-section>
<q-card-section v-if="complete && myproduct.productInfo.ingredienti">
<div class="text-blue text-title row">
<q-icon size="sm" name="fas fa-list-ul" class="q-mr-sm" />
<q-icon
size="sm"
name="fas fa-list-ul"
class="q-mr-sm"
/>
{{ t('products.ingredienti') }}
</div>
<div class="row items-center">
@@ -274,23 +299,34 @@
</div>
</q-card-section>
<q-card-section v-if="complete && myproduct.productInfo.link_scheda">
<div v-if="complete" class="text-blue text-title row">
<q-icon size="sm" name="fas fa-list-ul" class="q-mr-sm" />
<div
v-if="complete"
class="text-blue text-title row"
>
<q-icon
size="sm"
name="fas fa-list-ul"
class="q-mr-sm"
/>
{{ t('products.link_scheda') }}
</div>
<div class="row items-center">
<div class="text-title text-grey-9">
<a :href="myproduct.productInfo.link_scheda" target="_blank"
<a
:href="myproduct.productInfo.link_scheda"
target="_blank"
>Apri Scheda</a
>
</div>
</div>
</q-card-section>
<q-card-section
v-if="complete && myproduct.productInfo.valori_nutrizionali"
>
<q-card-section v-if="complete && myproduct.productInfo.valori_nutrizionali">
<div class="text-blue text-title row">
<q-icon size="sm" name="fas fa-info" class="q-mr-sm" />
<q-icon
size="sm"
name="fas fa-info"
class="q-mr-sm"
/>
{{ t('products.valori_nutrizionali') }}
</div>
<div class="row items-center">
@@ -302,14 +338,24 @@
</div>
</div>
</q-card-section>
<q-card-section v-if="complete || getnumstore() > 1">
<q-card-section v-if="complete && myproduct.descr_trafiletto_catalogo">
<CText
:rectext="myproduct.descr_trafiletto_catalogo"
:myproduct="myproduct"
:show_at_right="scheda.barcode?.show_at_right"
>
</CText>
</q-card-section>
<q-card-section v-if="(complete && getnumstore() > 1) || getnumstore() >= 1">
<div class="text-blue text-title row items-center q-mr-md centeritems">
<q-icon size="sm" name="fas fa-people-carry" class="q-mr-sm" />
<q-icon
size="sm"
name="fas fa-people-carry"
class="q-mr-sm"
/>
{{ t('products.ritiro_presso') }}:
</div>
<div
class="text-green-6 text-title row items-center q-my-sm centeritems"
>
<div class="text-green-6 text-title row items-center q-my-sm centeritems">
<div v-if="getnumstore() > 1">
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
@@ -323,21 +369,20 @@
</q-select>
</div>
<div v-else>
<span class="text-title text-center">{{
getSingleStorehouse()
}}</span>
<span class="text-title text-center">{{ getSingleStorehouse() }}</span>
</div>
</div>
</q-card-section>
<q-card-section v-if="complete && myproduct.producer">
<div v-if="myproduct.producer.city">
<div class="text-grey text-title row items-center q-mt-sm">
<q-icon name="map" class="q-mr-xs" />
<q-icon
name="map"
class="q-mr-xs"
/>
{{ t('products.origine') }}:
<span class="text-blue q-ml-xs text-h8">
{{ myproduct.producer.city }} ({{
myproduct.producer.region
}})</span
{{ myproduct.producer.city }} ({{ myproduct.producer.region }})</span
>
</div>
</div>
@@ -345,18 +390,25 @@
v-if="complete && myproduct.producer && myproduct.producer.name"
class="text-grey text-title row items-center"
>
<q-icon name="place" class="q-mr-xs" />
<q-icon
name="place"
class="q-mr-xs"
/>
{{ t('products.producer') }}:
<span class="text-black q-ml-xs text-h8">
{{ myproduct.producer.name }}</span
>
<span class="text-black q-ml-xs text-h8"> {{ myproduct.producer.name }}</span>
</div>
</q-card-section>
<q-card-section v-if="myproduct.productInfo.note" class="q-pa-none">
<q-card-section
v-if="myproduct.productInfo.note"
class="q-pa-none"
>
<q-item>
<q-item-section avatar>
<q-icon color="black" name="fas fa-book" />
<q-icon
color="black"
name="fas fa-book"
/>
</q-item-section>
<q-item-section>
@@ -374,7 +426,10 @@
:type="costanti.FieldType.string"
>
</CMyValueDb>
<div v-if="!editOn" v-html="myproduct.productInfo.note"></div>
<div
v-if="!editOn"
v-html="myproduct.productInfo.note"
></div>
</q-item-label>
</q-item-section>
</q-item>
@@ -382,8 +437,7 @@
<q-card-section
v-if="
editOn &&
(!!myproduct.productInfo.imagefile ||
myproduct.productInfo.imagefile === '')
(!!myproduct.productInfo.imagefile || myproduct.productInfo.imagefile === '')
"
>
<div class="text-center">
@@ -442,7 +496,10 @@
"
>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-edit" />
<q-icon
color="blue"
name="fas fa-edit"
/>
</q-item-section>
<q-item-section>
@@ -450,7 +507,10 @@
{{ t('ecomm.preorders') }}
</q-item-label>
<q-item-label>
<span v-if="!editOn" class="prod_preorder">
<span
v-if="!editOn"
class="prod_preorder"
>
{{ myproduct.bookableAvailableQty }}
</span>
<CMyValueDb
@@ -480,11 +540,7 @@
>
</CMyValueDb>
<div class="prod_qtywarn">
<div
v-if="
tools.isManager() && !!myproduct.QuantitaPrenotateInAttesa
"
>
<div v-if="tools.isManager() && !!myproduct.QuantitaPrenotateInAttesa">
{{
t('ecomm.qta_prenotate_in_attesa', {
qty: myproduct.QuantitaPrenotateInAttesa,
@@ -496,8 +552,7 @@
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataBookableAvailable(myproduct) > 0
tools.isManager() && products.getQtyBloccataBookableAvailable(myproduct) > 0
"
>
<q-item-section avatar>
@@ -511,7 +566,10 @@
{{ t('ecomm.bloccati') }}:
</q-item-label>
<q-item-label>
<span v-if="!editOn" class="text-black q-ml-xs text-h8">
<span
v-if="!editOn"
class="text-black q-ml-xs text-h8"
>
{{ myproduct.bookableGASBloccatiQty }}</span
>
<CMyValueDb
@@ -545,22 +603,21 @@
</q-item>
<q-item
v-if="
myproduct.gasordine &&
myproduct.gasordine.active &&
myproduct.idGasordine
myproduct.gasordine && myproduct.gasordine.active && myproduct.idGasordine
"
>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-shipping-fast" />
<q-icon
color="blue"
name="fas fa-shipping-fast"
/>
</q-item-section>
<q-item-section>
<q-item-label class="subtit_prod">
{{ t('products.gasordine') }}
</q-item-label>
<q-item-label>
<span class="text-title text-center">{{
myproduct.gasordine.name
}}</span>
<span class="text-title text-center">{{ myproduct.gasordine.name }}</span>
</q-item-label>
</q-item-section>
</q-item>
@@ -572,15 +629,18 @@
color="orange"
name="fas fa-lightbulb"
/>
<q-icon v-else color="green" name="fas fa-check" />
<q-icon
v-else
color="green"
name="fas fa-check"
/>
</q-item-section>
<q-item-section>
<q-item-label class="subtit_prod text-blue text-bold">
<span v-if="getpercqtaraggiunta() >= 1">{{
t('ecomm.offerta_gas_raggiunta', {
qta:
myproduct.qtyToReachForGas * myproduct.productInfo.weight,
qta: myproduct.qtyToReachForGas * myproduct.productInfo.weight,
unit: tools.getUnitsMeasure(
myproduct.productInfo.unit,
true,
@@ -590,8 +650,7 @@
}}</span>
<span v-else>{{
t('ecomm.offerta_gas', {
qta:
myproduct.qtyToReachForGas * myproduct.productInfo.weight,
qta: myproduct.qtyToReachForGas * myproduct.productInfo.weight,
unit: tools.getUnitsMeasure(
myproduct.productInfo.unit,
true,
@@ -636,18 +695,16 @@
(myproduct.bookableGASBloccatiQty +
myproduct.QuantitaPrenotateInAttesa) *
myproduct.productInfo.weight,
qtatot:
myproduct.qtyToReachForGas * myproduct.productInfo.weight,
qtatot: myproduct.qtyToReachForGas * myproduct.productInfo.weight,
})
}}
<q-linear-progress size="10px" :value="getpercqtaraggiunta()" />
<q-linear-progress
size="10px"
:value="getpercqtaraggiunta()"
/>
</span>
<div class="prod_qtywarn">
<div
v-if="
tools.isManager() && !!myproduct.QuantitaOrdinateInAttesa
"
>
<div v-if="tools.isManager() && !!myproduct.QuantitaOrdinateInAttesa">
{{
t('ecomm.qta_in_attesa', {
qty: myproduct.QuantitaOrdinateInAttesa,
@@ -658,10 +715,7 @@
</q-item-label>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
v-if="tools.isManager() && products.getQtyBloccataAvailable(myproduct) > 0"
>
<q-item-section avatar>
<q-icon
@@ -670,10 +724,7 @@
/>
</q-item-section>
<q-item-section
v-if="
tools.isManager() &&
products.getQtyBloccataAvailable(myproduct) > 0
"
v-if="tools.isManager() && products.getQtyBloccataAvailable(myproduct) > 0"
>
<q-item-label> {{ t('ecomm.bloccati') }}: </q-item-label>
<q-item-label>
@@ -692,15 +743,16 @@
"
>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-hourglass-half" />
<q-icon
color="blue"
name="fas fa-hourglass-half"
/>
</q-item-section>
<q-item-section>
<q-item-label class="countdown_scadenza">
<span v-if="timerLabelScadenza">{{ timerLabelScadenza }}</span>
<span v-else-if="isOrdineChiuso()">{{
t('ecomm.ordine_scaduto')
}}</span>
<span v-else-if="isOrdineChiuso()">{{ t('ecomm.ordine_scaduto') }}</span>
<CMyValueDb
:editOn="editOn"
:title="t('gas.dataora_chiusura_ordini')"
@@ -726,7 +778,10 @@
"
>
<q-item-section avatar>
<q-icon color="red" name="fas fa-shipping-fast" />
<q-icon
color="red"
name="fas fa-shipping-fast"
/>
</q-item-section>
<q-item-section class="subtit_prod">
@@ -755,7 +810,10 @@
"
>
<q-item-section avatar>
<q-icon color="green" name="fas fa-people-carry" />
<q-icon
color="green"
name="fas fa-people-carry"
/>
</q-item-section>
<q-item-section>
@@ -801,9 +859,16 @@
>
</q-btn>
<q-field outlined dense class="q-mx-xs">
<q-field
outlined
dense
class="q-mx-xs"
>
<template v-slot:control>
<div class="no-outline label-qta text-center" tabindex="0">
<div
class="no-outline label-qta text-center"
tabindex="0"
>
{{ myorder.quantity + myorder.quantitypreordered }}
</div>
</template>
@@ -816,9 +881,7 @@
? 'grey'
: 'positive'
"
:disable="
checkifCartDisable() || !products.enableAddQty(myorder, myproduct)
"
:disable="checkifCartDisable() || !products.enableAddQty(myorder, myproduct)"
rounded
size="md"
:label="
@@ -860,7 +923,10 @@
</div>
</q-card-section>
<div v-if="editOn">
<div v-if="!isOrdGas()" class="row">
<div
v-if="!isOrdGas()"
class="row"
>
<CMyValueDb
:editOn="editOn"
:title="t('products.bookedQtyOrdered')"
@@ -913,13 +979,22 @@
</CMyValueDb>
</q-card>
<q-dialog v-if="myproduct" v-model="openlistorders">
<q-dialog
v-if="myproduct"
v-model="openlistorders"
>
<q-card class="dialog_card">
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ t('ecomm.listaord') }} - {{ myproduct.productInfo.name }}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
<q-btn
flat
round
color="white"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card-section class="q-pa-xs inset-shadow">
<q-markup-table
@@ -955,12 +1030,13 @@
}}</strong>
</td>
<td class="text-center">
<strong>{{
shared_consts.getStatusStr(ordcart.status)
}}</strong>
<strong>{{ shared_consts.getStatusStr(ordcart.status) }}</strong>
</td>
<td class="text-center">
<div v-for="(singleord, index) in ordcart.items" :key="index">
<div
v-for="(singleord, index) in ordcart.items"
:key="index"
>
<span
v-if="
singleord.order.idProduct === myproduct._id &&
@@ -1000,10 +1076,7 @@
<q-dialog
v-if="
true &&
myproduct &&
myproduct.productInfo &&
myproduct.productInfo.link_scheda
true && myproduct && myproduct.productInfo && myproduct.productInfo.link_scheda
"
v-model="apriSchedaPDF"
maximized
@@ -1032,16 +1105,17 @@
</q-card-section>
</q-card>
<q-card-actions align="center">
<q-btn color="primary" label="Chiudi" @click="apriSchedaPDF = false" />
<q-btn
color="primary"
label="Chiudi"
@click="apriSchedaPDF = false"
/>
</q-card-actions>
</q-dialog>
<q-dialog
v-if="
false &&
myproduct &&
myproduct.productInfo &&
myproduct.productInfo.link_scheda
false && myproduct && myproduct.productInfo && myproduct.productInfo.link_scheda
"
v-model="apriSchedaPDF"
fullscreen
@@ -1112,8 +1186,7 @@
</div>
</template>
<script lang="ts" src="./CProductCard.ts">
</script>
<script lang="ts" src="./CProductCard.ts"></script>
<style lang="scss" scoped>
@import './CProductCard.scss';

View File

@@ -598,10 +598,12 @@ export default defineComponent({
return tools.getstrDate(element.productInfo?.date_pub);
case 'prezzo':
return element.price ? '€ ' + element.price.toFixed(2) : '';
// return element.price ? '€ ' + element.price.toFixed(2) : '';
return '€ ' + element.arrvariazioni?.[0]?.price.toFixed(2);
case 'prezzo_sconto':
return element.sale_price ? '€ ' + element.sale_price.toFixed(2) : '';
// return element.sale_price ? '€ ' + element.sale_price.toFixed(2) : '';
return '€ ' + element.arrvariazioni?.[0]?.sale_price.toFixed(2);
case 'rank3M':
return element.productInfo?.rank3M;
@@ -794,8 +796,9 @@ export default defineComponent({
'stato',
'date_pub',
'pagine',
'trafiletto',
// 'trafiletto',
'quantity',
'prezzo',
]
);
const selectedColumns_Catalogs = ref(

View File

@@ -47,4 +47,7 @@
.qta{
font-size: 1.15rem;
font-weight: bold;
}
.autori{
font-style: italic;
}

View File

@@ -5,14 +5,23 @@
>
<div v-if="order.product">
<q-item>
<q-item-section top thumbnail class="q-ml-none">
<q-item-section
top
thumbnail
class="q-ml-none"
>
<img
v-if="
order.product &&
order.product.productInfo &&
order.product.productInfo.imagefile
"
:src="tools.getFullFileNameByImageFile('productInfos', order.product.productInfo.imagefile)"
:src="
tools.getFullFileNameByImageFile(
'productInfos',
order.product.productInfo.imagefile
)
"
:alt="order.product.productInfo.name"
:class="myimgclass()"
/>
@@ -20,10 +29,22 @@
<q-item-section>
<q-item-label>
<div v-if="order.idGasordine" class="gasordine">
<div
v-if="order.idGasordine"
class="gasordine"
>
{{ products.getSingleGasordine(order, true) }}<br />
</div>
{{ order.product.productInfo.name }}
<span
class="autori"
v-if="order.product.productInfo.idAuthors"
>
- {{ products.getAutoriByIdAuthors(order.product.productInfo.idAuthors) }}
</span>
</q-item-label>
<q-item-label>
{{ order.product.productInfo.code }}
</q-item-label>
<q-item-label caption>
@@ -137,7 +158,10 @@
>
</q-btn>
</div>
<div v-else-if="showall" :class="`q-mx-sm text-blue-14 qta`">
<div
v-else-if="showall"
:class="`q-mx-sm text-blue-14 qta`"
>
{{ order.quantity + order.quantitypreordered }}
</div>
@@ -166,11 +190,7 @@
</span>
<span :class="isApplicatoSconto() ? 'ordine_scontato_nuovo' : ''">
= €
{{
order.TotalPriceProduct
? order.TotalPriceProduct.toFixed(2)
: 0
}}
{{ order.TotalPriceProduct ? order.TotalPriceProduct.toFixed(2) : 0 }}
</span>
<span
v-if="
@@ -204,9 +224,7 @@
<span
v-if="isApplicatoSconto() && !editmode"
class="ordine_scritta_sconto"
>{{
$t('ecomm.sconto_applicato', { risparmio: getRisparmio() })
}}</span
>{{ $t('ecomm.sconto_applicato', { risparmio: getRisparmio() }) }}</span
>
</div>
</q-item-label>
@@ -236,8 +254,7 @@
</div>
</template>
<script lang="ts" src="./CSingleCart.ts">
</script>
<script lang="ts" src="./CSingleCart.ts"></script>
<style lang="scss" scoped>
@import './CSingleCart.scss';

View File

@@ -409,9 +409,9 @@ h3 {
}
.my-card-prod {
transition: box-shadow 0.3s;
transition: box-shadow 0.3s ease, transform 0.3s ease;
/* Add a transition for a smooth effect */
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5) !important;
box-shadow: 0 10px 20px rgba(0,0,0,0.2) !important;
width: 100%;
max-width: 300px;
padding: 0.5rem 0.5rem;
@@ -2567,4 +2567,33 @@ body.body--dark {
.no-print {
// display: none !important;
}
.macro-junior {
font-family: 'Comic Sans MS', cursive, sans-serif;
font-size: 12px;
color: #ccc;
line-height: 1.3;
}
.macro-junior h2 {
font-style: italic;
font-weight: bold;
margin: 0 0 6px 0;
font-size: 16px;
}
.macro-junior p {
margin: 0 0 8px 0;
}
.macro-junior blockquote {
font-style: italic;
font-weight: bold;
margin: 6px 0;
padding-left: 12px;
border-left: 3px solid #333;
color: #ccc;
font-size: 12px;
line-height: 1.3;
}

View File

@@ -1882,7 +1882,7 @@ const msg_it = {
ord_not_confirmed: 'E\' avvenuto un errore. Ordine non Confermato. Ricaricare la pagina e riprovare.',
btn_cassa: 'Procedi all\'Ordine',
btn_ordini: 'I tuoi Ordini',
available: 'Disponib.',
available: 'Disponib',
preorders: 'Quantità Massima Pre-Ordinabili',
preord: 'Pre-Ordinate',
di_cui_x_in_carrello: '(nel tuo carrello: {qty})',

File diff suppressed because it is too large Load Diff

View File

@@ -2063,6 +2063,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
// User not exist !!
}
Products.init();
// const isLogged = localStorage.getItem(toolsext.localStorage.username)
// console.log('isLogged', isLogged)

View File

@@ -368,10 +368,10 @@ export default defineComponent({
clcol = `text-white`;
}
if (catalog?.backcolor) {
mystyle = `background-color: ` + catalog?.backcolor + '; ';
mystyle = `background-color: ${catalog?.backcolor};`;
}
testo =
`<span class="book-text-up ${clcol}" style=${mystyle}>` + testo + `</span>`;
`<span class="book-text-up ${clcol}" style="${mystyle}">` + testo + `</span>`;
}
}

View File

@@ -3,7 +3,7 @@
<div class="panel">
<div class="container">
<div class="row justify-center">
<CProductCard :id="id" :cosa="cosa" :complete="true"/>
<CProductCard v-if="id" :id="id" :cosa="cosa" :complete="true"/>
</div>
</div>
</div>