Merge pull request 'Se crea el formulario para agregar nuevas observaciones en la tablade morosos' (#62) from features/ms_116_add_new_observations into dev
Reviewed-on: hyervoni/salix-front-mindshore#62
This commit is contained in:
commit
dab2fa9d90
|
@ -2,7 +2,7 @@
|
||||||
import { ref, computed, onBeforeMount } from 'vue';
|
import { ref, computed, onBeforeMount } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
import { QBtn, QCheckbox } from 'quasar';
|
import { QBtn, QCheckbox, useQuasar } from 'quasar';
|
||||||
|
|
||||||
import { toCurrency, toDate } from 'filters/index';
|
import { toCurrency, toDate } from 'filters/index';
|
||||||
import { useArrayData } from 'composables/useArrayData';
|
import { useArrayData } from 'composables/useArrayData';
|
||||||
|
@ -12,34 +12,19 @@ import CustomerNotificationsFilter from './CustomerDefaulterFilter.vue';
|
||||||
import CustomerBalanceDueTotal from './CustomerBalanceDueTotal.vue';
|
import CustomerBalanceDueTotal from './CustomerBalanceDueTotal.vue';
|
||||||
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
|
import CustomerDescriptorProxy from 'src/pages/Customer/Card/CustomerDescriptorProxy.vue';
|
||||||
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
|
import WorkerDescriptorProxy from 'src/pages/Worker/Card/WorkerDescriptorProxy.vue';
|
||||||
|
import CustomerDefaulterAddObservation from './CustomerDefaulterAddObservation.vue';
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const stateStore = useStateStore();
|
const stateStore = useStateStore();
|
||||||
|
const quasar = useQuasar();
|
||||||
|
|
||||||
const arrayData = ref(null);
|
const arrayData = ref(null);
|
||||||
const balanceDueTotal = ref(0);
|
const balanceDueTotal = ref(0);
|
||||||
|
const customerId = ref(0);
|
||||||
onBeforeMount(async () => {
|
|
||||||
arrayData.value = useArrayData('CustomerDefaulter', {
|
|
||||||
url: 'Defaulters/filter',
|
|
||||||
limit: 0,
|
|
||||||
});
|
|
||||||
await arrayData.value.fetch({ append: false });
|
|
||||||
balanceDueTotal.value = arrayData.value.store.data.reduce(
|
|
||||||
(accumulator, currentValue) => {
|
|
||||||
return accumulator + (currentValue['amount'] || 0);
|
|
||||||
},
|
|
||||||
0
|
|
||||||
);
|
|
||||||
console.log(balanceDueTotal.value);
|
|
||||||
stateStore.rightDrawer = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
const rows = computed(() => arrayData.value.store.data);
|
|
||||||
|
|
||||||
const selected = ref([]);
|
const selected = ref([]);
|
||||||
const workerId = ref(0);
|
const workerId = ref(0);
|
||||||
const customerId = ref(0);
|
|
||||||
|
const rows = computed(() => arrayData.value.store.data);
|
||||||
|
|
||||||
const tableColumnComponents = {
|
const tableColumnComponents = {
|
||||||
client: {
|
client: {
|
||||||
|
@ -49,11 +34,10 @@ const tableColumnComponents = {
|
||||||
},
|
},
|
||||||
isWorker: {
|
isWorker: {
|
||||||
component: QCheckbox,
|
component: QCheckbox,
|
||||||
props: ({ value }) => ({
|
props: ({ row }) => ({
|
||||||
disable: true,
|
disable: true,
|
||||||
'model-value': Boolean(value),
|
'model-value': Boolean(row.selected),
|
||||||
}),
|
}),
|
||||||
event: () => {},
|
|
||||||
},
|
},
|
||||||
salesperson: {
|
salesperson: {
|
||||||
component: QBtn,
|
component: QBtn,
|
||||||
|
@ -171,6 +155,25 @@ const columns = computed(() => [
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
onBeforeMount(() => {
|
||||||
|
getArrayData();
|
||||||
|
});
|
||||||
|
|
||||||
|
const getArrayData = async () => {
|
||||||
|
arrayData.value = useArrayData('CustomerDefaulter', {
|
||||||
|
url: 'Defaulters/filter',
|
||||||
|
limit: 0,
|
||||||
|
});
|
||||||
|
await arrayData.value.fetch({ append: false });
|
||||||
|
balanceDueTotal.value = arrayData.value.store.data.reduce(
|
||||||
|
(accumulator, currentValue) => {
|
||||||
|
return accumulator + (currentValue['amount'] || 0);
|
||||||
|
},
|
||||||
|
0
|
||||||
|
);
|
||||||
|
stateStore.rightDrawer = true;
|
||||||
|
};
|
||||||
|
|
||||||
const selectCustomerId = (id) => {
|
const selectCustomerId = (id) => {
|
||||||
workerId.value = 0;
|
workerId.value = 0;
|
||||||
customerId.value = id;
|
customerId.value = id;
|
||||||
|
@ -180,6 +183,20 @@ const selectWorkerId = (id) => {
|
||||||
customerId.value = 0;
|
customerId.value = 0;
|
||||||
workerId.value = id;
|
workerId.value = id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const viewAddObservation = (rowsSelected) => {
|
||||||
|
quasar.dialog({
|
||||||
|
component: CustomerDefaulterAddObservation,
|
||||||
|
componentProps: {
|
||||||
|
clients: rowsSelected,
|
||||||
|
promise: refreshData,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const refreshData = () => {
|
||||||
|
getArrayData();
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -190,11 +207,17 @@ const selectWorkerId = (id) => {
|
||||||
</QDrawer>
|
</QDrawer>
|
||||||
|
|
||||||
<QToolbar class="bg-vn-dark">
|
<QToolbar class="bg-vn-dark">
|
||||||
<div id="st-data">
|
<div id="st-data" class="row">
|
||||||
<CustomerBalanceDueTotal :amount="balanceDueTotal" />
|
<CustomerBalanceDueTotal :amount="balanceDueTotal" />
|
||||||
|
<div class="flex items-center q-ml-lg">
|
||||||
|
<QBtn
|
||||||
|
color="primary"
|
||||||
|
icon="vn:notes"
|
||||||
|
:disabled="!selected.length"
|
||||||
|
@click.stop="viewAddObservation(selected)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<QSpace />
|
|
||||||
<div id="st-actions"></div>
|
|
||||||
</QToolbar>
|
</QToolbar>
|
||||||
|
|
||||||
<QPage class="column items-center q-pa-md">
|
<QPage class="column items-center q-pa-md">
|
||||||
|
@ -204,7 +227,7 @@ const selectWorkerId = (id) => {
|
||||||
:rows="rows"
|
:rows="rows"
|
||||||
class="full-width q-mt-md"
|
class="full-width q-mt-md"
|
||||||
hide-bottom
|
hide-bottom
|
||||||
row-key="id"
|
row-key="clientFk"
|
||||||
selection="multiple"
|
selection="multiple"
|
||||||
v-model:selected="selected"
|
v-model:selected="selected"
|
||||||
>
|
>
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
import axios from 'axios';
|
||||||
|
import { useQuasar } from 'quasar';
|
||||||
|
|
||||||
|
import VnRow from 'components/ui/VnRow.vue';
|
||||||
|
|
||||||
|
const $props = defineProps({
|
||||||
|
clients: {
|
||||||
|
type: Array,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
promise: {
|
||||||
|
type: Function,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
const quasar = useQuasar();
|
||||||
|
|
||||||
|
const newObservation = ref(null);
|
||||||
|
|
||||||
|
const onSubmit = async () => {
|
||||||
|
try {
|
||||||
|
const data = $props.clients.map((item) => {
|
||||||
|
return { clientFk: item.clientFk, text: newObservation.value };
|
||||||
|
});
|
||||||
|
await axios.post('ClientObservations', data);
|
||||||
|
|
||||||
|
const payload = {
|
||||||
|
defaulters: $props.clients,
|
||||||
|
observation: newObservation.value,
|
||||||
|
};
|
||||||
|
await axios.post('Defaulters/observationEmail', payload);
|
||||||
|
|
||||||
|
await $props.promise();
|
||||||
|
|
||||||
|
quasar.notify({
|
||||||
|
message: t('globals.dataSaved'),
|
||||||
|
type: 'positive',
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
quasar.notify({
|
||||||
|
message: t(`${error.message}`),
|
||||||
|
type: 'negative',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<QDialog ref="dialogRef">
|
||||||
|
<QCard class="q-pa-md q-mb-md">
|
||||||
|
<QCardSection>
|
||||||
|
<QForm @submit="onSubmit()" class="q-pa-sm">
|
||||||
|
<div>
|
||||||
|
{{
|
||||||
|
t('Add observation to all selected clients', {
|
||||||
|
numberClients: t($props.clients.length),
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
<VnRow class="row q-gutter-md q-mb-md">
|
||||||
|
<div class="col">
|
||||||
|
<QInput
|
||||||
|
:label="t('Message')"
|
||||||
|
type="textarea"
|
||||||
|
v-model="newObservation"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</VnRow>
|
||||||
|
<div class="q-mt-lg row justify-end">
|
||||||
|
<QBtn
|
||||||
|
:label="t('globals.cancel')"
|
||||||
|
color="primary"
|
||||||
|
flat
|
||||||
|
class="q-mr-md"
|
||||||
|
v-close-popup
|
||||||
|
/>
|
||||||
|
<QBtn
|
||||||
|
:label="t('globals.save')"
|
||||||
|
type="submit"
|
||||||
|
color="primary"
|
||||||
|
v-close-popup
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</QForm>
|
||||||
|
</QCardSection>
|
||||||
|
</QCard>
|
||||||
|
</QDialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<i18n>
|
||||||
|
es:
|
||||||
|
Add observation to all selected clients: Añadir observación a { numberClients } cliente(s) seleccionado(s)
|
||||||
|
Message: Mensaje
|
||||||
|
</i18n>
|
Loading…
Reference in New Issue