Solucion a comentarios
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
carlosfonseca 2024-02-22 10:44:29 -05:00
parent f69b25716d
commit 9ae0874ccf
8 changed files with 335 additions and 296 deletions

View File

@ -17,61 +17,65 @@ onMounted(() => {
}); });
</script> </script>
<template> <template>
<CrudModel <div class="full-width flex justify-center">
data-key="CustomerContacts" <QPage class="card-width q-pa-lg">
url="ClientContacts" <CrudModel
model="CustomerContacts" :data-required="{ clientFk: route.params.id }"
:filter="{ :default-remove="false"
fields: ['id', 'name', 'phone', 'clientFk'], :filter="{
where: { clientFk: route.params.id }, fields: ['id', 'name', 'phone', 'clientFk'],
}" where: { clientFk: route.params.id },
ref="customerContactsRef" }"
:default-remove="false" data-key="CustomerContacts"
:data-required="{ clientFk: route.params.id }" model="CustomerContacts"
> ref="customerContactsRef"
<template #body="{ rows }"> url="ClientContacts"
<QCard class="q-pa-md"> >
<VnRow <template #body="{ rows }">
v-for="(row, index) in rows" <QCard class="q-pl-lg q-py-md">
:key="index" <VnRow
class="row q-gutter-md q-mb-md" v-for="(row, index) in rows"
> :key="index"
<div class="col"> class="row q-gutter-md q-mb-md"
<VnInput :label="t('Name')" v-model="row.name" />
</div>
<div class="col">
<VnInput :label="t('Phone')" v-model="row.phone" />
</div>
<div class="col-1 row justify-center items-center">
<QIcon
name="delete"
size="sm"
class="cursor-pointer"
color="primary"
@click="customerContactsRef.remove([row])"
> >
<QTooltip> <div class="col">
{{ t('Remove contact') }} <VnInput :label="t('Name')" v-model="row.name" />
</QTooltip> </div>
</QIcon> <div class="col">
</div> <VnInput :label="t('Phone')" v-model="row.phone" />
</VnRow> </div>
<VnRow> <div class="col-1 row justify-center items-center">
<QIcon <QIcon
name="add" name="delete"
size="sm" size="sm"
class="cursor-pointer" class="cursor-pointer"
color="primary" color="primary"
@click="customerContactsRef.insert()" @click="customerContactsRef.remove([row])"
> >
<QTooltip> <QTooltip>
{{ t('Add contact') }} {{ t('Remove contact') }}
</QTooltip> </QTooltip>
</QIcon> </QIcon>
</VnRow> </div>
</QCard> </VnRow>
</template> <VnRow>
</CrudModel> <QIcon
name="add"
size="sm"
class="cursor-pointer"
color="primary"
@click="customerContactsRef.insert()"
>
<QTooltip>
{{ t('Add contact') }}
</QTooltip>
</QIcon>
</VnRow>
</QCard>
</template>
</CrudModel>
</QPage>
</div>
</template> </template>
<i18n> <i18n>

View File

@ -70,111 +70,118 @@ const updateData = () => {
</script> </script>
<template> <template>
<QCard class="q-pa-lg"> <div class="full-width flex justify-center">
<VnPaginate <QCard class="card-width q-pa-lg">
:filter="filter" <VnPaginate
@on-fetch="fetch" :filter="filter"
auto-load @on-fetch="fetch"
data-key="CustomerCreditContracts" auto-load
order="id DESC" data-key="CustomerCreditContracts"
ref="vnPaginateRef" order="id DESC"
url="CreditClassifications" ref="vnPaginateRef"
> url="CreditClassifications"
<template #body="{ rows }"> >
<div v-if="rows.length"> <template #body="{ rows }">
<QCard <div v-if="rows.length">
v-for="(item, index) in rows" <QCard
:key="index" v-for="(item, index) in rows"
:class="{ :key="index"
'customer-card': true, :class="{
'q-mb-md': index < rows.length - 1, 'customer-card': true,
'is-active': !item.finished, 'q-mb-md': index < rows.length - 1,
}" 'is-active': !item.finished,
> }"
<QCardSection class="flex q-py-none"> >
<div <QCardSection class="flex q-py-none">
class="flex items-center q-ml-md cursor-pointer" <div
v-if="!item.finished" class="flex items-center q-ml-md cursor-pointer"
> v-if="!item.finished"
<QIcon
@click.stop="openDialog(item)"
color="primary"
name="lock"
size="md"
> >
<QTooltip>{{ t('Close contract') }}</QTooltip> <QIcon
</QIcon> @click.stop="openDialog(item)"
</div> color="primary"
name="lock"
size="md"
>
<QTooltip>{{ t('Close contract') }}</QTooltip>
</QIcon>
</div>
<div class="q-ml-lg"> <div class="q-ml-lg">
<div class="flex q-mb-xs"> <div class="flex q-mb-xs">
<div class="q-mr-sm color-vn-label"> <div class="q-mr-sm color-vn-label">
{{ t('Since') }}: {{ t('Since') }}:
</div>
<div class="text-weight-bold">
{{ toDate(item.started) }}
</div>
</div> </div>
<div class="text-weight-bold"> <div class="flex">
{{ toDate(item.started) }} <div class="q-mr-sm color-vn-label">
{{ t('To') }}:
</div>
<div class="text-weight-bold">
{{ toDate(item.finished) }}
</div>
</div> </div>
</div> </div>
<div class="flex"> </QCardSection>
<div class="q-mr-sm color-vn-label">
{{ t('To') }}:
</div>
<div class="text-weight-bold">
{{ toDate(item.finished) }}
</div>
</div>
</div>
</QCardSection>
<QSeparator class="q-mx-lg" vertical /> <QSeparator class="q-mx-lg" vertical />
<div class="flex"> <div class="flex">
<div class="flex items-center" v-if="item?.insurances.length"> <div
<div class="flex q-mr-xl"> class="flex items-center"
<div class="q-mr-sm color-vn-label"> v-if="item?.insurances.length"
{{ t('Credit') }}:
</div>
<div class="text-weight-bold">
{{ item.insurances[0].credit }}
</div>
</div>
<div class="flex q-mr-xl">
<div class="q-mr-sm color-vn-label">
{{ t('Grade') }}:
</div>
<div class="text-weight-bold">
{{ item.insurances[0].grade || '-' }}
</div>
</div>
<div class="flex">
<div class="q-mr-sm color-vn-label">
{{ t('Date') }}:
</div>
<div class="text-weight-bold">
{{ toDate(item.insurances[0].created) }}
</div>
</div>
</div>
<div class="flex items-center q-ml-lg q-mr-md cursor-pointer">
<QIcon
@click.stop="openViewCredit(item)"
color="primary"
name="preview"
size="md"
> >
<QTooltip>{{ t('View credits') }}</QTooltip> <div class="flex q-mr-xl">
</QIcon> <div class="q-mr-sm color-vn-label">
{{ t('Credit') }}:
</div>
<div class="text-weight-bold">
{{ item.insurances[0].credit }}
</div>
</div>
<div class="flex q-mr-xl">
<div class="q-mr-sm color-vn-label">
{{ t('Grade') }}:
</div>
<div class="text-weight-bold">
{{ item.insurances[0].grade || '-' }}
</div>
</div>
<div class="flex">
<div class="q-mr-sm color-vn-label">
{{ t('Date') }}:
</div>
<div class="text-weight-bold">
{{ toDate(item.insurances[0].created) }}
</div>
</div>
</div>
<div
class="flex items-center q-ml-lg q-mr-md cursor-pointer"
>
<QIcon
@click.stop="openViewCredit(item)"
color="primary"
name="preview"
size="md"
>
<QTooltip>{{ t('View credits') }}</QTooltip>
</QIcon>
</div>
</div> </div>
</div> </QCard>
</QCard> </div>
</div> <h5 class="flex justify-center color-vn-label" v-else>
<h5 class="flex justify-center color-vn-label" v-else> {{ t('globals.noResults') }}
{{ t('globals.noResults') }} </h5>
</h5> </template>
</template> </VnPaginate>
</VnPaginate> </QCard>
</QCard> </div>
<QPageSticky :offset="[18, 18]" v-if="showQPageSticky"> <QPageSticky :offset="[18, 18]" v-if="showQPageSticky">
<QBtn <QBtn

View File

@ -126,34 +126,36 @@ const columns = computed(() => [
</template> </template>
</FormModel> </FormModel>
<QTable <div class="full-width flex justify-center">
:columns="columns" <QTable
:pagination="{ rowsPerPage: 0 }" :columns="columns"
:rows="rows" :pagination="{ rowsPerPage: 0 }"
hide-bottom :rows="rows"
row-key="id" hide-bottom
v-model:selected="selected" row-key="id"
class="q-pa-lg" v-model:selected="selected"
> class="card-width q-pa-lg"
<template #body-cell="props"> >
<QTd :props="props"> <template #body-cell="props">
<QTr :props="props" class="cursor-pointer"> <QTd :props="props">
<component <QTr :props="props" class="cursor-pointer">
:is="tableColumnComponents[props.col.name].component" <component
class="col-content" :is="tableColumnComponents[props.col.name].component"
v-bind="tableColumnComponents[props.col.name].props(props)" class="col-content"
@click="tableColumnComponents[props.col.name].event(props)" v-bind="tableColumnComponents[props.col.name].props(props)"
> @click="tableColumnComponents[props.col.name].event(props)"
{{ props.value }} >
<WorkerDescriptorProxy {{ props.value }}
:id="props.row.workerFk" <WorkerDescriptorProxy
v-if="props.col.name === 'employee'" :id="props.row.workerFk"
/> v-if="props.col.name === 'employee'"
</component> />
</QTr> </component>
</QTd> </QTr>
</template> </QTd>
</QTable> </template>
</QTable>
</div>
</template> </template>
<i18n> <i18n>

View File

@ -117,42 +117,50 @@ const toCustomerGreugeCreate = () => {
<template> <template>
<FetchData :filter="filter" @on-fetch="setRows" auto-load url="greuges" /> <FetchData :filter="filter" @on-fetch="setRows" auto-load url="greuges" />
<QPage class="column items-center q-pa-md"> <div class="full-width flex justify-center">
<QCard class="full-width" v-if="totalAmount"> <QPage class="card-width q-pa-lg">
<h6 class="flex justify-end q-my-lg q-pr-lg"> <QCard class="full-width q-pa-sm" v-if="totalAmount">
<span class="color-vn-label q-mr-md">{{ t('Total') }}:</span> <h6 class="flex justify-end q-my-lg q-pr-lg">
{{ toCurrency(totalAmount) }} <span class="color-vn-label q-mr-md">{{ t('Total') }}:</span>
</h6> {{ toCurrency(totalAmount) }}
</QCard> </h6>
</QCard>
<QTable <QCard class="q-pa-sm q-mt-md">
:columns="columns" <QTable
:no-data-label="t('globals.noResults')" :columns="columns"
:pagination="{ rowsPerPage: 12 }" :no-data-label="t('globals.noResults')"
:rows="rows" :pagination="{ rowsPerPage: 12 }"
class="full-width q-mt-md" :rows="rows"
row-key="id" class="full-width q-mt-md"
> row-key="id"
<template #body-cell="props"> >
<QTd :props="props"> <template #body-cell="props">
<QTr :props="props" class="cursor-pointer"> <QTd :props="props">
<component <QTr :props="props" class="cursor-pointer">
:is="tableColumnComponents[props.col.name].component" <component
class="col-content" :is="tableColumnComponents[props.col.name].component"
v-bind="tableColumnComponents[props.col.name].props(props)" class="col-content"
@click="tableColumnComponents[props.col.name].event(props)" v-bind="
> tableColumnComponents[props.col.name].props(props)
{{ props.value }} "
<WorkerDescriptorProxy @click="
:id="props.row.userFk" tableColumnComponents[props.col.name].event(props)
v-if="props.col.name === 'createdBy'" "
/> >
</component> {{ props.value }}
</QTr> <WorkerDescriptorProxy
</QTd> :id="props.row.userFk"
</template> v-if="props.col.name === 'createdBy'"
</QTable> />
</QPage> </component>
</QTr>
</QTd>
</template>
</QTable>
</QCard>
</QPage>
</div>
<QPageSticky :offset="[18, 18]"> <QPageSticky :offset="[18, 18]">
<QBtn @click.stop="toCustomerGreugeCreate()" color="primary" fab icon="add" /> <QBtn @click.stop="toCustomerGreugeCreate()" color="primary" fab icon="add" />

View File

@ -84,31 +84,37 @@ const toCustomerRecoverieCreate = () => {
url="Recoveries" url="Recoveries"
/> />
<QPage class="column items-center q-pa-md"> <div class="full-width flex justify-center">
<QTable <QPage class="card-width q-pa-lg">
:columns="columns" <QTable
:no-data-label="t('globals.noResults')" :columns="columns"
:pagination="{ rowsPerPage: 12 }" :no-data-label="t('globals.noResults')"
:rows="rows" :pagination="{ rowsPerPage: 12 }"
class="full-width q-mt-md" :rows="rows"
row-key="id" class="full-width q-mt-md"
> row-key="id"
<template #body-cell="props"> >
<QTd :props="props"> <template #body-cell="props">
<QTr :props="props" class="cursor-pointer"> <QTd :props="props">
<component <QTr :props="props" class="cursor-pointer">
:is="tableColumnComponents[props.col.name].component" <component
class="col-content" :is="tableColumnComponents[props.col.name].component"
v-bind="tableColumnComponents[props.col.name].props(props)" class="col-content"
@click="tableColumnComponents[props.col.name].event(props)" v-bind="
> tableColumnComponents[props.col.name].props(props)
{{ props.value }} "
</component> @click="
</QTr> tableColumnComponents[props.col.name].event(props)
</QTd> "
</template> >
</QTable> {{ props.value }}
</QPage> </component>
</QTr>
</QTd>
</template>
</QTable>
</QPage>
</div>
<QPageSticky :offset="[18, 18]"> <QPageSticky :offset="[18, 18]">
<QBtn @click.stop="toCustomerRecoverieCreate()" color="primary" fab icon="add" /> <QBtn @click.stop="toCustomerRecoverieCreate()" color="primary" fab icon="add" />

View File

@ -90,35 +90,41 @@ const toCustomerSamplesCreate = () => {
url="ClientSamples" url="ClientSamples"
/> />
<QPage class="column items-center q-pa-md"> <div class="full-width flex justify-center">
<QTable <QPage class="card-width q-pa-lg">
:columns="columns" <QTable
:pagination="{ rowsPerPage: 12 }" :columns="columns"
:rows="rows" :pagination="{ rowsPerPage: 12 }"
class="full-width q-mt-md" :rows="rows"
row-key="id" class="full-width q-mt-md"
:no-data-label="t('globals.noResults')" row-key="id"
> :no-data-label="t('globals.noResults')"
<template #body-cell="props"> >
<QTd :props="props"> <template #body-cell="props">
<QTr :props="props" class="cursor-pointer"> <QTd :props="props">
<component <QTr :props="props" class="cursor-pointer">
:is="tableColumnComponents[props.col.name].component" <component
class="col-content" :is="tableColumnComponents[props.col.name].component"
v-bind="tableColumnComponents[props.col.name].props(props)" class="col-content"
@click="tableColumnComponents[props.col.name].event(props)" v-bind="
> tableColumnComponents[props.col.name].props(props)
{{ props.value }} "
<WorkerDescriptorProxy @click="
:id="props.row.userFk" tableColumnComponents[props.col.name].event(props)
v-if="props.col.name === 'worker'" "
/> >
</component> {{ props.value }}
</QTr> <WorkerDescriptorProxy
</QTd> :id="props.row.userFk"
</template> v-if="props.col.name === 'worker'"
</QTable> />
</QPage> </component>
</QTr>
</QTd>
</template>
</QTable>
</QPage>
</div>
<QPageSticky :offset="[18, 18]"> <QPageSticky :offset="[18, 18]">
<QBtn @click.stop="toCustomerSamplesCreate()" color="primary" fab icon="add" /> <QBtn @click.stop="toCustomerSamplesCreate()" color="primary" fab icon="add" />

View File

@ -104,35 +104,41 @@ const refreshData = () => {
url="clients/transactions" url="clients/transactions"
/> />
<QPage class="column items-center q-pa-md"> <div class="full-width flex justify-center">
<QTable <QPage class="card-width q-pa-lg">
:columns="columns" <QTable
:pagination="{ rowsPerPage: 12 }" :columns="columns"
:rows="rows" :pagination="{ rowsPerPage: 12 }"
class="full-width q-mt-md" :rows="rows"
row-key="id" class="full-width q-mt-md"
v-if="rows?.length" row-key="id"
> v-if="rows?.length"
<template #body-cell="props"> >
<QTd :props="props"> <template #body-cell="props">
<QTr :props="props"> <QTd :props="props">
<component <QTr :props="props">
:is="tableColumnComponents[props.col.name].component" <component
@click="tableColumnComponents[props.col.name].event(props)" :is="tableColumnComponents[props.col.name].component"
class="rounded-borders q-pa-sm" @click="
v-bind="tableColumnComponents[props.col.name].props(props)" tableColumnComponents[props.col.name].event(props)
> "
{{ props.value }} class="rounded-borders q-pa-sm"
</component> v-bind="
</QTr> tableColumnComponents[props.col.name].props(props)
</QTd> "
</template> >
</QTable> {{ props.value }}
</component>
</QTr>
</QTd>
</template>
</QTable>
<h5 class="flex justify-center color-vn-label" v-else> <h5 class="flex justify-center color-vn-label" v-else>
{{ t('globals.noResults') }} {{ t('globals.noResults') }}
</h5> </h5>
</QPage> </QPage>
</div>
</template> </template>
<i18n> <i18n>

View File

@ -453,7 +453,7 @@ export default {
{ {
name: 'CustomerUnpaid', name: 'CustomerUnpaid',
title: 'unpaid', title: 'unpaid',
icon: 'vn:supplierfalse', icon: 'vn:deaulter',
}, },
], ],
}, },