- Gestore Ordini GAS (aggiornato)

- Possibilità di modificare un record, click sulla matita rossa.
- corretto altre sistemazioni sui valori di minimo e massimo quantità.
This commit is contained in:
Surya Paolo
2025-10-03 16:28:46 +02:00
parent fc1e9d4666
commit b07d4c822f
73 changed files with 1767 additions and 3592866 deletions

View File

@@ -58,7 +58,7 @@ export default defineComponent({
required: true,
align: 'left',
label: 'Nome Prodotto',
field: 'nameSurname',
field: 'productInfo.name',
sortable: true
},
{

View File

@@ -1,7 +1,12 @@
<template>
<q-page>
<CTitleBanner title="Ordini"></CTitleBanner>
<q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" />
<q-spinner
v-if="!endload"
color="primary"
size="3em"
:thickness="2"
/>
<div class="q-gutter-md text-center">
<q-btn-toggle
@@ -18,27 +23,39 @@
>
<template v-slot:tutti>
<div class="row items-center no-wrap">
<div class="text-center">{{ t("gas.tutti") }}</div>
<q-icon right name="fas fa-user-friends" />
<div class="text-center">{{ t('gas.tutti') }}</div>
<q-icon
right
name="fas fa-user-friends"
/>
</div>
</template>
<template v-slot:gas>
<div class="row items-center no-wrap">
<div class="text-center">{{ t("gas.ordina_sul_gas") }}</div>
<q-icon right name="fas fa-user-friends" />
<div class="text-center">{{ t('gas.ordina_sul_gas') }}</div>
<q-icon
right
name="fas fa-user-friends"
/>
</div>
</template>
<template v-slot:bottega>
<div class="row items-center no-wrap">
<div class="text-center">{{ t("gas.bottega") }}</div>
<q-icon right name="fas fa-store" />
<div class="text-center">{{ t('gas.bottega') }}</div>
<q-icon
right
name="fas fa-store"
/>
</div>
</template>
</q-btn-toggle>
</div>
<div v-if="endload" class="row">
<div
v-if="endload"
class="row"
>
<div class="row">
<q-toggle
v-if="tools.isManager()"
@@ -104,7 +121,10 @@
inline-label
class="text-blue"
>
<span v-for="(page, index) of shared_consts.OrderPages" :key="index">
<span
v-for="(page, index) of shared_consts.OrderPages"
:key="index"
>
<q-tab
:class="page.color"
:name="page.value"
@@ -121,7 +141,10 @@
inline-label
class="text-blue"
>
<span v-for="(stat, index) of shared_consts.OrderStat" :key="index">
<span
v-for="(stat, index) of shared_consts.OrderStat"
:key="index"
>
<q-tab
v-if="arrnumstatus[stat.value] > 0"
:class="stat.color"
@@ -144,11 +167,17 @@
:virtual-scroll="false"
class="table-container"
>
<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">
<q-card class="my-card-shadow yes_shadow">
<q-list dense>
<q-item v-for="col in getCols(props)" :key="col.name">
<q-item
v-for="col in getCols(props)"
:key="col.name"
>
<q-item-section>
<q-item-label>{{ col.label }}</q-item-label>
</q-item-section>
@@ -158,22 +187,29 @@
caption
>{{ tools.getstrDateTime(col.value) }}</q-item-label
>
<q-item-label
v-else-if="col.name === 'productInfo.name'"
caption
>
<span v-if="props.row.productInfo">
<span>{{ props.row.productInfo.name }}</span>
</span>
</q-item-label>
<q-item-label
v-else-if="col.name === 'nameSurname'"
caption
>
<span v-if="props.row.user">
<span
:class="
props.row.user.name !== 'TOTALI' ? '' : 'totali'
"
>{{
tools.getNomeUtenteByRecUser(props.row.user)
}}</span
:class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
>{{ tools.getNomeUtenteByRecUser(props.row.user) }}</span
>
</span>
</q-item-label>
<q-item-label v-else-if="col.name === 'items'" caption>
<q-item-label
v-else-if="col.name === 'items'"
caption
>
<div
v-for="(item, index) of props.row.items"
:key="index"
@@ -190,13 +226,9 @@
"
>
<span
v-html="
productStore.getStrInfoOrder(t, item.order)
"
v-html="productStore.getStrInfoOrder(t, item.order)"
></span>
{{
productStore.getQuantityByOrder(t, item.order)
}}
{{ productStore.getQuantityByOrder(t, item.order) }}
{{ item.order.product.productInfo.name }}
<span v-if="mostra_cat"
>({{
@@ -207,10 +239,8 @@
>
{{
mostra_codice
? "- [" +
item.order.product.productInfo.code +
"]"
: ""
? '- [' + item.order.product.productInfo.code + ']'
: ''
}}
<br />
</div>
@@ -250,16 +280,12 @@
caption
>
<div
v-if="
tools.isManager() &&
props.row.user.name !== 'TOTALI'
"
v-if="tools.isManager() && props.row.user.name !== 'TOTALI'"
class="q-pa-sm"
>
<q-btn
v-if="
taborders ===
shared_consts.OrderStat.CONFERMATI.value
taborders === shared_consts.OrderStat.CONFERMATI.value
"
size="sm"
dense
@@ -274,12 +300,14 @@
"
></q-btn>
<q-btn-dropdown rounded dense label="Azioni">
<q-btn-dropdown
rounded
dense
label="Azioni"
>
<q-list class="text-primary">
<q-item
v-for="(
cmd, index
) of shared_consts.OrderCmdStr"
v-for="(cmd, index) of shared_consts.OrderCmdStr"
:key="index"
clickable
v-close-popup
@@ -318,7 +346,10 @@
></q-btn>
</div>
</q-item-label>
<q-item-label v-else caption>
<q-item-label
v-else
caption
>
{{ col.value }}
</q-item-label>
</q-item-section>
@@ -327,12 +358,21 @@
</q-card>
</div>
</template>
<template v-else v-slot:body="props">
<template
v-else
v-slot:body="props"
>
<q-tr :props="props">
<q-td key="ind" :props="props">
<q-td
key="ind"
:props="props"
>
<div class="q-pa-sm">{{ props.row.ind + 1 }}</div>
</q-td>
<q-td key="apri" :props="props">
<q-td
key="apri"
:props="props"
>
<div class="q-pa-sm">
<q-btn
v-if="props.row._id"
@@ -348,15 +388,16 @@
></q-btn>
</div>
</q-td>
<q-td key="comandi" :props="props">
<q-td
key="comandi"
:props="props"
>
<div
v-if="tools.isManager() && props.row.user.name !== 'TOTALI'"
class="q-pa-sm"
>
<q-btn
v-if="
taborders === shared_consts.OrderStat.CONFERMATI.value
"
v-if="taborders === shared_consts.OrderStat.CONFERMATI.value"
size="sm"
dense
color="green"
@@ -364,14 +405,15 @@
class="q-mx-sm"
:label="t('ecomm.consegna')"
@click="
clickFunz(
props.row,
shared_consts.OrderStat.DELIVERED.value
)
clickFunz(props.row, shared_consts.OrderStat.DELIVERED.value)
"
></q-btn>
<q-btn-dropdown rounded dense label="Azioni">
<q-btn-dropdown
rounded
dense
label="Azioni"
>
<q-list class="text-primary">
<q-item
v-for="(cmd, index) of shared_consts.OrderCmdStr"
@@ -395,33 +437,43 @@
</q-btn-dropdown>
</div>
</q-td>
<q-td key="numorder" :props="props">
<q-td
key="numorder"
:props="props"
>
<span v-if="props.row.numorder"
>&nbsp; n. {{ props.row.numorder }}</span
>
</q-td>
<q-td key="nameSurname" :props="props">
<q-td
key="nameSurname"
:props="props"
>
<span v-if="props.row.user">
<span
:class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
>{{ tools.getNomeUtenteByRecUser(props.row.user) }}</span
>
<span :class="props.row.user.name !== 'TOTALI' ? '' : 'totali'">{{
tools.getNomeUtenteByRecUser(props.row.user)
}}</span>
</span>
</q-td>
<q-td key="created_at" :props="props">
<q-td
key="created_at"
:props="props"
>
{{ tools.getstrDateTime(props.row.created_at) }}
<span
v-if="
taborders === shared_consts.OrderStat.COMPLETATI.value
"
>
<span v-if="taborders === shared_consts.OrderStat.COMPLETATI.value">
<br />Consegnato il:
<br />
{{ tools.getstrDateTime(props.row.date_consegnato) }}
</span>
</q-td>
<q-td key="items" :props="props">
<div v-for="(item, index) of props.row.items" :key="index">
<q-td
key="items"
:props="props"
>
<div
v-for="(item, index) of props.row.items"
:key="index"
>
<div
v-if="
!!item.order &&
@@ -443,64 +495,97 @@
</span>
{{
mostra_codice
? "- [" + item.order.product.productInfo.code + "]"
: ""
? '- [' + item.order.product.productInfo.code + ']'
: ''
}}
<br />
</div>
</div>
<div v-if="props.row.note" class="note">
<div
v-if="props.row.note"
class="note"
>
Note: {{ props.row.note }}
</div>
<div v-if="props.row.codice_sconto" class="codice_sconto">
<div
v-if="props.row.codice_sconto"
class="codice_sconto"
>
Codice Sconto: {{ props.row.codice_sconto }}
</div>
<div v-if="props.row.note_per_gestore" class="note">
<div
v-if="props.row.note_per_gestore"
class="note"
>
Note per Gestore: {{ props.row.note_per_gestore }}
</div>
<div v-if="props.row.note_per_admin" class="note">
<div
v-if="props.row.note_per_admin"
class="note"
>
Note per Admin: {{ props.row.note_per_admin }}
</div>
</q-td>
<q-td key="totalPrice" :props="props">
<span
:class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
<q-td
key="totalPrice"
:props="props"
>
<span :class="props.row.user.name !== 'TOTALI' ? '' : 'totali'"
>{{
getTotaleOrdineByOrdId(props.row._id, storeGasordine, props.row.user.name === 'TOTALI')
getTotaleOrdineByOrdId(
props.row._id,
storeGasordine,
props.row.user.name === 'TOTALI'
)
}}
€</span
>
</q-td>
<q-td key="status" :props="props">
<q-td
key="status"
:props="props"
>
<span :class="props.row.status">
{{ shared_consts.getStatusStr(props.row.status) }}
</span>
<br />
<div v-if="props.row.confermato" class="ordstat">
<div
v-if="props.row.confermato"
class="ordstat"
>
{{ tools.getstrDateTime(props.row.date_confermato) }}:
<span class="ordstat confermato">
{{ $t("ecomm.confermato") }}
{{ $t('ecomm.confermato') }}
</span>
</div>
<div v-if="props.row.pagato" class="ordstat">
<div
v-if="props.row.pagato"
class="ordstat"
>
{{ tools.getstrDateTime(props.row.date_pagato) }}:
<span class="ordstat">{{ t("ecomm.pagato") }}</span>
<span class="ordstat">{{ t('ecomm.pagato') }}</span>
</div>
<div v-if="props.row.consegnato" class="ordstat">
<div
v-if="props.row.consegnato"
class="ordstat"
>
{{ tools.getstrDateTime(props.row.date_consegnato) }}:
<span class="ordstat">{{ t("ecomm.consegnato") }}</span>
<span class="ordstat">{{ t('ecomm.consegnato') }}</span>
</div>
<div v-if="props.row.preparato" class="ordstat">
<div
v-if="props.row.preparato"
class="ordstat"
>
{{ tools.getstrDateTime(props.row.date_preparato) }}:
<span class="ordstat">{{ t("ecomm.preparato") }}</span>
<span class="ordstat">{{ t('ecomm.preparato') }}</span>
</div>
<div v-if="props.row.spedito">
{{ tools.getstrDateTime(props.row.date_spedito) }}:
<span class="ordstat">{{ t("ecomm.spedito") }}</span>
<span class="ordstat">{{ t('ecomm.spedito') }}</span>
</div>
<div v-if="props.row.ricevuto">
{{ tools.getstrDateTime(props.row.date_ricevuto) }}:
<span class="ordstat">{{ t("ecomm.ricevuto") }}</span>
<span class="ordstat">{{ t('ecomm.ricevuto') }}</span>
</div>
</q-td>
</q-tr>
@@ -510,10 +595,7 @@
<!-- Ordini IN CORSO -->
<div
v-if="
tools.isManager() &&
taborders === shared_consts.OrderStat.IN_CORSO.value
"
v-if="tools.isManager() && taborders === shared_consts.OrderStat.IN_CORSO.value"
class="q-ma-sm q-pa-sm row justify-center"
>
<q-btn
@@ -524,7 +606,10 @@
></q-btn>
</div>
<div v-if="tools.isManager()" class="q-ma-sm q-pa-sm row">
<div
v-if="tools.isManager()"
class="q-ma-sm q-pa-sm row"
>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
rounded
@@ -587,9 +672,7 @@
<br>
</div>
-->
</div>
--></div>
<div v-else-if="tabpages === shared_consts.OrderPages.LISTA_TOTALI.value">
<div class="q-pa-sm">
<q-btn
@@ -611,35 +694,55 @@
>
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="index" :props="props">
<q-td
key="index"
:props="props"
>
<div class="q-pa-sm">{{ props.row.index }}</div>
</q-td>
<q-td key="code" :props="props">
<q-td
key="code"
:props="props"
>
<div class="q-pa-sm">{{ props.row.code }}</div>
</q-td>
<q-td key="codice_interno" :props="props">
<q-td
key="codice_interno"
:props="props"
>
<div class="q-pa-sm">{{ props.row.codice_interno }}</div>
</q-td>
<q-td key="productName" :props="props">
<q-td
key="productName"
:props="props"
>
<div class="q-pa-sm">{{ props.row.productName }}</div>
</q-td>
<q-td key="strSubCatProds" :props="props">
<q-td
key="strSubCatProds"
:props="props"
>
<div class="q-pa-sm">
{{ props.row.strSubCatProds }}
</div>
</q-td>
<q-td key="qty" :props="props">
<q-td
key="qty"
:props="props"
>
<div class="q-pa-sm">{{ props.row.qty }}</div>
</q-td>
<q-td key="singlePrice" :props="props">
<div class="q-pa-sm">
{{ props.row.singlePrice.toFixed(2) }} €
</div>
<q-td
key="singlePrice"
:props="props"
>
<div class="q-pa-sm">{{ props.row.singlePrice.toFixed(2) }} €</div>
</q-td>
<q-td key="subtotalPrice" :props="props">
<div class="q-pa-sm">
{{ props.row.subtotalPrice.toFixed(2) }} €
</div>
<q-td
key="subtotalPrice"
:props="props"
>
<div class="q-pa-sm">{{ props.row.subtotalPrice.toFixed(2) }} €</div>
</q-td>
</q-tr>
</template>
@@ -649,15 +752,20 @@
<!-- Emails -->
</div>
<CMyDialog v-model="showOrdersCart" title="Ordine">
<COrdersCart :iscash="false" :idOrdersCart="idOrdersCartToShow" />
<CMyDialog
v-model="showOrdersCart"
title="Ordine"
>
<COrdersCart
:iscash="false"
:idOrdersCart="idOrdersCartToShow"
/>
</CMyDialog>
</q-page>
</template>
<script lang="ts" src="./orderInfo.ts">
</script>
<script lang="ts" src="./orderInfo.ts"></script>
<style lang="scss" scoped>
@import "./orderInfo";
@import './orderInfo';
</style>