forked from verdnatura/salix-front
fet: updates
This commit is contained in:
parent
53b522c488
commit
d0eb1d97ac
|
@ -372,9 +372,7 @@ function handleOnDataSaved(_) {
|
|||
ref="CrudModelRef"
|
||||
@on-fetch="(...args) => emit('onFetch', ...args)"
|
||||
:search-url="searchUrl"
|
||||
:disable-infinite-scroll="
|
||||
$attrs['disableInfiniteScroll'] ? isTableMode : !disableInfiniteScroll
|
||||
"
|
||||
:disable-infinite-scroll="$attrs['disableInfiniteScroll']"
|
||||
@save-changes="reload"
|
||||
:has-sub-toolbar="$props.hasSubToolbar ?? isEditable"
|
||||
:auto-load="hasParams || $attrs['auto-load']"
|
||||
|
@ -394,7 +392,7 @@ function handleOnDataSaved(_) {
|
|||
card-container-class="grid-three"
|
||||
flat
|
||||
:style="isTableMode && `max-height: ${tableHeight}`"
|
||||
:virtual-scroll="!isTableMode"
|
||||
virtual-scroll
|
||||
@virtual-scroll="
|
||||
(event) =>
|
||||
event.index > rows.length - 2 &&
|
||||
|
|
|
@ -84,8 +84,12 @@ const styleAttrs = computed(() => {
|
|||
outlined: true,
|
||||
rounded: true,
|
||||
}
|
||||
: {};
|
||||
: { eventColor: handleEventColor };
|
||||
});
|
||||
const handleEventColor = (date) => {
|
||||
console.error(date);
|
||||
return date === Date.now() ? null : 'orange';
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
@ -139,6 +143,10 @@ const styleAttrs = computed(() => {
|
|||
:landscape="true"
|
||||
:today-btn="true"
|
||||
:options="$attrs.options"
|
||||
color="orange"
|
||||
text-color="black"
|
||||
dark
|
||||
bordered
|
||||
@update:model-value="
|
||||
(date) => {
|
||||
formattedDate = date;
|
||||
|
@ -158,6 +166,12 @@ const styleAttrs = computed(() => {
|
|||
.vn-input-date.q-field--outlined.q-field--readonly .q-field__control:before {
|
||||
border-style: solid;
|
||||
}
|
||||
.calendar-event {
|
||||
background-color: red;
|
||||
&.--today {
|
||||
border: 2px solid $info;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<i18n>
|
||||
es:
|
||||
|
|
|
@ -63,22 +63,18 @@ const columns = computed(() => [
|
|||
label: t('proposal.available'),
|
||||
name: 'available',
|
||||
field: 'available',
|
||||
columnClass: 'shrink',
|
||||
columnFilter: {
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
columnClass: 'shrink',
|
||||
},
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
class: 'shrink',
|
||||
},
|
||||
{
|
||||
...defaultColumnAttrs,
|
||||
label: t('proposal.difference'),
|
||||
name: 'difference',
|
||||
columnFilter: {
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
columnClass: 'shrink',
|
||||
},
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
class: 'shrink',
|
||||
style: 'background-color:red;max-width: 75px',
|
||||
},
|
||||
{
|
||||
...defaultColumnAttrs,
|
||||
|
@ -92,6 +88,9 @@ const columns = computed(() => [
|
|||
label: t('proposal.counter'),
|
||||
name: 'counter',
|
||||
field: 'counter',
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
class: 'shrink',
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -109,22 +108,18 @@ const columns = computed(() => [
|
|||
label: t('proposal.price2'),
|
||||
name: 'price2',
|
||||
field: 'price2',
|
||||
columnFilter: {
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
class: 'expand',
|
||||
},
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
class: 'shrink',
|
||||
},
|
||||
{
|
||||
...defaultColumnAttrs,
|
||||
label: t('proposal.minQuantity'),
|
||||
name: 'minQuantity',
|
||||
field: 'minQuantity',
|
||||
columnFilter: {
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
class: 'expand',
|
||||
},
|
||||
component: 'input',
|
||||
type: 'number',
|
||||
class: 'shrink',
|
||||
},
|
||||
{
|
||||
...defaultColumnAttrs,
|
||||
|
@ -141,11 +136,11 @@ async function confirm() {
|
|||
newItemFK: proposalSelected.value[0].id,
|
||||
quantity: quantity.value,
|
||||
};
|
||||
const { data } = await axios.post('Sales/replaceItem', params);
|
||||
emit('refreshData', {
|
||||
// const { data } = await axios.post('Sales/replaceItem', params);
|
||||
emit('itemReplaced', {
|
||||
type: 'refresh',
|
||||
itemProposal: proposalSelected.value[0],
|
||||
...data,
|
||||
...params,
|
||||
});
|
||||
proposalSelected.value = [];
|
||||
popupProxyRef.value.hide();
|
||||
|
@ -155,7 +150,7 @@ async function confirm() {
|
|||
}
|
||||
// const { dialogRef, onDialogOK, onDialogCancel } = useDialogPluginComponent();
|
||||
const popupProxyRef = ref(null);
|
||||
const emit = defineEmits(['onDialogClosed', 'refreshData']);
|
||||
const emit = defineEmits(['onDialogClosed', 'itemReplaced']);
|
||||
|
||||
// function onDialogClose() {
|
||||
// console.log('Dialog has been closed');
|
||||
|
@ -270,7 +265,9 @@ const isSelectionAvailable = (data) => {
|
|||
}}</span>
|
||||
</template>
|
||||
<template #column-difference="{ row }">
|
||||
<VnStockValueDisplay :value="row.id % 2 === 0 ? 10 : -10" />
|
||||
<QTd style="width: 75px; background-color: red"
|
||||
><VnStockValueDisplay :value="row.id % 2 === 0 ? 10 : -10"
|
||||
/></QTd>
|
||||
</template>
|
||||
</VnTable>
|
||||
</div>
|
||||
|
|
|
@ -3,6 +3,7 @@ import ItemProposal from './ItemProposal.vue';
|
|||
import VnImg from 'src/components/ui/VnImg.vue';
|
||||
import FetchedTags from 'components/ui/FetchedTags.vue';
|
||||
import ItemDescriptorProxy from 'src/pages/Item/Card/ItemDescriptorProxy.vue';
|
||||
const emit = defineEmits(['onDialogClosed', 'itemReplaced']);
|
||||
|
||||
const $props = defineProps({
|
||||
item: {
|
||||
|
@ -46,7 +47,10 @@ const $props = defineProps({
|
|||
<!-- {{ tickets[0].saleFk }} -->
|
||||
</QCardSection>
|
||||
<QCardSection class="q-pt-none">
|
||||
<ItemProposal v-bind="$props"></ItemProposal
|
||||
<ItemProposal
|
||||
v-bind="$props"
|
||||
@item-replaced="(data) => emit('itemReplaced', data)"
|
||||
></ItemProposal
|
||||
></QCardSection>
|
||||
</QCard>
|
||||
</QPopupProxy>
|
||||
|
|
|
@ -5,6 +5,7 @@ import FetchData from 'components/FetchData.vue';
|
|||
import { ref } from 'vue';
|
||||
import CrudModel from 'components/CrudModel.vue';
|
||||
import RoadmapAddStopForm from 'pages/Route/Roadmap/RoadmapAddStopForm.vue';
|
||||
import { QBtn } from 'quasar';
|
||||
|
||||
const { t } = useI18n();
|
||||
const route = useRoute();
|
||||
|
@ -65,9 +66,10 @@ const updateDefaultStop = (data) => {
|
|||
</div>
|
||||
</QCardSection>
|
||||
<QCardSection>
|
||||
<QIcon
|
||||
name="add"
|
||||
size="sm"
|
||||
<QBtn
|
||||
flat
|
||||
icon="add"
|
||||
shortcut="+"
|
||||
class="cursor-pointer"
|
||||
color="primary"
|
||||
@click="roadmapStopsCrudRef.insert()"
|
||||
|
@ -75,7 +77,7 @@ const updateDefaultStop = (data) => {
|
|||
<QTooltip>
|
||||
{{ t('Add stop') }}
|
||||
</QTooltip>
|
||||
</QIcon>
|
||||
</QBtn>
|
||||
</QCardSection>
|
||||
</QCard>
|
||||
</template>
|
||||
|
|
|
@ -19,8 +19,8 @@ const sageTransactionTypesOptions = ref([]);
|
|||
const supplierActivitiesOptions = ref([]);
|
||||
|
||||
function handleLocation(data, location) {
|
||||
const { town, label, provinceFk, countryFk } = location ?? {};
|
||||
data.postCode = label;
|
||||
const { town, code, provinceFk, countryFk } = location ?? {};
|
||||
data.postCode = code;
|
||||
data.city = town;
|
||||
data.provinceFk = provinceFk;
|
||||
data.countryFk = countryFk;
|
||||
|
|
|
@ -12,7 +12,7 @@ import VnPaginate from 'src/components/ui/VnPaginate.vue';
|
|||
import FetchData from 'src/components/FetchData.vue';
|
||||
import { useStateStore } from 'stores/useStateStore';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useArrayData } from 'src/composables/useArrayData';
|
||||
// import { useArrayData } from 'src/composables/useArrayData';
|
||||
import VnImg from 'src/components/ui/VnImg.vue';
|
||||
import TicketLackTable from './TicketLackTable.vue';
|
||||
import ItemProposalProxy from 'src/pages/Item/components/ItemProposalProxy.vue';
|
||||
|
@ -23,6 +23,7 @@ const URL_KEY = 'Tickets/ItemLack';
|
|||
const editableStates = ref([]);
|
||||
const stateStore = useStateStore();
|
||||
const proposalDialogRef = ref();
|
||||
const tableRef = ref();
|
||||
const changeStateDialogRef = ref();
|
||||
const changeQuantityDialogRef = ref();
|
||||
const showProposalDialog = ref(false);
|
||||
|
@ -54,48 +55,49 @@ const reload = async () => {
|
|||
defineExpose({ reload });
|
||||
|
||||
// Función de comparación
|
||||
function freeFirst({ alertLevel: a }, { alertLevel: b }) {
|
||||
const DEFAULT = 0;
|
||||
// Si el estado de 'a' es 'free' y el de 'b' no lo es, 'a' viene primero
|
||||
if (a === DEFAULT && b !== DEFAULT) {
|
||||
return -1;
|
||||
}
|
||||
// Si el estado de 'b' es 'free' y el de 'a' no lo es, 'b' viene primero
|
||||
if (b === DEFAULT && a !== DEFAULT) {
|
||||
return 1;
|
||||
}
|
||||
// En cualquier otro caso, no se cambia el orden
|
||||
return 0;
|
||||
}
|
||||
const { store } = useArrayData(URL_KEY);
|
||||
const handleRows = (rows) => {
|
||||
// rows.forEach((row) => (row.concept = item.value.name));
|
||||
rows = rows.sort(freeFirst);
|
||||
if (showFree.value) return rows.filter(({ alertLevel }) => alertLevel === 0);
|
||||
return rows;
|
||||
};
|
||||
// function freeFirst({ alertLevel: a }, { alertLevel: b }) {
|
||||
// const DEFAULT = 0;
|
||||
// // Si el estado de 'a' es 'free' y el de 'b' no lo es, 'a' viene primero
|
||||
// if (a === DEFAULT && b !== DEFAULT) {
|
||||
// return -1;
|
||||
// }
|
||||
// // Si el estado de 'b' es 'free' y el de 'a' no lo es, 'b' viene primero
|
||||
// if (b === DEFAULT && a !== DEFAULT) {
|
||||
// return 1;
|
||||
// }
|
||||
// // En cualquier otro caso, no se cambia el orden
|
||||
// return 0;
|
||||
// }
|
||||
// const { store } = useArrayData(URL_KEY);
|
||||
// const handleRows = (rows) => {
|
||||
// // rows.forEach((row) => (row.concept = item.value.name));
|
||||
// rows = rows.sort(freeFirst);
|
||||
// if (showFree.value) return rows.filter(({ alertLevel }) => alertLevel === 0);
|
||||
// return rows;
|
||||
// };
|
||||
|
||||
const itemProposalEvt = ({ itemProposal }) => {
|
||||
itemProposalSelected.value = itemProposal;
|
||||
replaceItem();
|
||||
tableRef.value.reload();
|
||||
// replaceItem();
|
||||
};
|
||||
const itemProposalSelected = ref(null);
|
||||
const replaceItem = () => {
|
||||
const rows = handleRows(originalRowDataCopy.value).sort((row) => row.quantity);
|
||||
for (const ticket of rows) {
|
||||
if (ticket.quantity > itemProposalSelected.value.available) continue;
|
||||
originalRowDataCopy.value.splice(originalRowDataCopy.value.indexOf(ticket));
|
||||
ticket.itemFk = itemProposalSelected.value.id;
|
||||
selectedRows.value.push({ ticketFk: ticket.ticketFk });
|
||||
itemProposalSelected.value.available -= ticket.quantity;
|
||||
itemLack.value.lack += ticket.quantity;
|
||||
const index = store.data.findIndex((t) => t.ticketFk === ticket.ticketFk);
|
||||
store.data.splice(index, 1);
|
||||
console.log(ticket);
|
||||
useArrayData('ItemsGetSimilar').store.data[1].available =
|
||||
itemProposalSelected.value.available;
|
||||
}
|
||||
};
|
||||
// const replaceItem = () => {
|
||||
// const rows = handleRows(originalRowDataCopy.value).sort((row) => row.quantity);
|
||||
// for (const ticket of rows) {
|
||||
// if (ticket.quantity > itemProposalSelected.value.available) continue;
|
||||
// originalRowDataCopy.value.splice(originalRowDataCopy.value.indexOf(ticket));
|
||||
// ticket.itemFk = itemProposalSelected.value.id;
|
||||
// selectedRows.value.push({ ticketFk: ticket.ticketFk });
|
||||
// itemProposalSelected.value.available -= ticket.quantity;
|
||||
// itemLack.value.lack += ticket.quantity;
|
||||
// const index = store.data.findIndex((t) => t.ticketFk === ticket.ticketFk);
|
||||
// store.data.splice(index, 1);
|
||||
// console.log(ticket);
|
||||
// useArrayData('ItemsGetSimilar').store.data[1].available =
|
||||
// itemProposalSelected.value.available;
|
||||
// }
|
||||
// };
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
@ -178,7 +180,7 @@ const replaceItem = () => {
|
|||
:item-lack="itemLack"
|
||||
:replace-action="true"
|
||||
:tickets="selectedRows"
|
||||
@refresh-data="itemProposalEvt"
|
||||
@item-replaced="itemProposalEvt"
|
||||
></ItemProposalProxy>
|
||||
<QTooltip bottom anchor="bottom right">
|
||||
{{ t('itemProposal') }}
|
||||
|
@ -216,6 +218,7 @@ const replaceItem = () => {
|
|||
:label="itemLack.lack"
|
||||
/>
|
||||
<QBadge
|
||||
color="secondary"
|
||||
class="q-ml-xs q-mt-xs"
|
||||
v-if="itemLack"
|
||||
:label="toCurrency(itemLack.lack)"
|
||||
|
@ -233,6 +236,7 @@ const replaceItem = () => {
|
|||
</div>
|
||||
|
||||
<TicketLackTable
|
||||
ref="tableRef"
|
||||
:filter="{ alertLevel: showFree }"
|
||||
@update:selection="({ value }, _) => (selectedRows = value)"
|
||||
></TicketLackTable>
|
||||
|
|
|
@ -34,6 +34,7 @@ const filterLack = ref({
|
|||
},
|
||||
],
|
||||
where: { alertLevel: 'FREE' },
|
||||
order: 'ts.alertLevelCODE ASC',
|
||||
});
|
||||
const { t } = useI18n();
|
||||
const URL_KEY = 'Tickets/ItemLack';
|
||||
|
@ -225,6 +226,7 @@ watch(selectedRows, () => emit('update:selection', selectedRows));
|
|||
:create-as-dialog="false"
|
||||
:use-model="true"
|
||||
:filter="filterLack"
|
||||
:order="['ts.alertLevelCode ASC']"
|
||||
:table="{
|
||||
'row-key': 'id',
|
||||
selection: 'multiple',
|
||||
|
|
Loading…
Reference in New Issue