diff --git a/src/components/CBorders/CBorders.ts b/src/components/CBorders/CBorders.ts index 35406821..21910c51 100755 --- a/src/components/CBorders/CBorders.ts +++ b/src/components/CBorders/CBorders.ts @@ -21,6 +21,11 @@ export default defineComponent({ type: String, required: true, }, + addstr: { + type: String, + required: false, + default: 'px' + }, disable: { type: Boolean, required: false, diff --git a/src/components/CBorders/CBorders.vue b/src/components/CBorders/CBorders.vue index 173298d6..b052d473 100755 --- a/src/components/CBorders/CBorders.vue +++ b/src/components/CBorders/CBorders.vue @@ -17,7 +17,7 @@ :min="10" :max="1000" color="green" - addstr="px" + :addstr="addstr" @update:model-value="modifValueTop" > diff --git a/src/components/CCatalogoCard/CCatalogoCard.vue b/src/components/CCatalogoCard/CCatalogoCard.vue index 5e768ae1..613e5cfa 100755 --- a/src/components/CCatalogoCard/CCatalogoCard.vue +++ b/src/components/CCatalogoCard/CCatalogoCard.vue @@ -4,7 +4,11 @@ ' items-start q-gutter-sm': true, }" :style=" - scheda.height ? ' height: ' + scheda.height + 'px !important; ' : '' + scheda.height + ? ' height: ' + + tools.adjustSize(optcatalogo, scheda.height) + + 'px !important; ' + : '' " > @@ -54,9 +58,13 @@ ]" :style="{ justifyContent: 'center', - alignItems: 'flex-start', + alignItems: 'center', gap: '0.5rem', - width: scheda.dimensioni?.scheda_prodotto?.size.width ?? '100%', + width: + tools.adjustSize( + optcatalogo, + scheda.dimensioni?.scheda_prodotto?.size.width + ) ?? '100%', }" >
@@ -131,11 +153,19 @@ :value="myproduct.productInfo.code" :format="scheda.barcode.format" :fontsize="scheda.barcode.font?.size" - :width="parseInt(scheda.barcode.size.width)" - :height="parseInt(scheda.barcode.size.height)" - :text="`ISBN: ${myproduct.productInfo.code}`" + :width=" + parseInt( + tools.adjustSize(optcatalogo, scheda.barcode.size?.width) + ) + " + :height=" + parseInt( + tools.adjustSize(optcatalogo, scheda.barcode.size?.height) + ) + " > +
diff --git a/src/components/CMyDimensioni/CMyDimensioni.scss b/src/components/CMyDimensioni/CMyDimensioni.scss new file mode 100755 index 00000000..e69de29b diff --git a/src/components/CMyDimensioni/CMyDimensioni.ts b/src/components/CMyDimensioni/CMyDimensioni.ts new file mode 100755 index 00000000..22826fc9 --- /dev/null +++ b/src/components/CMyDimensioni/CMyDimensioni.ts @@ -0,0 +1,96 @@ +import { defineComponent, ref, computed, PropType, toRef, reactive, watch } from 'vue' +import { IColGridTable, IDimensioni, IOperators, ISize } from 'model' + +import { useI18n } from '@/boot/i18n' +import { useQuasar } from 'quasar' + +import { CMySize } from '@src/components/CMySize' +import { CBorders } from '@src/components/CBorders' +import { CMyFieldRec } from '@src/components/CMyFieldRec' + +import { tools } from '@store/Modules/tools' + +import { costanti } from '@costanti' + +import { shared_consts } from '@/common/shared_vuejs' + +export default defineComponent({ + name: 'CMyDimensioni', + emits: ['update:modelValue'], + components: { CMySize, CBorders, CMyFieldRec }, + props: { + modelValue: { + type: Object as PropType, + required: true, + }, + label: { + type: String, + required: false, + default: '' + }, + path: { + type: String, + required: false, + default: '' + }, + show_imgsfondo: { + type: Boolean, + required: false, + default: false, + }, + disable: { + type: Boolean, + required: false, + default: false, + }, + }, + setup(props, { emit }) { + const $q = useQuasar() + const { t } = useI18n() + + const internalModel = reactive({ ...props.modelValue }) + + // Sincronizzare i cambiamenti esterni con internalModel quando props cambiano + watch(() => [props.modelValue], (newModel: any) => { + Object.assign(internalModel, newModel); + // console.log('Internal Model updated:', newModel); + }, { immediate: true }); + + function modifSize(value: any) { + emit('update:modelValue', { ...internalModel, size: value }); + } + function modifMargini(value: any) { + emit('update:modelValue', { ...internalModel, margini: value }); + } + function modifPadding(value: any) { + emit('update:modelValue', { ...internalModel, padding: value }); + } + + function saveFielDim(rec: any, newval: any, col: IColGridTable) { + // console.log('saveFielDim', rec, 'newval', newval, 'col', col) + + if (col.fieldtype === costanti.FieldType.image) { + + if (!rec[col.name]) { + rec[col.name] = {} + } + rec[col.name] = newval.imagefile + + console.log('rec[col.name]', rec[col.name]) + // rec[col.name].imagefile = newval.imagefile + } + } + + return { + t, + tools, + shared_consts, + internalModel, + modifSize, + modifMargini, + modifPadding, + saveFielDim, + costanti, + } + } +}) diff --git a/src/components/CMyDimensioni/CMyDimensioni.vue b/src/components/CMyDimensioni/CMyDimensioni.vue new file mode 100755 index 00000000..4e391739 --- /dev/null +++ b/src/components/CMyDimensioni/CMyDimensioni.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/src/components/CMyDimensioni/index.ts b/src/components/CMyDimensioni/index.ts new file mode 100755 index 00000000..206c6520 --- /dev/null +++ b/src/components/CMyDimensioni/index.ts @@ -0,0 +1 @@ +export {default as CMyDimensioni} from './CMyDimensioni.vue' diff --git a/src/components/CMyEditElem/CMyEditElem.ts b/src/components/CMyEditElem/CMyEditElem.ts index 35709275..e48e3cd9 100755 --- a/src/components/CMyEditElem/CMyEditElem.ts +++ b/src/components/CMyEditElem/CMyEditElem.ts @@ -25,6 +25,7 @@ import { CSelectColor } from '@src/components/CSelectColor' import { CSelectFontSize } from '@src/components/CSelectFontSize' import { CMySize } from '@src/components/CMySize' import { CBorders } from '@src/components/CBorders' +import { CMyDimensioni } from '@src/components/CMyDimensioni' import MixinMetaTags from '@/mixins/mixin-metatags' import MixinBase from '@/mixins/mixin-base' @@ -41,7 +42,7 @@ export default defineComponent({ CImgTitle, CTitle, LandingFooter, CEventsCalendar, CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec, CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation, CMySlider, - CMySize, CBorders, + CMySize, CBorders, CMyDimensioni, }, emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem', 'dupPage'], props: { @@ -268,10 +269,16 @@ export default defineComponent({ if (myel.value.catalogo && myel.value.catalogo?.arrSchede) { for (const recscheda of myel.value.catalogo?.arrSchede) { if (recscheda.scheda && (!recscheda.scheda?.testo_bottom)) { - recscheda.scheda.testo_bottom = {contenuto: '', maxlength: 100} + recscheda.scheda.testo_bottom = { contenuto: '', maxlength: 100 } } - if (recscheda.scheda && (!recscheda.scheda?.testo_right)) { - recscheda.scheda.testo_right = {contenuto: ''} + if (recscheda.scheda && !recscheda.scheda.testo_bottom!.font) { + recscheda.scheda.testo_bottom!.font = { name: '', size: ''} + } + if (recscheda.scheda && (!recscheda.scheda?.testo_right || !recscheda.scheda?.testo_right.font) ) { + recscheda.scheda.testo_right = { contenuto: '', font: { name: '', size: ''} } + } + if (recscheda.scheda && (!recscheda.scheda?.dimensioni.pagina.imgsfondo)) { + recscheda.scheda.dimensioni.pagina = tools.resetRecIDimensioni(recscheda.scheda?.dimensioni.pagina) } if (recscheda.scheda && (!recscheda.scheda?.barcode || !recscheda.scheda?.barcode.font)) { recscheda.scheda.barcode = { @@ -279,11 +286,11 @@ export default defineComponent({ format: '', size: { width: '2', - height: '100', + height: '33', }, font: { name: '', - size: 16, + size: '11', } } } @@ -291,34 +298,33 @@ export default defineComponent({ } } - if (myel.value.catalogo && !myel.value.catalogo.imgsfondo_def) { - myel.value.catalogo.imgsfondo_def = { - imagefile: '', - fit: '', + if (myel.value.catalogo) { + if (!myel.value.catalogo.first_page) { + myel.value.catalogo.first_page = tools.resetRecIDimensioni(null) } + + myel.value.catalogo.first_page = tools.resetRecIDimensioni(myel.value.catalogo.first_page) + } + if (myel.value.catalogo) { + if (!myel.value.catalogo.last_page) + myel.value.catalogo.last_page = tools.resetRecIDimensioni(null) + + myel.value.catalogo.last_page = tools.resetRecIDimensioni(myel.value.catalogo.last_page) + } + if (myel.value.catalogo) { + if (!myel.value.catalogo.areadistampa) { + myel.value.catalogo.areadistampa = tools.resetRecIAreaDiStampa(null) + myel.value.catalogo.areadistampa.margini = { left: '0.59', top: '0.59', right: '0.59', bottom: '0.28'} + } + + myel.value.catalogo.areadistampa = tools.resetRecIAreaDiStampa(myel.value.catalogo.areadistampa) } if (myel.value.catalogo && !myel.value.catalogo.dimensioni_def) { - myel.value.catalogo.dimensioni_def = { - pagina: { - size: { - width: '', - height: '', - }, - margini: { - left: '', - top: '', - right: '', - bottom: '', - }, - padding: { - left: '', - top: '', - right: '', - bottom: '', - }, - } - } + myel.value.catalogo.dimensioni_def = { pagina: {} } + } + if (myel.value.catalogo && myel.value.catalogo.dimensioni_def) { + myel.value.catalogo.dimensioni_def.pagina = tools.resetRecIDimensioni(myel.value.catalogo.dimensioni_def.pagina) } } @@ -346,66 +352,68 @@ export default defineComponent({ } }) - let defaultDimensioniPag = { - size: { - width: '800px', - height: '600px', - }, - margini: { - top: '12px', - bottom: '0px', - left: '0px', - right: '0px', - }, - padding: { - top: '0px', - bottom: '0px', - left: '0px', - right: '0px', - }, + let defaultDimensioniPag = tools.resetRecIDimensioni(null) + defaultDimensioniPag.size = { + width: '800px', + height: '600px', + } + defaultDimensioniPag.margini = { + top: '12px', + bottom: '0px', + left: '0px', + right: '0px', + } + defaultDimensioniPag.padding = { + top: '0px', + bottom: '0px', + left: '0px', + right: '0px', } - let defaultDimensioniRiga = { - size: { - width: '800px', - height: '300px', - }, - margini: { - top: '40px', - bottom: '0px', - left: '0px', - right: '0px', - }, - padding: { - top: '0px', - bottom: '0px', - left: '0px', - right: '0px', - }, + let defaultDimensioniRiga = tools.resetRecIDimensioni(null) + + defaultDimensioniRiga.size = { + width: '800px', + height: '300px', + } + defaultDimensioniRiga.margini = { + top: '40px', + bottom: '0px', + left: '0px', + right: '0px', + } + defaultDimensioniRiga.padding = { + top: '0px', + bottom: '0px', + left: '0px', + right: '0px', } + let defaultSchedaProdotto = tools.resetRecIDimensioni(null) + + defaultSchedaProdotto.size = { + width: '360px', + height: '230px', + } + + defaultSchedaProdotto.margini = { + top: '0px', + bottom: '0px', + left: '0px', + right: '0px', + } + + defaultSchedaProdotto.padding = { + top: '0px', + bottom: '0px', + left: '0px', + right: '0px', + } let dimensioni: IElementiScheda = { pagina: defaultDimensioniPag, riga: defaultDimensioniRiga, - scheda_prodotto: { - size: { - width: '360px', - height: '230px', - }, - margini: { - top: '0px', - bottom: '0px', - left: '0px', - right: '0px', - }, - padding: { - top: '0px', - bottom: '0px', - left: '0px', - right: '0px', - }, - }, + scheda_prodotto: defaultSchedaProdotto, immagine_prodotto: { size: { width: '150px', diff --git a/src/components/CMyEditElem/CMyEditElem.vue b/src/components/CMyEditElem/CMyEditElem.vue index e9ba816f..83d1e799 100755 --- a/src/components/CMyEditElem/CMyEditElem.vue +++ b/src/components/CMyEditElem/CMyEditElem.vue @@ -1433,66 +1433,17 @@ icon="fas fa-play-circle" >
- - - + >
- - Immagine Sfondo di default: - {{ myel.catalogo.imgsfondo_def?.imagefile }}
- - - - - - - -
-
-
- - - -
+
- Nome File Web: {{ recscheda.scheda.bgimg }}
- - - - - - - {{ recscheda.scheda.dimensioni.imgsfondo }} - - - -
+ >
+ +
@@ -1880,6 +1789,21 @@ {descrizione_estesa} {prezzo}
+ + + + + + + - Prima Pagina: {{ myel.catalogo.first_page_img }}
+ Prima Pagina:
- - + >
- - - - -
@@ -2028,53 +1932,12 @@ label="Ultima Pagina" icon="fas fa-play-circle" > - Immagine: {{ myel.catalogo.last_page_img }}
-
- - -
- - - - - - -
+ >
+ + + +
Ratio: {{myel.catalogo.areadistampa.format[0] / myel.catalogo.areadistampa.format[1]}}
+ + + + + + + + + + +
diff --git a/src/components/CMyFieldRec/CMyFieldRec.ts b/src/components/CMyFieldRec/CMyFieldRec.ts index c009bdf6..57547ddc 100755 --- a/src/components/CMyFieldRec/CMyFieldRec.ts +++ b/src/components/CMyFieldRec/CMyFieldRec.ts @@ -263,6 +263,7 @@ export default defineComponent({ getclass, myrec, update_col, + getValue, } }, }) diff --git a/src/components/CMySize/CMySize.ts b/src/components/CMySize/CMySize.ts index 53948c55..05eb1c5e 100755 --- a/src/components/CMySize/CMySize.ts +++ b/src/components/CMySize/CMySize.ts @@ -4,6 +4,8 @@ import { IOperators, ISize } from 'model' import { useI18n } from '@/boot/i18n' import { useQuasar } from 'quasar' +import { tools } from '@store/Modules/tools' + import { CMySlider } from '@src/components/CMySlider' import { shared_consts } from '@/common/shared_vuejs' @@ -40,19 +42,50 @@ export default defineComponent({ const $q = useQuasar() const { t } = useI18n() + const ratio = ref(0) + const keepRatio = ref(false) + const internalModel = reactive({ ...props.modelValue }) - function modifValueWidth(value: any) { + function modifValueWidth(value: any, changeratio: boolean = true) { emit('update:modelValue', { ...internalModel, width: value }); + + if (keepRatio.value && changeratio) { + let ris = tools.getValueAndSuffix(value) + let myheight = ris.value * ( 1 / ratio.value) + modifValueHeight(myheight + ris.suffix, false) + } } - function modifValueHeight(value: any) { + function modifValueHeight(value: any, changeratio: boolean = true) { emit('update:modelValue', { ...internalModel, height: value }); + + if (keepRatio.value && changeratio) { + let ris = tools.getValueAndSuffix(value) + let mywidth = ris.value * (ratio.value) + modifValueWidth(mywidth+ ris.suffix, false) + } + } + + function modifValueRatio(value: any) { + // modifValueWidth(0) + } // Sincronizzare i cambiamenti esterni con internalModel quando props cambiano watch(() => props.modelValue, (newModel: any) => { Object.assign(internalModel, newModel); + + if (internalModel.height && internalModel.width) { + const heightValue = parseFloat(internalModel.height) || 1; + + if (heightValue === 0) { + ratio.value = parseFloat(internalModel.width) / 1; // Usa 1 come fallback + } else { + ratio.value = parseFloat(internalModel.width) / heightValue; + } + } + }, { immediate: true }); return { @@ -60,7 +93,10 @@ export default defineComponent({ shared_consts, modifValueWidth, modifValueHeight, + modifValueRatio, internalModel, + ratio, + keepRatio, } } }) diff --git a/src/components/CMySize/CMySize.vue b/src/components/CMySize/CMySize.vue index 3bee7ae9..3e4f07a7 100755 --- a/src/components/CMySize/CMySize.vue +++ b/src/components/CMySize/CMySize.vue @@ -11,6 +11,24 @@
+ + + = 100) { return 5 } else { - return 1 + if (props.max < 5) { + return (props.max - props.min) / 100 + } else { + return 1 + } + } } diff --git a/src/css/app.scss b/src/css/app.scss index 45f96591..cb950b4c 100755 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -2472,7 +2472,7 @@ body.body--dark { display: flex; flex-direction: row; /* Allineamento orizzontale */ flex-wrap: wrap; - gap: 10px; /* Spaziatura tra gli elementi */ + gap: 0px; /* Spaziatura tra gli elementi */ justify-content: space-evenly; } @@ -2495,6 +2495,7 @@ body.body--dark { .card-row { display: flex; justify-content: center; + flex-direction: column !important; } .cards-container { diff --git a/src/model/GlobalStore.ts b/src/model/GlobalStore.ts index ea3122f7..e3e083b8 100755 --- a/src/model/GlobalStore.ts +++ b/src/model/GlobalStore.ts @@ -690,7 +690,7 @@ export interface ISize { } export interface IFont { name?: string - size?: number + size?: string } export interface IBorder { @@ -717,6 +717,17 @@ export interface IDimensioni { margini?: IBorder padding?: IBorder imgsfondo?: IImg + text_html?: IText +} + +export interface IAreaDiStampa { + margini?: IBorder + unit: string + format: number[] + orientation: string + compress: boolean + scale: number + scalecanvas: number } export interface IElementiPagina { @@ -726,6 +737,7 @@ export interface IElementiPagina { export interface IText { contenuto?: string maxlength?: number + font?: IFont } export interface IElementiScheda { @@ -743,6 +755,7 @@ export interface IMyScheda { line_height?: number numschede_perRiga?: number numschede_perCol?: number + show_separatore: boolean testo_right?: IText testo_bottom?: IText posiz_text?: number @@ -779,16 +792,10 @@ export interface ICatalogo { pdf_filename?: string printable?: boolean - first_page_img?: string - first_page_html?: string - first_page_height?: number - first_page_width?: number - last_page_img?: string - last_page_html?: string - last_page_height?: number - last_page_width?: number + first_page?: IDimensioni + last_page?: IDimensioni + areadistampa?: IAreaDiStampa - imgsfondo_def?: IImg dimensioni_def?: IElementiPagina arrSchede?: ISchedaSingola[] diff --git a/src/statics/lang/it.js b/src/statics/lang/it.js index a1acfb9e..1caf984f 100755 --- a/src/statics/lang/it.js +++ b/src/statics/lang/it.js @@ -1208,6 +1208,8 @@ const msg_it = { date_updated: 'Ult. Aggiornamento', }, mypages: { + duplica_newname: 'Inserisci il nome della Nuova Pagina (senza spazi)', + duplica_conferma: 'Duplicare {path} creando {newpath}', attivita: 'Attività', find_people: 'Cerca Persone', find_group: 'Cerca Gruppo', diff --git a/src/store/Modules/costanti.ts b/src/store/Modules/costanti.ts index 5656bb3b..6a282f40 100755 --- a/src/store/Modules/costanti.ts +++ b/src/store/Modules/costanti.ts @@ -34,12 +34,6 @@ export const costanti = { 'Printable', 'numschede_perCol', 'numschede_perRiga', - 'first_page_img', - 'first_page_html', - 'first_page_height', - 'last_page_img?', - 'last_page_html', - 'last_page_height', 'text', ], diff --git a/src/store/Modules/fieldsTable.ts b/src/store/Modules/fieldsTable.ts index f0eb56c7..31d87a3d 100755 --- a/src/store/Modules/fieldsTable.ts +++ b/src/store/Modules/fieldsTable.ts @@ -163,7 +163,7 @@ export const colIText = [ AddCol({ name: 'maxlength', label_trans: 'catalogo.maxlength', fieldtype: costanti.FieldType.number }), ] export const colmyIImg = [ - AddCol({ name: 'filename', label_trans: 'iimg.filename', fieldtype: costanti.FieldType.string }), + AddCol({ name: 'imagefile', label_trans: 'iimg.imagefile', fieldtype: costanti.FieldType.image }), AddCol({ name: 'fit', label_trans: 'iimg.fit', fieldtype: costanti.FieldType.string }), ] @@ -202,14 +202,6 @@ export const colmyelCatalogo = [ AddCol({ name: 'optcatalogo.', label_trans: 'catalogo.optcatalogo.', fieldtype: costanti.FieldType.number }), AddCol({ name: 'margine_pagina', label_trans: 'margine_pagina', fieldtype: costanti.FieldType.string }), AddCol({ name: 'margine_riga', label_trans: 'margine_riga', fieldtype: costanti.FieldType.string }), - AddCol({ name: 'first_page_img', label_trans: 'catalogo.first_page_img', fieldtype: costanti.FieldType.image }), - AddCol({ name: 'last_page_img', label_trans: 'catalogo.last_page_img', fieldtype: costanti.FieldType.image }), - AddCol({ name: 'first_page_html', label_trans: 'catalogo.first_page_html', fieldtype: costanti.FieldType.html }), - AddCol({ name: 'first_page_height', label_trans: 'catalogo.first_page_height', fieldtype: costanti.FieldType.number }), - AddCol({ name: 'last_page_height', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.number }), - AddCol({ name: 'last_page_html', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.html }), - - AddCol({ name: 'imgsfondo_def', label_trans: 'catalogo.imgsfondo_def', fieldtype: costanti.FieldType.image }), ] @@ -4224,8 +4216,8 @@ export const fieldsTable = { value: 'imgs', label: 'Immagini', columns: colmyIImg, - colkey: 'filename', - collabel: 'filename', + colkey: 'imagefile', + collabel: 'imagefile', }, { value: 'listcards', diff --git a/src/store/Modules/tools.ts b/src/store/Modules/tools.ts index fa7e3571..c125f5fe 100644 --- a/src/store/Modules/tools.ts +++ b/src/store/Modules/tools.ts @@ -15,6 +15,13 @@ import { Privacy, TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount, IMyCircuit, ISendCoin, IMovement, IMovVisu, INotif, IMyElem, IMyCard, ILabelValue, ILabelValueStr, IAnim, ILang, IGroupShort, IPagination, IFavorite, IBookmark, IMovQuery, + IDimensioni, + ISize, + IBorder, + IImg, + IText, + IAreaDiStampa, + ICatalogo, } from '@model' import MixinBase from '@/mixins/mixin-base' @@ -48,6 +55,7 @@ import { Router } from 'vue-router' import { AxiosResponse, default as Axios } from 'axios' import { PayloadMessageTypes } from '@/common' import { useNotifStore } from '@store/NotifStore' +import { isDimensionToken } from 'html2canvas/dist/types/css/syntax/parser' export interface INotify { color?: string @@ -343,6 +351,34 @@ export const tools = { }, ], + SelectListFormatPDF: [ + { label: 'a4 (mm)', value: [210, 297] }, + { label: '22,60 x 31,26 (in mm)', value: [226.0, 312.6] }, + ], + + SelectListScalePDF: [ + { label: 'Normale (100 DPI)', value: 1 }, + { label: 'Medio (200 PDI)', value: 2 }, + { label: 'Alto (300 PDI)', value: 3 }, + ], + SelectListQualityPDF: [ + { label: 'Bassa (1 scale)', value: 1 }, + { label: 'Normale (2 scale)', value: 2 }, + { label: 'Media (3 scale)', value: 3 }, + { label: 'Elevata (4 scale)', value: 4 }, + ], + + SelectListOrientamentoPDF: [ + { label: 'Verticale', value: 'portrait' }, + { label: 'orizzontale', value: 'landscape' } + ], + + SelectListUnitPDF: [ + { label: 'Millimetri (mm)', value: 'mm' }, + { label: 'Centimetri (cm)', value: 'cm' }, + { label: 'Pollici (in)', value: 'in' }, + { label: 'Pixel (px)', value: 'px' }, + ], SelectListColors: [ { label: '[Nessuno]', value: '' }, @@ -7949,6 +7985,8 @@ export const tools = { ris = 'pages/' + path } else if (table === 'productInfos') { ris = path + } else if (table === 'imgs') { + ris = path } else { ris = table } @@ -9145,6 +9183,131 @@ export const tools = { return encodeURIComponent(str); // Codifica la stringa per URL }, + resetISize(rec: ISize | null) { + if (!rec) { + rec = { + width: '', + height: '' + } + } + + return rec + }, + + resetIBorder(rec: IBorder | null) { + if (!rec) { + rec = {} + rec.top = '' + rec.bottom = '' + rec.left = '' + rec.right = '' + } + + return rec + }, + + resetIImg(rec: IImg | null) { + if (!rec) { + rec = {} + + rec.imagefile = '' + rec.fit = '' + } + + return rec + }, + + resetIText(rec: IText | null) { + if (!rec) { + rec = {} + + rec.contenuto = '' + rec.maxlength = 0 + } + + return rec + }, + + resetRecIDimensioni(rec: IDimensioni | null) { + + let myrec: IDimensioni = {} + + if (!rec) { + myrec = { + size: {}, + margini: {}, + padding: {}, + imgsfondo: {}, + text_html: {}, + } + } else { + myrec = rec + } + + myrec.size = this.resetISize(myrec.size!) + myrec.margini = this.resetIBorder(myrec.margini!) + myrec.padding = this.resetIBorder(myrec.padding!) + myrec.imgsfondo = this.resetIImg(myrec.imgsfondo!) + myrec.text_html = this.resetIText(myrec.text_html!) + + return myrec + }, + + resetRecIAreaDiStampa(rec: IAreaDiStampa | null) { + + let myrec: IAreaDiStampa = {} + + if (!rec) { + myrec = { + margini: {}, + unit: 'mm', + compress: false, + orientation: 'portrait', + format: [210, 297], + scale: 1, + scalecanvas: 2, + } + } else { + myrec = rec + } + + myrec.margini = this.resetIBorder(myrec.margini!) + + return myrec + }, + + adjustSize(optcatalogo: ICatalogo, mysize: any) { + if (!mysize) { + return ''; + } + + // Estrae l'unità di misura + const unit = mysize.replace(/[\d.]/g, ''); // Ottiene il suffisso (es. 'px') + const numericalValue = parseFloat(mysize) || 0; // Converti la parte numerica in float + + let size = numericalValue; // Inizializza size con il valore numerico + + if (optcatalogo.printable && optcatalogo.areadistampa?.scale && optcatalogo.areadistampa?.scale > 0) { + size = size * optcatalogo.areadistampa?.scale; // Applicare la scala se necessaria + } + + let strfinale = `${size}${unit}` + // console.log('mysize', mysize, ' => ', strfinale) + return strfinale; // Restituisce il valore con il suffisso + }, + + getValueAndSuffix(myvalue: any): {value: number, suffix: string} { + if (!myvalue) { + return {value: 0, suffix: ''}; + } + + // Estrae l'unità di misura + const unit = myvalue.replace(/[\d.]/g, ''); // Ottiene il suffisso (es. 'px') + const numericalValue = parseFloat(myvalue) || 0; // Converti la parte numerica in float + + return { value: numericalValue, suffix: unit}; // Restituisce il valore con il suffisso + }, + // FINE ! diff --git a/src/store/Products.ts b/src/store/Products.ts index 00f95008..135f2b6d 100755 --- a/src/store/Products.ts +++ b/src/store/Products.ts @@ -1,4 +1,4 @@ -import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText } from 'model' +import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText, ICatalogo } from 'model' import { Api } from '@api' import { serv_constants } from '@src/store/Modules/serv_constants' @@ -1267,7 +1267,7 @@ export const useProducts = defineStore('Products', { return authorString }, - replaceKeyWordsByProduct(myproduct: IProduct, testo: IText) { + replaceKeyWordsByProduct(optcatalogo: ICatalogo, myproduct: IProduct, testo: IText) { if (!myproduct || !testo.contenuto) { return testo.contenuto; } @@ -1292,6 +1292,7 @@ export const useProducts = defineStore('Products', { const formato = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].formato : '' const pagine = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].pagine : '' + const scale = optcatalogo.printable ? optcatalogo.areadistampa?.scale : 1 // Crea una mappa di sostituzioni const replacements = { '{autore}': autori || '', @@ -1302,6 +1303,7 @@ export const useProducts = defineStore('Products', { '{misure}': misure || '', '{formato}': formato || '', '{prezzo}': prezzo || '', + '{scale}': scale || '', '{prezzo_scontato}': prezzo_scontato || '', }; diff --git a/src/store/globalStore.ts b/src/store/globalStore.ts index 4f61d607..3d2d8813 100644 --- a/src/store/globalStore.ts +++ b/src/store/globalStore.ts @@ -1200,21 +1200,33 @@ export const useGlobalStore = defineStore('GlobalStore', { async duplicatePage(path: string, $q: any, t: any) { const userStore = useUserStore() - return Api.SendReq('/duppage', 'POST', { path }) - .then((res) => { - if (res) { - tools.showPositiveNotif($q, t('mypages.duplicateok')) - return true - } else { - tools.showNegativeNotif($q, t('mypages.duplicateerr')) - return false - } - }) - .catch((error) => { - console.log('error loadTable', error) - userStore.setErrorCatch(error) - return null - }) + let newpath = prompt(t('mypages.duplica_newname')) + + $q.dialog({ + message: t('mypages.duplica_conferma', { path, newpath }), + ok: { label: t('dialog.yes'), push: true }, + cancel: { label: t('dialog.cancel') }, + title: t('db.domanda') + }).onOk(() => { + + + return Api.SendReq('/duppage', 'POST', { path, newpath }) + .then((res) => { + if (res) { + tools.showPositiveNotif($q, t('mypages.duplicateok')) + return true + } else { + tools.showNegativeNotif($q, t('mypages.duplicateerr')) + return false + } + }) + .catch((error) => { + console.log('error loadTable', error) + userStore.setErrorCatch(error) + return null + }) + }) + }, async loadPageTest() { @@ -2240,11 +2252,7 @@ export const useGlobalStore = defineStore('GlobalStore', { Editore: [], pdf: false, dimensioni_def: { - pagina: { - size: { width: '', height: '' }, - margini: {left: '', top: '', right: '', bottom: ''}, - padding: {left: '', top: '', right: '', bottom: ''}, - }, + pagina: tools.resetRecIDimensioni(null) }, } } diff --git a/src/views/ecommerce/catalogo/catalogo.scss b/src/views/ecommerce/catalogo/catalogo.scss index 2087205c..429b54da 100755 --- a/src/views/ecommerce/catalogo/catalogo.scss +++ b/src/views/ecommerce/catalogo/catalogo.scss @@ -1,5 +1,9 @@ $heightBtn: 100%; +body { + line-height: 1.2 !important; +} + .card .product-image { height: 300px; } @@ -64,10 +68,3 @@ $heightBtn: 100%; flex-basis: 100%; height: 0; } - -.first_page{ - padding-top: 40px; - padding-bottom: 40px; - padding-left: 30px; - padding-right: 30px; -} \ No newline at end of file diff --git a/src/views/ecommerce/catalogo/catalogo.ts b/src/views/ecommerce/catalogo/catalogo.ts index 266315d0..c63a7139 100755 --- a/src/views/ecommerce/catalogo/catalogo.ts +++ b/src/views/ecommerce/catalogo/catalogo.ts @@ -16,7 +16,6 @@ import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard' import { CSelectUserActive } from '@src/components/CSelectUserActive' import { ICatalogo, IFilterCatalogo, IMyScheda, IProdView, IProduct, ISchedaSingola, ISearchList } from 'model' -import html2canvas from 'html2canvas' // import { VueHtmlToPaper } from 'vue-html-to-paper' import html2pdf from 'html2pdf.js' @@ -114,12 +113,10 @@ export default defineComponent({ watch(() => cat.value, (newval, oldval) => { - if (cat.value) { - if (loadpage.value) - tools.setCookie(tools.COOK_CATEGORIA, cat.value.toString()) - filter.value.author = '' // disattivo il filtro autore - resetSearch() - } + if (loadpage.value) + tools.setCookie(tools.COOK_CATEGORIA, cat.value.toString()) + filter.value.author = '' // disattivo il filtro autore + resetSearch() calcArrProducts() }) @@ -639,27 +636,64 @@ export default defineComponent({ try { + let defaultMargin = 0.1 + if (props.optcatalogo.printable) { + defaultMargin = 0 + } else { + defaultMargin = 0 + } + const unit = props.optcatalogo.areadistampa!.unit + + let myformat = { ...props.optcatalogo.areadistampa!.format } + + let scale = props.optcatalogo.areadistampa!.scale + let scalecanvas = props.optcatalogo.areadistampa!.scalecanvas + + if (tools.isObject(myformat) && scale > 0) { + } else { + myformat = [210, 297] + } + + + const formatwidth = (myformat[0] * scale) + const formatheight = (myformat[1] * scale) + + let myfile = (props.optcatalogo.pdf_filename ?? 'catalogo_completo') + + myfile += '_' + formatwidth + '_' + formatheight + '_' + unit + '_scale_' + scale + + myfile += '.pdf' + + const element = document.getElementById('pdf-content') const opt = { - margin: [0.1, 0.1, 0.1, 0.1], - filename: (props.optcatalogo.pdf_filename ?? 'catalogo_completo') + '.pdf', + margin: [ + props.optcatalogo.printable ? (parseFloat(props.optcatalogo.areadistampa!.margini?.left) || defaultMargin) : defaultMargin, + props.optcatalogo.printable ? (parseFloat(props.optcatalogo.areadistampa!.margini?.top) || defaultMargin) : defaultMargin, + props.optcatalogo.printable ? (parseFloat(props.optcatalogo.areadistampa!.margini?.bottom) || defaultMargin) : defaultMargin, + props.optcatalogo.printable ? (parseFloat(props.optcatalogo.areadistampa!.margini?.right) || defaultMargin) : defaultMargin + ], + filename: myfile, image: { type: 'jpeg', quality: 0.98 }, html2canvas: { - scale: 2, + scale: scalecanvas, useCORS: true, letterRendering: true, }, jsPDF: { - unit: 'in', - format: 'a4', - orientation: 'portrait', - compress: true + unit: unit, + format: [formatwidth, formatheight], + orientation: props.optcatalogo.areadistampa!.orientation, + compress: props.optcatalogo.areadistampa!.compress, }, } + console.log('opt di stampa', opt) + // a4: [595.28, 841.89] + await html2pdf().set(opt).from(element).save() $q.loading.hide() @@ -679,10 +713,12 @@ export default defineComponent({ } } - function groupedPages(scheda: IMyScheda) { - if (scheda) { - const schedePerRiga = scheda.numschede_perRiga || 1 - const schedePerCol = scheda.numschede_perCol || 1 + function groupedPages(recscheda: ISchedaSingola) { + + let numschedeattuali = 0 + if (recscheda.scheda) { + const schedePerRiga = recscheda.scheda.numschede_perRiga || 1 + const schedePerCol = recscheda.scheda.numschede_perCol || 1 const schedePerPagina = schedePerRiga * schedePerCol let indiceprodotto = 0 @@ -707,7 +743,13 @@ export default defineComponent({ page.push(row) } + numschedeattuali++ pages.push(page) + + if (recscheda.numSchede! > 0) { + if (numschedeattuali >= recscheda.numSchede!) + return pages + } } return pages @@ -725,15 +767,15 @@ export default defineComponent({ } function generateStylePageScheda(optcatalogo: ICatalogo, scheda: IMyScheda) { - const marginTop = scheda.dimensioni?.pagina?.margini?.top ? scheda.dimensioni?.pagina?.margini?.top : (optcatalogo.dimensioni_def?.pagina?.margini?.top ?? '') - const marginBottom = scheda.dimensioni?.pagina?.margini?.bottom ? scheda.dimensioni?.pagina?.margini?.bottom : (optcatalogo.dimensioni_def?.pagina?.margini?.bottom ?? '') - const marginLeft = scheda.dimensioni?.pagina?.margini?.left ? scheda.dimensioni?.pagina?.margini?.left : (optcatalogo.dimensioni_def?.pagina?.margini?.left ?? '') - const marginRight = scheda.dimensioni?.pagina?.margini?.right ? scheda.dimensioni?.pagina?.margini?.right : (optcatalogo.dimensioni_def?.pagina?.margini?.right ?? '') + const marginTop = scheda.dimensioni?.pagina?.margini?.top ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.margini?.top) : (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.margini?.top) ?? '') + const marginBottom = scheda.dimensioni?.pagina?.margini?.bottom ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.margini?.bottom) : (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.margini?.bottom) ?? '') + const marginLeft = scheda.dimensioni?.pagina?.margini?.left ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.margini?.left) : (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.margini?.left) ?? '') + const marginRight = scheda.dimensioni?.pagina?.margini?.right ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.margini?.right): (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.margini?.right) ?? '') - const paddingTop = scheda.dimensioni?.pagina?.padding?.top ? scheda.dimensioni?.pagina?.padding?.top : (optcatalogo.dimensioni_def?.pagina?.padding?.top ?? '') - const paddingBottom = scheda.dimensioni?.pagina?.padding?.bottom ? scheda.dimensioni?.pagina?.padding?.bottom : (optcatalogo.dimensioni_def?.pagina?.padding?.bottom ?? '') - const paddingLeft = scheda.dimensioni?.pagina?.padding?.left ? scheda.dimensioni?.pagina?.padding?.left : (optcatalogo.dimensioni_def?.pagina?.padding?.left ?? '') - const paddingRight = scheda.dimensioni?.pagina?.padding?.right ? scheda.dimensioni?.pagina?.padding?.right : (optcatalogo.dimensioni_def?.pagina?.padding?.right ?? '') + const paddingTop = scheda.dimensioni?.pagina?.padding?.top ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.padding?.top) : (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.top) ?? '') + const paddingBottom = scheda.dimensioni?.pagina?.padding?.bottom ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.padding?.bottom) : (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.bottom) ?? '') + const paddingLeft = scheda.dimensioni?.pagina?.padding?.left ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.padding?.left) : (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.left) ?? '') + const paddingRight = scheda.dimensioni?.pagina?.padding?.right ? tools.adjustSize(props.optcatalogo, scheda.dimensioni?.pagina?.padding?.right) : (tools.adjustSize(props.optcatalogo, optcatalogo.dimensioni_def?.pagina?.padding?.right) ?? '') // Esiste un immagine di sfondo specifica della singola pagina ? let fileimg = scheda.dimensioni?.pagina?.imgsfondo?.imagefile @@ -744,15 +786,15 @@ export default defineComponent({ if (!fileimg) { // Esiste un immagine di sfondo uguali per tutte le pagine ? - fileimg = optcatalogo.imgsfondo_def?.imagefile - backgroundSize = optcatalogo.imgsfondo_def?.fit + fileimg = optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile + backgroundSize = optcatalogo.dimensioni_def?.pagina.imgsfondo?.fit fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + fileimg})` : '' } let backgroundImage = fileimg ?? '' - const width = scheda.dimensioni?.pagina?.size?.width ? scheda.dimensioni?.pagina?.size?.width : (optcatalogo.dimensioni_def?.pagina?.size?.width ?? '') - const height = scheda.dimensioni?.pagina?.size?.height ? scheda.dimensioni?.pagina?.size?.height : (optcatalogo.dimensioni_def?.pagina?.size?.height ?? '') + let width = scheda.dimensioni?.pagina?.size?.width ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.size?.width) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.width) ?? '') + let height = scheda.dimensioni?.pagina?.size?.height ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.size?.height) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.height) ?? '') return { marginBottom, @@ -773,27 +815,64 @@ export default defineComponent({ } function getWidthPagina(optcatalogo: ICatalogo, scheda: IMyScheda) { - return scheda.dimensioni?.pagina?.size?.width ? scheda.dimensioni?.pagina?.size?.width : (optcatalogo.dimensioni_def?.pagina?.size?.width ?? '') + return scheda.dimensioni?.pagina?.size?.width ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.size?.width) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.width) ?? '') } function getHeightPagina(optcatalogo: ICatalogo, scheda: IMyScheda) { - return scheda.dimensioni?.pagina?.size?.height ? scheda.dimensioni?.pagina?.size?.height : (optcatalogo.dimensioni_def?.pagina?.size?.height ?? '') + return scheda.dimensioni?.pagina?.size?.height ? tools.adjustSize(optcatalogo, scheda.dimensioni?.pagina?.size?.height) : (tools.adjustSize(optcatalogo, optcatalogo.dimensioni_def?.pagina?.size?.height) ?? '') + } + + function getStyleRowSeparator(recscheda: ISchedaSingola) { + const paddingLeft = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.left) ?? '0px'; + const paddingRight = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.right) ?? '0px'; + + return { + paddingLeft: `${paddingLeft}`, + paddingRight: `${paddingRight}`, + }; } function getStyleRow(recscheda: ISchedaSingola) { const placeContent = 'center'; - const width = recscheda.scheda?.dimensioni?.scheda_prodotto?.size?.width ?? '100px'; - const height = recscheda.scheda?.dimensioni?.scheda_prodotto?.size?.height; + const width = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.size?.width) ?? ''; + const height = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.size?.height); - const marginTop = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.top ?? '0px'; - const marginBottom = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.bottom ?? '0px'; - const marginLeft = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.left ?? '0px'; - const marginRight = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.right ?? '0px'; + const marginTop = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.margini?.top) ?? '0px'; + const marginBottom = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.margini?.bottom) ?? '0px'; + const marginLeft = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.margini?.left) ?? '0px'; + const marginRight = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.margini?.right) ?? '0px'; - const paddingTop = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.top ?? '0px'; - const paddingBottom = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.bottom ?? '0px'; - const paddingLeft = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.left ?? '0px'; - const paddingRight = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.right ?? '0px'; + const paddingTop = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.padding?.top) ?? '0px'; + const paddingBottom = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.padding?.bottom) ?? '0px'; + const paddingLeft = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.padding?.left) ?? '0px'; + const paddingRight = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.riga?.padding?.right) ?? '0px'; + + return { + placeContent, + flex: `0 1 ${width} !important;`, + margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`, + padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`, + ...(width ? { width: `${width} !important;` } : {}), + ...(height ? { height: `${height} !important;` } : {}) // Aggiungi l'altezza solo se è valorizzata + }; + + } + + function getStyleSchedaProdotto(recscheda: ISchedaSingola) { + const placeContent = 'center'; + + const width = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.size?.width) ?? '100px'; + const height = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.size?.height); + + const marginTop = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.top) ?? '0px'; + const marginBottom = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.bottom) ?? '0px'; + const marginLeft = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.left) ?? '0px'; + const marginRight = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.right) ?? '0px'; + + const paddingTop = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.top) ?? '0px'; + const paddingBottom = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.bottom) ?? '0px'; + const paddingLeft = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.left) ?? '0px'; + const paddingRight = tools.adjustSize(props.optcatalogo, recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.right) ?? '0px'; return { placeContent, @@ -849,8 +928,10 @@ export default defineComponent({ generateStylePageScheda, generateStyleCatalogo, getStyleRow, + getStyleSchedaProdotto, getWidthPagina, getHeightPagina, + getStyleRowSeparator, } } }) diff --git a/src/views/ecommerce/catalogo/catalogo.vue b/src/views/ecommerce/catalogo/catalogo.vue index cebcde1b..2e908e19 100755 --- a/src/views/ecommerce/catalogo/catalogo.vue +++ b/src/views/ecommerce/catalogo/catalogo.vue @@ -18,7 +18,7 @@ :label="`Crea PDF ${optcatalogo.pdf_filename}`" @click="generatePDF" > -
+
- \
+ \ +
@@ -294,11 +299,19 @@
- -
- - - + + +
+
+ + +
+ +
+ + +
+ + +
+
+
+
-
+
@@ -427,35 +458,35 @@
-
+
Sfondo: {{ costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + - optcatalogo.imgsfondo_def?.imagefile + optcatalogo.dimensioni_def?.pagina.imgsfondo?.imagefile }}
-
+
Prima Pagina: {{ costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + - optcatalogo.first_page_img + optcatalogo.first_page.imgsfondo.imagefile }}
@@ -463,7 +494,7 @@ :src=" costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + - optcatalogo.first_page_img + optcatalogo.first_page.imgsfondo.imagefile " > @@ -472,7 +503,7 @@ {{ costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + - optcatalogo.last_page_img + optcatalogo.last_page.imgsfondo.imagefile }}
@@ -480,7 +511,7 @@ :src=" costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + - optcatalogo.last_page_img + optcatalogo.last_page.imgsfondo.imagefile " > @@ -498,6 +529,6 @@ -