lista ordini aggiornata
This commit is contained in:
@@ -43,6 +43,8 @@ export default defineComponent({
|
||||
const globalStore = useGlobalStore()
|
||||
const products = useProducts()
|
||||
|
||||
const site = ref(globalStore.site)
|
||||
|
||||
const myorder = reactive(<IOrder>{
|
||||
idapp: process.env.APP_ID,
|
||||
quantity: 0,
|
||||
@@ -214,7 +216,12 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function enableAddQty() {
|
||||
return getQtyAvailable() > 0
|
||||
if (site.value.ecomm!.enablePreOrders) {
|
||||
return true
|
||||
} else {
|
||||
return getQtyAvailable() > 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
onMounted(load)
|
||||
@@ -244,6 +251,7 @@ export default defineComponent({
|
||||
arrordersCart,
|
||||
endload,
|
||||
shared_consts,
|
||||
site,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -97,18 +97,31 @@
|
||||
@click="tools.isManager() ? (openlistorders = true) : null"
|
||||
>
|
||||
<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-label>
|
||||
{{ t('ecomm.available') }}
|
||||
<span v-if="getQtyAvailable() < 0">
|
||||
{{ t('ecomm.preorders') }}
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ t('ecomm.available') }}
|
||||
</span>
|
||||
</q-item-label>
|
||||
<q-item-label>
|
||||
<span class="prod_disp">
|
||||
{{ getQtyAvailable() }}
|
||||
<span v-if="getQtyAvailable() < 0">
|
||||
{{ -getQtyAvailable() }}
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ getQtyAvailable() }}
|
||||
</span>
|
||||
</span>
|
||||
<span class="prod_qtywarn">
|
||||
<div class="prod_qtywarn">
|
||||
{{ getQtyWarn() }}
|
||||
|
||||
<div
|
||||
@@ -116,10 +129,10 @@
|
||||
tools.isManager() && myproduct.QuantitaOrdinateInAttesa > 0
|
||||
"
|
||||
>
|
||||
Quantita Ordinate In Attesa :
|
||||
{{ myproduct.QuantitaOrdinateInAttesa }}
|
||||
{{ $t('ecomm.qta_in_attesa', {qty: myproduct.QuantitaOrdinateInAttesa }) }}
|
||||
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
</q-item-label>
|
||||
<q-item-label> </q-item-label>
|
||||
</q-item-section>
|
||||
@@ -245,9 +258,9 @@
|
||||
>
|
||||
</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">
|
||||
|
||||
@@ -284,6 +284,10 @@ export interface IPolicy {
|
||||
country: string
|
||||
}
|
||||
|
||||
export interface IECommSettings {
|
||||
enablePreOrders: boolean
|
||||
}
|
||||
|
||||
export interface ISites {
|
||||
_id?: string
|
||||
attiva?: boolean
|
||||
@@ -310,6 +314,7 @@ export interface ISites {
|
||||
keywords?: string
|
||||
contacts?: IContacts
|
||||
confpages: IConfPages
|
||||
ecomm?: IECommSettings
|
||||
}
|
||||
|
||||
export interface INewsToSent {
|
||||
|
||||
@@ -137,6 +137,7 @@ export interface IOrderCart {
|
||||
_id?: any
|
||||
idapp?: string
|
||||
numorder: number
|
||||
numord_pers: number
|
||||
userId: string
|
||||
user: IUserFields,
|
||||
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[] = [
|
||||
{
|
||||
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,
|
||||
order: 30,
|
||||
path: '/admin/ecommerce/products',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
materialIcon: 'fas fa-lemon',
|
||||
name: 'pages.products',
|
||||
component: () => import('@/rootgen/admin/products/products.vue'),
|
||||
inmenu: true,
|
||||
@@ -73,7 +87,7 @@ function getRoutesEcomm(site: ISites) {
|
||||
active: true,
|
||||
order: 30,
|
||||
path: '/admin/ecommerce/producers',
|
||||
materialIcon: 'fas fa-file-alt',
|
||||
materialIcon: 'fas fa-tractor',
|
||||
name: 'pages.producer',
|
||||
component: () => import('@/rootgen/admin/producer/producer.vue'),
|
||||
inmenu: true,
|
||||
|
||||
@@ -1637,7 +1637,8 @@ const msg_it = {
|
||||
ord_not_confirmed: 'E\' avvenuto un errore. Ordine non Confermato. Ricaricare la pagina e riprovare.',
|
||||
btn_cassa: 'Vai alla Cassa',
|
||||
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',
|
||||
consegnato: 'Ordine Consegnato',
|
||||
pagato: 'Ordine Pagato',
|
||||
@@ -1649,6 +1650,8 @@ const msg_it = {
|
||||
note:'Scrivi qui per eventuali note o chiarimenti:',
|
||||
totale: 'Totale',
|
||||
carrello: 'Carrello',
|
||||
settings: 'Impostazioni',
|
||||
qta_in_attesa: '(Ordinati In attesa {qty})',
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
@@ -346,6 +346,7 @@ export const colTableProducer = [
|
||||
|
||||
export const getcolorderscart = [
|
||||
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: 'status', label_trans: 'order.status' }),
|
||||
AddCol({ name: 'items', label_trans: 'order.items' }),
|
||||
|
||||
@@ -28,4 +28,7 @@ $heightBtn: 100%;
|
||||
.note {
|
||||
font-style: italic;
|
||||
color:blue;
|
||||
}
|
||||
}
|
||||
.totali {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import { shared_consts } from '@src/common/shared_vuejs'
|
||||
|
||||
import { CSingleCart } from '../../../components/CSingleCart'
|
||||
import { CTitleBanner } from '@components'
|
||||
import { ICart, IOrderCart } from '@src/model'
|
||||
import { ICart, IOrder, IOrderCart } from '@src/model'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'OrderInfo',
|
||||
@@ -43,7 +43,7 @@ export default defineComponent({
|
||||
name: 'numorder',
|
||||
required: true,
|
||||
align: 'left',
|
||||
label: 'Numero Ordine',
|
||||
label: 'Ordine N.',
|
||||
field: 'numorder',
|
||||
sortable: true
|
||||
},
|
||||
@@ -84,7 +84,7 @@ export default defineComponent({
|
||||
name: 'numorder',
|
||||
required: true,
|
||||
align: 'left',
|
||||
label: 'Numero Ordine',
|
||||
label: 'Ordine N.',
|
||||
field: 'numorder',
|
||||
sortable: true
|
||||
},
|
||||
@@ -148,6 +148,34 @@ export default defineComponent({
|
||||
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() {
|
||||
return productStore.getOrdersAllCart()
|
||||
}
|
||||
@@ -283,6 +311,7 @@ export default defineComponent({
|
||||
updateorders,
|
||||
getCols,
|
||||
endload,
|
||||
getOrdersCartWithTotals,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
:hide-header="$q.screen.lt.sm"
|
||||
:columns="columns"
|
||||
row-key="numorder"
|
||||
:rows="getOrdersCart()"
|
||||
:rows="getOrdersCartWithTotals()"
|
||||
>
|
||||
<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">
|
||||
@@ -40,7 +40,9 @@
|
||||
v-for="(item, index) of props.row.items"
|
||||
: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.quantity
|
||||
}})<br />
|
||||
@@ -68,10 +70,18 @@
|
||||
<template v-else v-slot:body="props">
|
||||
<q-tr :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 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 key="created_at" :props="props">
|
||||
{{ tools.getstrDateTime(props.row.created_at) }}
|
||||
@@ -94,7 +104,9 @@
|
||||
</div>
|
||||
</q-td>
|
||||
<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 key="status" :props="props">
|
||||
<span :class="props.row.status">{{
|
||||
@@ -127,7 +139,10 @@
|
||||
</div>
|
||||
</q-td>
|
||||
<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-list class="text-primary">
|
||||
<q-item
|
||||
|
||||
Reference in New Issue
Block a user