- 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:
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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">
|
||||
{{ 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';
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -47,4 +47,7 @@
|
||||
.qta{
|
||||
font-size: 1.15rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
.autori{
|
||||
font-style: italic;
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
@@ -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)
|
||||
|
||||
|
||||
@@ -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>`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user