lista ordini aggiornata
This commit is contained in:
@@ -43,6 +43,8 @@ export default defineComponent({
|
|||||||
const globalStore = useGlobalStore()
|
const globalStore = useGlobalStore()
|
||||||
const products = useProducts()
|
const products = useProducts()
|
||||||
|
|
||||||
|
const site = ref(globalStore.site)
|
||||||
|
|
||||||
const myorder = reactive(<IOrder>{
|
const myorder = reactive(<IOrder>{
|
||||||
idapp: process.env.APP_ID,
|
idapp: process.env.APP_ID,
|
||||||
quantity: 0,
|
quantity: 0,
|
||||||
@@ -214,9 +216,14 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
function enableAddQty() {
|
function enableAddQty() {
|
||||||
|
if (site.value.ecomm!.enablePreOrders) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
return getQtyAvailable() > 0
|
return getQtyAvailable() > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(load)
|
onMounted(load)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -244,6 +251,7 @@ export default defineComponent({
|
|||||||
arrordersCart,
|
arrordersCart,
|
||||||
endload,
|
endload,
|
||||||
shared_consts,
|
shared_consts,
|
||||||
|
site,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -97,18 +97,31 @@
|
|||||||
@click="tools.isManager() ? (openlistorders = true) : null"
|
@click="tools.isManager() ? (openlistorders = true) : null"
|
||||||
>
|
>
|
||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-icon color="green" name="fas fa-store" />
|
<q-icon
|
||||||
|
:color="getQtyAvailable() >= 0 ? 'green' : 'blue'"
|
||||||
|
:name="getQtyAvailable() >= 0 ? 'fas fa-store' : 'fas fa-edit'"
|
||||||
|
/>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
|
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-item-label>
|
<q-item-label>
|
||||||
|
<span v-if="getQtyAvailable() < 0">
|
||||||
|
{{ t('ecomm.preorders') }}
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
{{ t('ecomm.available') }}
|
{{ t('ecomm.available') }}
|
||||||
|
</span>
|
||||||
</q-item-label>
|
</q-item-label>
|
||||||
<q-item-label>
|
<q-item-label>
|
||||||
<span class="prod_disp">
|
<span class="prod_disp">
|
||||||
|
<span v-if="getQtyAvailable() < 0">
|
||||||
|
{{ -getQtyAvailable() }}
|
||||||
|
</span>
|
||||||
|
<span v-else>
|
||||||
{{ getQtyAvailable() }}
|
{{ getQtyAvailable() }}
|
||||||
</span>
|
</span>
|
||||||
<span class="prod_qtywarn">
|
</span>
|
||||||
|
<div class="prod_qtywarn">
|
||||||
{{ getQtyWarn() }}
|
{{ getQtyWarn() }}
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -116,10 +129,10 @@
|
|||||||
tools.isManager() && myproduct.QuantitaOrdinateInAttesa > 0
|
tools.isManager() && myproduct.QuantitaOrdinateInAttesa > 0
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
Quantita Ordinate In Attesa :
|
{{ $t('ecomm.qta_in_attesa', {qty: myproduct.QuantitaOrdinateInAttesa }) }}
|
||||||
{{ myproduct.QuantitaOrdinateInAttesa }}
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</span>
|
|
||||||
</q-item-label>
|
</q-item-label>
|
||||||
<q-item-label> </q-item-label>
|
<q-item-label> </q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
@@ -245,9 +258,9 @@
|
|||||||
>
|
>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<strong
|
<strong>{{
|
||||||
>{{ shared_consts.getStatusStr(ordcart.status) }}</strong
|
shared_consts.getStatusStr(ordcart.status)
|
||||||
>
|
}}</strong>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<div v-for="(singleord, index) in ordcart.items" :key="index">
|
<div v-for="(singleord, index) in ordcart.items" :key="index">
|
||||||
|
|||||||
@@ -284,6 +284,10 @@ export interface IPolicy {
|
|||||||
country: string
|
country: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IECommSettings {
|
||||||
|
enablePreOrders: boolean
|
||||||
|
}
|
||||||
|
|
||||||
export interface ISites {
|
export interface ISites {
|
||||||
_id?: string
|
_id?: string
|
||||||
attiva?: boolean
|
attiva?: boolean
|
||||||
@@ -310,6 +314,7 @@ export interface ISites {
|
|||||||
keywords?: string
|
keywords?: string
|
||||||
contacts?: IContacts
|
contacts?: IContacts
|
||||||
confpages: IConfPages
|
confpages: IConfPages
|
||||||
|
ecomm?: IECommSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface INewsToSent {
|
export interface INewsToSent {
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ export interface IOrderCart {
|
|||||||
_id?: any
|
_id?: any
|
||||||
idapp?: string
|
idapp?: string
|
||||||
numorder: number
|
numorder: number
|
||||||
|
numord_pers: number
|
||||||
userId: string
|
userId: string
|
||||||
user: IUserFields,
|
user: IUserFields,
|
||||||
totalQty: number
|
totalQty: number
|
||||||
|
|||||||
0
src/rootgen/admin/settings/settings.scss
Executable file
0
src/rootgen/admin/settings/settings.scss
Executable file
51
src/rootgen/admin/settings/settings.ts
Executable file
51
src/rootgen/admin/settings/settings.ts
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
import { defineComponent, ref, onMounted } from 'vue'
|
||||||
|
|
||||||
|
import { CImgText } from '../../../components/CImgText/index'
|
||||||
|
import { CCard } from '@/components/CCard'
|
||||||
|
import { CMyPage } from '@/components/CMyPage'
|
||||||
|
import { CTitleBanner } from '@/components/CTitleBanner'
|
||||||
|
import { CGridTableRec } from '@/components/CGridTableRec'
|
||||||
|
import { CMyFieldRec } from '@/components/CMyFieldRec'
|
||||||
|
import { CMyFieldDb } from '@/components/CMyFieldDb'
|
||||||
|
|
||||||
|
import { useGlobalStore } from '@store/globalStore'
|
||||||
|
import { costanti } from '@costanti'
|
||||||
|
import { tools } from '@src/store/Modules/tools'
|
||||||
|
|
||||||
|
import { colTableProducer } from '@src/store/Modules/fieldsTable'
|
||||||
|
import MixinMetaTags from '@/mixins/mixin-metatags'
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: 'settings',
|
||||||
|
components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec, CMyFieldRec, CMyFieldDb},
|
||||||
|
setup() {
|
||||||
|
|
||||||
|
const mysite = ref(<any>null)
|
||||||
|
const tab = ref('server')
|
||||||
|
|
||||||
|
const globalStore = useGlobalStore()
|
||||||
|
|
||||||
|
const { setmeta } = MixinMetaTags()
|
||||||
|
|
||||||
|
async function mounted() {
|
||||||
|
mysite.value = await globalStore.caricaTabella('sites', process.env.APP_ID!)
|
||||||
|
}
|
||||||
|
|
||||||
|
function save(newval: any) {
|
||||||
|
console.log('ConfSite save')
|
||||||
|
tools.updateFonts(newval)
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(mounted)
|
||||||
|
|
||||||
|
return {
|
||||||
|
setmeta,
|
||||||
|
mysite,
|
||||||
|
costanti,
|
||||||
|
tab,
|
||||||
|
tools,
|
||||||
|
save,
|
||||||
|
globalStore,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
34
src/rootgen/admin/settings/settings.vue
Executable file
34
src/rootgen/admin/settings/settings.vue
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
<template>
|
||||||
|
<span
|
||||||
|
>{{
|
||||||
|
setmeta({
|
||||||
|
title: 'Impostazioni',
|
||||||
|
description: '',
|
||||||
|
keywords: '',
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div class="q-ma-sm q-gutter-sm q-pa-xs">
|
||||||
|
<div v-if="mysite">
|
||||||
|
<CTitleBanner title="Impostazioni"></CTitleBanner>
|
||||||
|
<CMyFieldDb
|
||||||
|
title="Attiva PreOrdini"
|
||||||
|
table="sites"
|
||||||
|
mykey="ecomm"
|
||||||
|
mysubkey="enablePreOrders"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
:type="costanti.FieldType.boolean"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" src="./settings.ts">
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import 'settings.scss';
|
||||||
|
</style>
|
||||||
@@ -55,11 +55,25 @@ function getRoutesEcomm(site: ISites) {
|
|||||||
]
|
]
|
||||||
|
|
||||||
const routes_admin_ecommerce: IListRoutes[] = [
|
const routes_admin_ecommerce: IListRoutes[] = [
|
||||||
|
{
|
||||||
|
active: true,
|
||||||
|
order: 30,
|
||||||
|
path: '/admin/ecommerce/settings',
|
||||||
|
materialIcon: 'fas fa-cogs',
|
||||||
|
name: 'ecomm.settings',
|
||||||
|
component: () => import('@/rootgen/admin/settings/settings.vue'),
|
||||||
|
inmenu: true,
|
||||||
|
submenu: true,
|
||||||
|
level_parent: 0,
|
||||||
|
level_child: 0.5,
|
||||||
|
onlyManager: true,
|
||||||
|
onlyEditor: true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
order: 30,
|
order: 30,
|
||||||
path: '/admin/ecommerce/products',
|
path: '/admin/ecommerce/products',
|
||||||
materialIcon: 'fas fa-file-alt',
|
materialIcon: 'fas fa-lemon',
|
||||||
name: 'pages.products',
|
name: 'pages.products',
|
||||||
component: () => import('@/rootgen/admin/products/products.vue'),
|
component: () => import('@/rootgen/admin/products/products.vue'),
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
@@ -73,7 +87,7 @@ function getRoutesEcomm(site: ISites) {
|
|||||||
active: true,
|
active: true,
|
||||||
order: 30,
|
order: 30,
|
||||||
path: '/admin/ecommerce/producers',
|
path: '/admin/ecommerce/producers',
|
||||||
materialIcon: 'fas fa-file-alt',
|
materialIcon: 'fas fa-tractor',
|
||||||
name: 'pages.producer',
|
name: 'pages.producer',
|
||||||
component: () => import('@/rootgen/admin/producer/producer.vue'),
|
component: () => import('@/rootgen/admin/producer/producer.vue'),
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
|
|||||||
@@ -1637,7 +1637,8 @@ const msg_it = {
|
|||||||
ord_not_confirmed: 'E\' avvenuto un errore. Ordine non Confermato. Ricaricare la pagina e riprovare.',
|
ord_not_confirmed: 'E\' avvenuto un errore. Ordine non Confermato. Ricaricare la pagina e riprovare.',
|
||||||
btn_cassa: 'Vai alla Cassa',
|
btn_cassa: 'Vai alla Cassa',
|
||||||
available: 'Disponibili',
|
available: 'Disponibili',
|
||||||
di_cui_x_in_carrello: '({qty} nel tuo carrello)',
|
preorders: 'In Prenotazione',
|
||||||
|
di_cui_x_in_carrello: '(nel tuo carrello: {qty})',
|
||||||
evaso: 'Ordine Evaso',
|
evaso: 'Ordine Evaso',
|
||||||
consegnato: 'Ordine Consegnato',
|
consegnato: 'Ordine Consegnato',
|
||||||
pagato: 'Ordine Pagato',
|
pagato: 'Ordine Pagato',
|
||||||
@@ -1649,6 +1650,8 @@ const msg_it = {
|
|||||||
note:'Scrivi qui per eventuali note o chiarimenti:',
|
note:'Scrivi qui per eventuali note o chiarimenti:',
|
||||||
totale: 'Totale',
|
totale: 'Totale',
|
||||||
carrello: 'Carrello',
|
carrello: 'Carrello',
|
||||||
|
settings: 'Impostazioni',
|
||||||
|
qta_in_attesa: '(Ordinati In attesa {qty})',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -346,6 +346,7 @@ export const colTableProducer = [
|
|||||||
|
|
||||||
export const getcolorderscart = [
|
export const getcolorderscart = [
|
||||||
AddCol({ name: 'numorder', label_trans: 'order.numorder' }),
|
AddCol({ name: 'numorder', label_trans: 'order.numorder' }),
|
||||||
|
AddCol({ name: 'numord_pers', label_trans: 'order.numord_pers' }),
|
||||||
AddCol({ name: 'created_at', label_trans: 'order.created_at', fieldtype: costanti.FieldType.date }),
|
AddCol({ name: 'created_at', label_trans: 'order.created_at', fieldtype: costanti.FieldType.date }),
|
||||||
AddCol({ name: 'status', label_trans: 'order.status' }),
|
AddCol({ name: 'status', label_trans: 'order.status' }),
|
||||||
AddCol({ name: 'items', label_trans: 'order.items' }),
|
AddCol({ name: 'items', label_trans: 'order.items' }),
|
||||||
|
|||||||
@@ -29,3 +29,6 @@ $heightBtn: 100%;
|
|||||||
font-style: italic;
|
font-style: italic;
|
||||||
color:blue;
|
color:blue;
|
||||||
}
|
}
|
||||||
|
.totali {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { shared_consts } from '@src/common/shared_vuejs'
|
|||||||
|
|
||||||
import { CSingleCart } from '../../../components/CSingleCart'
|
import { CSingleCart } from '../../../components/CSingleCart'
|
||||||
import { CTitleBanner } from '@components'
|
import { CTitleBanner } from '@components'
|
||||||
import { ICart, IOrderCart } from '@src/model'
|
import { ICart, IOrder, IOrderCart } from '@src/model'
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'OrderInfo',
|
name: 'OrderInfo',
|
||||||
@@ -43,7 +43,7 @@ export default defineComponent({
|
|||||||
name: 'numorder',
|
name: 'numorder',
|
||||||
required: true,
|
required: true,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: 'Numero Ordine',
|
label: 'Ordine N.',
|
||||||
field: 'numorder',
|
field: 'numorder',
|
||||||
sortable: true
|
sortable: true
|
||||||
},
|
},
|
||||||
@@ -84,7 +84,7 @@ export default defineComponent({
|
|||||||
name: 'numorder',
|
name: 'numorder',
|
||||||
required: true,
|
required: true,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
label: 'Numero Ordine',
|
label: 'Ordine N.',
|
||||||
field: 'numorder',
|
field: 'numorder',
|
||||||
sortable: true
|
sortable: true
|
||||||
},
|
},
|
||||||
@@ -148,6 +148,34 @@ export default defineComponent({
|
|||||||
return ris
|
return ris
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getOrdersCartWithTotals(): any[] {
|
||||||
|
const orderscart = getOrdersCart();
|
||||||
|
|
||||||
|
if (orderscart) {
|
||||||
|
// Calculate totals
|
||||||
|
const totals = {
|
||||||
|
created_at: new Date(),
|
||||||
|
items: null,
|
||||||
|
user:{
|
||||||
|
name: 'TOTALI',
|
||||||
|
surname: '',
|
||||||
|
},
|
||||||
|
status: 0,
|
||||||
|
// Add other properties as needed
|
||||||
|
totalPrice: orderscart.reduce((total: number, rec: any) => total + rec.totalPrice, 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Combine orders and totals
|
||||||
|
const rowsWithTotals = [...orderscart, totals];
|
||||||
|
|
||||||
|
return rowsWithTotals;
|
||||||
|
} else {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function getAllOrdersCart() {
|
function getAllOrdersCart() {
|
||||||
return productStore.getOrdersAllCart()
|
return productStore.getOrdersAllCart()
|
||||||
}
|
}
|
||||||
@@ -283,6 +311,7 @@ export default defineComponent({
|
|||||||
updateorders,
|
updateorders,
|
||||||
getCols,
|
getCols,
|
||||||
endload,
|
endload,
|
||||||
|
getOrdersCartWithTotals,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
:hide-header="$q.screen.lt.sm"
|
:hide-header="$q.screen.lt.sm"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
row-key="numorder"
|
row-key="numorder"
|
||||||
:rows="getOrdersCart()"
|
:rows="getOrdersCartWithTotals()"
|
||||||
>
|
>
|
||||||
<template v-if="$q.screen.lt.sm" v-slot:item="props">
|
<template v-if="$q.screen.lt.sm" v-slot:item="props">
|
||||||
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4">
|
<div class="q-pa-xs col-xs-12 col-sm-6 col-md-4">
|
||||||
@@ -40,7 +40,9 @@
|
|||||||
v-for="(item, index) of props.row.items"
|
v-for="(item, index) of props.row.items"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<div v-if="!!item.order && item.order.product">
|
<div
|
||||||
|
v-if="!!item && item.order && item.order.product"
|
||||||
|
>
|
||||||
{{ item.order.product.name }} ({{
|
{{ item.order.product.name }} ({{
|
||||||
item.order.quantity
|
item.order.quantity
|
||||||
}})<br />
|
}})<br />
|
||||||
@@ -68,10 +70,18 @@
|
|||||||
<template v-else v-slot:body="props">
|
<template v-else v-slot:body="props">
|
||||||
<q-tr :props="props">
|
<q-tr :props="props">
|
||||||
<q-td key="numorder" :props="props">
|
<q-td key="numorder" :props="props">
|
||||||
n. {{ props.row.numorder }}
|
<span v-if="props.row.numorder">
|
||||||
|
n. {{ props.row.numorder }}</span
|
||||||
|
>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td key="nameSurname" :props="props">
|
<q-td key="nameSurname" :props="props">
|
||||||
{{ props.row.userId.name }} {{ props.row.userId.surname }}
|
<span v-if="props.row.user">
|
||||||
|
<span
|
||||||
|
:class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
|
||||||
|
>{{ tools.getNomeUtenteByRecUser(props.row.user) }}
|
||||||
|
</span
|
||||||
|
></span
|
||||||
|
>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td key="created_at" :props="props">
|
<q-td key="created_at" :props="props">
|
||||||
{{ tools.getstrDateTime(props.row.created_at) }}
|
{{ tools.getstrDateTime(props.row.created_at) }}
|
||||||
@@ -94,7 +104,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td key="totalPrice" :props="props">
|
<q-td key="totalPrice" :props="props">
|
||||||
{{ props.row.totalPrice }} €
|
<span :class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
|
||||||
|
>{{ props.row.totalPrice }} €</span
|
||||||
|
>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td key="status" :props="props">
|
<q-td key="status" :props="props">
|
||||||
<span :class="props.row.status">{{
|
<span :class="props.row.status">{{
|
||||||
@@ -127,7 +139,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td key="comandi" :props="props">
|
<q-td key="comandi" :props="props">
|
||||||
<div v-if="tools.isManager()" class="q-pa-sm">
|
<div
|
||||||
|
v-if="tools.isManager() && props.row.user.name !== 'TOTALI'"
|
||||||
|
class="q-pa-sm"
|
||||||
|
>
|
||||||
<q-btn-dropdown rounded dense label="Azioni">
|
<q-btn-dropdown rounded dense label="Azioni">
|
||||||
<q-list class="text-primary">
|
<q-list class="text-primary">
|
||||||
<q-item
|
<q-item
|
||||||
|
|||||||
Reference in New Issue
Block a user