perf: CustomerBalance
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
parent
88fd40eae6
commit
66cb069109
|
@ -1,15 +1,18 @@
|
||||||
import { useSession } from './useSession';
|
import { useSession } from './useSession';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import { useQuasar } from 'quasar';
|
import { useQuasar } from 'quasar';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
export function usePrintService() {
|
export function usePrintService() {
|
||||||
const quasar = useQuasar();
|
const quasar = useQuasar();
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
const { getTokenMultimedia } = useSession();
|
const { getTokenMultimedia } = useSession();
|
||||||
|
|
||||||
function sendEmail(path, params) {
|
function sendEmail(path, params) {
|
||||||
return axios.post(path, params).then(() =>
|
return axios.post(path, params).then(() =>
|
||||||
quasar.notify({
|
quasar.notify({
|
||||||
message: 'Notification sent',
|
message: t('globals.notificationSent'),
|
||||||
type: 'positive',
|
type: 'positive',
|
||||||
icon: 'check',
|
icon: 'check',
|
||||||
})
|
})
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { useVnConfirm } from 'composables/useVnConfirm';
|
||||||
import VnTable from 'components/VnTable/VnTable.vue';
|
import VnTable from 'components/VnTable/VnTable.vue';
|
||||||
import VnInput from 'components/common/VnInput.vue';
|
import VnInput from 'components/common/VnInput.vue';
|
||||||
import VnSubToolbar from 'components/ui/VnSubToolbar.vue';
|
import VnSubToolbar from 'components/ui/VnSubToolbar.vue';
|
||||||
import VnFilter from 'components/VnTable/VnFilter.vue';
|
import VnSelect from 'src/components/common/VnSelect.vue';
|
||||||
|
|
||||||
import CustomerNewPayment from 'src/pages/Customer/components/CustomerNewPayment.vue';
|
import CustomerNewPayment from 'src/pages/Customer/components/CustomerNewPayment.vue';
|
||||||
import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
|
import InvoiceOutDescriptorProxy from 'src/pages/InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
|
||||||
|
@ -33,9 +33,9 @@ const stateStore = useStateStore();
|
||||||
const user = state.getUser();
|
const user = state.getUser();
|
||||||
|
|
||||||
const clientRisk = ref([]);
|
const clientRisk = ref([]);
|
||||||
|
const companies = ref([]);
|
||||||
const tableRef = ref();
|
const tableRef = ref();
|
||||||
const companyId = ref(user.value.companyFk);
|
const companyId = ref(user.value.companyFk);
|
||||||
const companyLastId = ref(user.value.companyFk);
|
|
||||||
const balances = ref([]);
|
const balances = ref([]);
|
||||||
const vnFilterRef = ref({});
|
const vnFilterRef = ref({});
|
||||||
const filter = computed(() => {
|
const filter = computed(() => {
|
||||||
|
@ -45,33 +45,6 @@ const filter = computed(() => {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const companyFilterColumn = {
|
|
||||||
align: 'left',
|
|
||||||
name: 'companyId',
|
|
||||||
label: t('Company'),
|
|
||||||
component: 'select',
|
|
||||||
attrs: {
|
|
||||||
url: 'Companies',
|
|
||||||
optionLabel: 'code',
|
|
||||||
sortBy: 'code',
|
|
||||||
limit: 0,
|
|
||||||
},
|
|
||||||
columnFilter: {
|
|
||||||
event: {
|
|
||||||
remove: () => (companyId.value = null),
|
|
||||||
'update:modelValue': (newCompanyFk) => {
|
|
||||||
if (!newCompanyFk) return;
|
|
||||||
vnFilterRef.value.addFilter(newCompanyFk);
|
|
||||||
companyLastId.value = newCompanyFk;
|
|
||||||
},
|
|
||||||
blur: () =>
|
|
||||||
!companyId.value &&
|
|
||||||
(companyId.value = companyLastId.value ?? user.value.companyFk),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
visible: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
const columns = computed(() => [
|
const columns = computed(() => [
|
||||||
{
|
{
|
||||||
align: 'right',
|
align: 'right',
|
||||||
|
@ -166,6 +139,11 @@ onBeforeMount(() => {
|
||||||
});
|
});
|
||||||
|
|
||||||
async function getCurrentBalance(data) {
|
async function getCurrentBalance(data) {
|
||||||
|
currentBalance.value[companyId.value] = {
|
||||||
|
amount: 0,
|
||||||
|
code: companies.value.find((c) => c.id === companyId.value)?.code,
|
||||||
|
};
|
||||||
|
|
||||||
for (const balance of data) {
|
for (const balance of data) {
|
||||||
currentBalance.value[balance.companyFk] = {
|
currentBalance.value[balance.companyFk] = {
|
||||||
code: balance.company.code,
|
code: balance.company.code,
|
||||||
|
@ -192,14 +170,21 @@ const showBalancePdf = ({ id }) => {
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<FetchData
|
<FetchData
|
||||||
|
url="Companies"
|
||||||
|
auto-load
|
||||||
|
@on-fetch="(data) => (companies = data)"
|
||||||
|
></FetchData>
|
||||||
|
<FetchData
|
||||||
|
v-if="companies.length > 0"
|
||||||
url="clientRisks"
|
url="clientRisks"
|
||||||
:filter="{
|
:filter="{
|
||||||
include: { relation: 'company', scope: { fields: ['code'] } },
|
include: { relation: 'company', scope: { fields: ['code'] } },
|
||||||
where: { clientFk: route.params.id, companyFk: companyId },
|
where: { clientFk: route.params.id },
|
||||||
}"
|
}"
|
||||||
auto-load
|
auto-load
|
||||||
@on-fetch="getCurrentBalance"
|
@on-fetch="getCurrentBalance"
|
||||||
></FetchData>
|
></FetchData>
|
||||||
|
|
||||||
<VnSubToolbar class="q-mb-md">
|
<VnSubToolbar class="q-mb-md">
|
||||||
<template #st-data>
|
<template #st-data>
|
||||||
<div class="column justify-center q-px-md q-py-sm">
|
<div class="column justify-center q-px-md q-py-sm">
|
||||||
|
@ -212,13 +197,15 @@ const showBalancePdf = ({ id }) => {
|
||||||
</template>
|
</template>
|
||||||
<template #st-actions>
|
<template #st-actions>
|
||||||
<div>
|
<div>
|
||||||
<VnFilter
|
<VnSelect
|
||||||
|
:label="t('Company')"
|
||||||
ref="vnFilterRef"
|
ref="vnFilterRef"
|
||||||
v-model="companyId"
|
v-model="companyId"
|
||||||
data-key="CustomerBalance"
|
data-key="CustomerBalance"
|
||||||
:column="companyFilterColumn"
|
:options="companies"
|
||||||
search-url="balance"
|
option-label="code"
|
||||||
/>
|
option-value="id"
|
||||||
|
></VnSelect>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</VnSubToolbar>
|
</VnSubToolbar>
|
||||||
|
|
Loading…
Reference in New Issue