feat: customerList is customerExtendedList
gitea/salix-front/pipeline/pr-dev There was a failure building this commit
Details
gitea/salix-front/pipeline/pr-dev There was a failure building this commit
Details
This commit is contained in:
parent
bc31985a4d
commit
a479637ee6
|
@ -1,94 +1,429 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { ref, computed, markRaw } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import VnPaginate from 'src/components/ui/VnPaginate.vue';
|
import VnTable from 'components/VnTable/VnTable.vue';
|
||||||
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
|
import VnLocation from 'src/components/common/VnLocation.vue';
|
||||||
import CustomerFilter from './CustomerFilter.vue';
|
|
||||||
import VnLv from 'src/components/ui/VnLv.vue';
|
|
||||||
import CardList from 'src/components/ui/CardList.vue';
|
|
||||||
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
|
|
||||||
import { useSummaryDialog } from 'src/composables/useSummaryDialog';
|
|
||||||
import CustomerSummary from './Card/CustomerSummary.vue';
|
import CustomerSummary from './Card/CustomerSummary.vue';
|
||||||
import RightMenu from 'src/components/common/RightMenu.vue';
|
import { useSummaryDialog } from 'src/composables/useSummaryDialog';
|
||||||
|
|
||||||
|
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
|
||||||
|
|
||||||
|
import { toDate } from 'src/filters';
|
||||||
|
|
||||||
const router = useRouter();
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
|
const postcodesOptions = ref([]);
|
||||||
|
const tableRef = ref();
|
||||||
|
|
||||||
|
const columns = computed(() => [
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'id',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.id'),
|
||||||
|
chip: {
|
||||||
|
condition: () => true,
|
||||||
|
},
|
||||||
|
isId: true,
|
||||||
|
columnFilter: {
|
||||||
|
component: 'select',
|
||||||
|
name: 'search',
|
||||||
|
attrs: {
|
||||||
|
url: 'Clients',
|
||||||
|
fields: ['id', 'name'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.name'),
|
||||||
|
name: 'name',
|
||||||
|
isTitle: true,
|
||||||
|
create: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'socialName',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.socialName'),
|
||||||
|
isTitle: true,
|
||||||
|
create: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.fi'),
|
||||||
|
name: 'fi',
|
||||||
|
create: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.salesPersonFk'),
|
||||||
|
name: 'salesPersonFk',
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
url: 'Workers/activeWithInheritedRole',
|
||||||
|
fields: ['id', 'name'],
|
||||||
|
where: { role: 'salesPerson' },
|
||||||
|
},
|
||||||
|
create: true,
|
||||||
|
columnField: {
|
||||||
|
component: null,
|
||||||
|
},
|
||||||
|
format: (row, dashIfEmpty) => dashIfEmpty(row.salesPerson),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.credit'),
|
||||||
|
name: 'credit',
|
||||||
|
component: 'number',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.creditInsurance'),
|
||||||
|
name: 'creditInsurance',
|
||||||
|
component: 'number',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.phone'),
|
||||||
|
name: 'phone',
|
||||||
|
cardVisible: true,
|
||||||
|
after: {
|
||||||
|
component: markRaw(VnLinkPhone),
|
||||||
|
props: (prop) => ({
|
||||||
|
'phone-number': prop.phone,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
component: 'number',
|
||||||
|
columnField: {
|
||||||
|
component: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.mobile'),
|
||||||
|
name: 'mobile',
|
||||||
|
cardVisible: true,
|
||||||
|
columnFilter: {
|
||||||
|
component: 'number',
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.street'),
|
||||||
|
name: 'street',
|
||||||
|
create: true,
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.countryFk'),
|
||||||
|
name: 'countryFk',
|
||||||
|
columnFilter: {
|
||||||
|
component: 'select',
|
||||||
|
inWhere: true,
|
||||||
|
alias: 'c',
|
||||||
|
attrs: {
|
||||||
|
url: 'Countries',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
format: (row, dashIfEmpty) => dashIfEmpty(row.country),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.provinceFk'),
|
||||||
|
name: 'provinceFk',
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
url: 'Provinces',
|
||||||
|
},
|
||||||
|
columnField: {
|
||||||
|
component: null,
|
||||||
|
},
|
||||||
|
format: (row, dashIfEmpty) => dashIfEmpty(row.province),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.city'),
|
||||||
|
name: 'city',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.postcode'),
|
||||||
|
name: 'postcode',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.email'),
|
||||||
|
name: 'email',
|
||||||
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.created'),
|
||||||
|
name: 'created',
|
||||||
|
format: ({ created }) => toDate(created),
|
||||||
|
component: 'date',
|
||||||
|
columnFilter: {
|
||||||
|
alias: 'c',
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.businessTypeFk'),
|
||||||
|
name: 'businessTypeFk',
|
||||||
|
create: true,
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
url: 'BusinessTypes',
|
||||||
|
optionLabel: 'description',
|
||||||
|
optionValue: 'code',
|
||||||
|
},
|
||||||
|
columnField: {
|
||||||
|
component: null,
|
||||||
|
},
|
||||||
|
format: (row, dashIfEmpty) => dashIfEmpty(row.businessType),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.payMethodFk'),
|
||||||
|
name: 'payMethodFk',
|
||||||
|
columnFilter: {
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
url: 'PayMethods',
|
||||||
|
},
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
format: (row, dashIfEmpty) => dashIfEmpty(row.payMethod),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.sageTaxTypeFk'),
|
||||||
|
name: 'sageTaxTypeFk',
|
||||||
|
columnFilter: {
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
optionLabel: 'vat',
|
||||||
|
url: 'SageTaxTypes',
|
||||||
|
},
|
||||||
|
alias: 'sti',
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
format: (row, dashIfEmpty) => dashIfEmpty(row.sageTaxType),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.sageTransactionTypeFk'),
|
||||||
|
name: 'sageTransactionTypeFk',
|
||||||
|
columnFilter: {
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
optionLabel: 'transaction',
|
||||||
|
url: 'SageTransactionTypes',
|
||||||
|
},
|
||||||
|
alias: 'stt',
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
format: (row, dashIfEmpty) => dashIfEmpty(row.sageTransactionType),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.isActive'),
|
||||||
|
name: 'isActive',
|
||||||
|
chip: {
|
||||||
|
color: null,
|
||||||
|
condition: (value) => !value,
|
||||||
|
icon: 'vn:disabled',
|
||||||
|
},
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.isVies'),
|
||||||
|
name: 'isVies',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.isTaxDataChecked'),
|
||||||
|
name: 'isTaxDataChecked',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.isEqualizated'),
|
||||||
|
name: 'isEqualizated',
|
||||||
|
create: true,
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.isFreezed'),
|
||||||
|
name: 'isFreezed',
|
||||||
|
chip: {
|
||||||
|
color: null,
|
||||||
|
condition: (value) => value,
|
||||||
|
icon: 'vn:frozen',
|
||||||
|
},
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.hasToInvoice'),
|
||||||
|
name: 'hasToInvoice',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.hasToInvoiceByAddress'),
|
||||||
|
name: 'hasToInvoiceByAddress',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.isToBeMailed'),
|
||||||
|
name: 'isToBeMailed',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.hasLcr'),
|
||||||
|
name: 'hasLcr',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.hasCoreVnl'),
|
||||||
|
name: 'hasCoreVnl',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
label: t('customer.extendedList.tableVisibleColumns.hasSepaVnl'),
|
||||||
|
name: 'hasSepaVnl',
|
||||||
|
columnFilter: {
|
||||||
|
inWhere: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'right',
|
||||||
|
label: '',
|
||||||
|
name: 'tableActions',
|
||||||
|
actions: [
|
||||||
|
{
|
||||||
|
title: t('Client ticket list'),
|
||||||
|
icon: 'vn:ticket',
|
||||||
|
action: redirectToCreateView,
|
||||||
|
isPrimary: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('Client ticket list'),
|
||||||
|
icon: 'preview',
|
||||||
|
action: (row) => viewSummary(row.id, CustomerSummary),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
const { viewSummary } = useSummaryDialog();
|
const { viewSummary } = useSummaryDialog();
|
||||||
|
const redirectToCreateView = (row) => {
|
||||||
function navigate(id) {
|
router.push({
|
||||||
router.push({ path: `/customer/${id}` });
|
name: 'TicketList',
|
||||||
}
|
query: {
|
||||||
|
params: JSON.stringify({
|
||||||
const redirectToCreateView = () => {
|
clientFk: row.id,
|
||||||
router.push({ name: 'CustomerCreate' });
|
}),
|
||||||
|
},
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function handleLocation(data, location) {
|
||||||
|
const { town, code, provinceFk, countryFk } = location ?? {};
|
||||||
|
data.postcode = code;
|
||||||
|
data.city = town;
|
||||||
|
data.provinceFk = provinceFk;
|
||||||
|
data.countryFk = countryFk;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VnSearchbar
|
<VnTable
|
||||||
:info="t('You can search by customer id or name')"
|
ref="tableRef"
|
||||||
:label="t('Search customer')"
|
data-key="CustomerExtendedList"
|
||||||
data-key="CustomerList"
|
url="Clients/extendedListFilter"
|
||||||
/>
|
:create="{
|
||||||
<RightMenu>
|
urlCreate: 'Clients/createWithUser',
|
||||||
<template #right-panel>
|
title: 'Create client',
|
||||||
<CustomerFilter data-key="CustomerList" />
|
onDataSaved: ({ id }) => tableRef.redirect(id),
|
||||||
</template>
|
formInitialData: {
|
||||||
</RightMenu>
|
active: true,
|
||||||
<QPage class="column items-center q-pa-md">
|
isEqualizated: false,
|
||||||
<div class="vn-card-list">
|
},
|
||||||
<VnPaginate
|
}"
|
||||||
auto-load
|
order="id DESC"
|
||||||
data-key="CustomerList"
|
:columns="columns"
|
||||||
order="id DESC"
|
default-mode="table"
|
||||||
url="/Clients/filter"
|
redirect="customer"
|
||||||
>
|
auto-load
|
||||||
<template #body="{ rows }">
|
>
|
||||||
<CardList
|
<template #more-create-dialog="{ data }">
|
||||||
:id="row.id"
|
<VnLocation
|
||||||
:key="row.id"
|
:roles-allowed-to-create="['deliveryAssistant']"
|
||||||
:title="row.name"
|
:options="postcodesOptions"
|
||||||
@click="navigate(row.id)"
|
v-model="data.location"
|
||||||
v-for="row of rows"
|
@update:model-value="(location) => handleLocation(data, location)"
|
||||||
>
|
/>
|
||||||
<template #list-items>
|
<QInput v-model="data.userName" :label="t('Web user')" />
|
||||||
<VnLv :label="t('customer.list.email')" :value="row.email" />
|
<QInput :label="t('Email')" clearable type="email" v-model="data.email">
|
||||||
<VnLv :value="row.phone">
|
<template #append>
|
||||||
<template #label>
|
<QIcon name="info" class="cursor-info">
|
||||||
{{ t('customer.list.phone') }}
|
<QTooltip max-width="400px">{{
|
||||||
<VnLinkPhone :phone-number="row.phone" />
|
t('customer.basicData.youCanSaveMultipleEmails')
|
||||||
</template>
|
}}</QTooltip>
|
||||||
</VnLv>
|
</QIcon>
|
||||||
</template>
|
|
||||||
<template #actions>
|
|
||||||
<QBtn
|
|
||||||
:label="t('components.smartCard.openCard')"
|
|
||||||
@click.stop="navigate(row.id)"
|
|
||||||
outline
|
|
||||||
/>
|
|
||||||
<QBtn
|
|
||||||
:label="t('components.smartCard.openSummary')"
|
|
||||||
@click.stop="viewSummary(row.id, CustomerSummary)"
|
|
||||||
color="primary"
|
|
||||||
style="margin-top: 15px"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
</CardList>
|
|
||||||
</template>
|
</template>
|
||||||
</VnPaginate>
|
</QInput>
|
||||||
</div>
|
</template>
|
||||||
<QPageSticky :offset="[20, 20]">
|
</VnTable>
|
||||||
<QBtn @click="redirectToCreateView()" color="primary" fab icon="add" />
|
|
||||||
<QTooltip>
|
|
||||||
{{ t('New client') }}
|
|
||||||
</QTooltip>
|
|
||||||
</QPageSticky>
|
|
||||||
</QPage>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<i18n>
|
<i18n>
|
||||||
es:
|
es:
|
||||||
Search customer: Buscar cliente
|
Web user: Usuario Web
|
||||||
You can search by customer id or name: Puedes buscar por id o nombre del cliente
|
|
||||||
New client: Nuevo cliente
|
|
||||||
</i18n>
|
</i18n>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.col-content {
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -1,429 +0,0 @@
|
||||||
<script setup>
|
|
||||||
import { ref, computed, markRaw } from 'vue';
|
|
||||||
import { useI18n } from 'vue-i18n';
|
|
||||||
import { useRouter } from 'vue-router';
|
|
||||||
import VnTable from 'components/VnTable/VnTable.vue';
|
|
||||||
import VnLocation from 'src/components/common/VnLocation.vue';
|
|
||||||
import CustomerSummary from '../Card/CustomerSummary.vue';
|
|
||||||
import { useSummaryDialog } from 'src/composables/useSummaryDialog';
|
|
||||||
|
|
||||||
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
|
|
||||||
|
|
||||||
import { toDate } from 'src/filters';
|
|
||||||
|
|
||||||
const { t } = useI18n();
|
|
||||||
const router = useRouter();
|
|
||||||
|
|
||||||
const postcodesOptions = ref([]);
|
|
||||||
const tableRef = ref();
|
|
||||||
|
|
||||||
const columns = computed(() => [
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
name: 'id',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.id'),
|
|
||||||
chip: {
|
|
||||||
condition: () => true,
|
|
||||||
},
|
|
||||||
isId: true,
|
|
||||||
columnFilter: {
|
|
||||||
component: 'select',
|
|
||||||
name: 'search',
|
|
||||||
attrs: {
|
|
||||||
url: 'Clients',
|
|
||||||
fields: ['id', 'name'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.name'),
|
|
||||||
name: 'name',
|
|
||||||
isTitle: true,
|
|
||||||
create: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
name: 'socialName',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.socialName'),
|
|
||||||
isTitle: true,
|
|
||||||
create: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.fi'),
|
|
||||||
name: 'fi',
|
|
||||||
create: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.salesPersonFk'),
|
|
||||||
name: 'salesPersonFk',
|
|
||||||
component: 'select',
|
|
||||||
attrs: {
|
|
||||||
url: 'Workers/activeWithInheritedRole',
|
|
||||||
fields: ['id', 'name'],
|
|
||||||
where: { role: 'salesPerson' },
|
|
||||||
},
|
|
||||||
create: true,
|
|
||||||
columnField: {
|
|
||||||
component: null,
|
|
||||||
},
|
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.salesPerson),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.credit'),
|
|
||||||
name: 'credit',
|
|
||||||
component: 'number',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.creditInsurance'),
|
|
||||||
name: 'creditInsurance',
|
|
||||||
component: 'number',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.phone'),
|
|
||||||
name: 'phone',
|
|
||||||
cardVisible: true,
|
|
||||||
after: {
|
|
||||||
component: markRaw(VnLinkPhone),
|
|
||||||
props: (prop) => ({
|
|
||||||
'phone-number': prop.phone,
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
component: 'number',
|
|
||||||
columnField: {
|
|
||||||
component: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.mobile'),
|
|
||||||
name: 'mobile',
|
|
||||||
cardVisible: true,
|
|
||||||
columnFilter: {
|
|
||||||
component: 'number',
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.street'),
|
|
||||||
name: 'street',
|
|
||||||
create: true,
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.countryFk'),
|
|
||||||
name: 'countryFk',
|
|
||||||
columnFilter: {
|
|
||||||
component: 'select',
|
|
||||||
inWhere: true,
|
|
||||||
alias: 'c',
|
|
||||||
attrs: {
|
|
||||||
url: 'Countries',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.country),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.provinceFk'),
|
|
||||||
name: 'provinceFk',
|
|
||||||
component: 'select',
|
|
||||||
attrs: {
|
|
||||||
url: 'Provinces',
|
|
||||||
},
|
|
||||||
columnField: {
|
|
||||||
component: null,
|
|
||||||
},
|
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.province),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.city'),
|
|
||||||
name: 'city',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.postcode'),
|
|
||||||
name: 'postcode',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.email'),
|
|
||||||
name: 'email',
|
|
||||||
cardVisible: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.created'),
|
|
||||||
name: 'created',
|
|
||||||
format: ({ created }) => toDate(created),
|
|
||||||
component: 'date',
|
|
||||||
columnFilter: {
|
|
||||||
alias: 'c',
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.businessTypeFk'),
|
|
||||||
name: 'businessTypeFk',
|
|
||||||
create: true,
|
|
||||||
component: 'select',
|
|
||||||
attrs: {
|
|
||||||
url: 'BusinessTypes',
|
|
||||||
optionLabel: 'description',
|
|
||||||
optionValue: 'code',
|
|
||||||
},
|
|
||||||
columnField: {
|
|
||||||
component: null,
|
|
||||||
},
|
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.businessType),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.payMethodFk'),
|
|
||||||
name: 'payMethodFk',
|
|
||||||
columnFilter: {
|
|
||||||
component: 'select',
|
|
||||||
attrs: {
|
|
||||||
url: 'PayMethods',
|
|
||||||
},
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.payMethod),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.sageTaxTypeFk'),
|
|
||||||
name: 'sageTaxTypeFk',
|
|
||||||
columnFilter: {
|
|
||||||
component: 'select',
|
|
||||||
attrs: {
|
|
||||||
optionLabel: 'vat',
|
|
||||||
url: 'SageTaxTypes',
|
|
||||||
},
|
|
||||||
alias: 'sti',
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.sageTaxType),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.sageTransactionTypeFk'),
|
|
||||||
name: 'sageTransactionTypeFk',
|
|
||||||
columnFilter: {
|
|
||||||
component: 'select',
|
|
||||||
attrs: {
|
|
||||||
optionLabel: 'transaction',
|
|
||||||
url: 'SageTransactionTypes',
|
|
||||||
},
|
|
||||||
alias: 'stt',
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
format: (row, dashIfEmpty) => dashIfEmpty(row.sageTransactionType),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isActive'),
|
|
||||||
name: 'isActive',
|
|
||||||
chip: {
|
|
||||||
color: null,
|
|
||||||
condition: (value) => !value,
|
|
||||||
icon: 'vn:disabled',
|
|
||||||
},
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isVies'),
|
|
||||||
name: 'isVies',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isTaxDataChecked'),
|
|
||||||
name: 'isTaxDataChecked',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isEqualizated'),
|
|
||||||
name: 'isEqualizated',
|
|
||||||
create: true,
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isFreezed'),
|
|
||||||
name: 'isFreezed',
|
|
||||||
chip: {
|
|
||||||
color: null,
|
|
||||||
condition: (value) => value,
|
|
||||||
icon: 'vn:frozen',
|
|
||||||
},
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.hasToInvoice'),
|
|
||||||
name: 'hasToInvoice',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.hasToInvoiceByAddress'),
|
|
||||||
name: 'hasToInvoiceByAddress',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.isToBeMailed'),
|
|
||||||
name: 'isToBeMailed',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.hasLcr'),
|
|
||||||
name: 'hasLcr',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.hasCoreVnl'),
|
|
||||||
name: 'hasCoreVnl',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'left',
|
|
||||||
label: t('customer.extendedList.tableVisibleColumns.hasSepaVnl'),
|
|
||||||
name: 'hasSepaVnl',
|
|
||||||
columnFilter: {
|
|
||||||
inWhere: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
align: 'right',
|
|
||||||
label: '',
|
|
||||||
name: 'tableActions',
|
|
||||||
actions: [
|
|
||||||
{
|
|
||||||
title: t('Client ticket list'),
|
|
||||||
icon: 'vn:ticket',
|
|
||||||
action: redirectToCreateView,
|
|
||||||
isPrimary: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: t('Client ticket list'),
|
|
||||||
icon: 'preview',
|
|
||||||
action: (row) => viewSummary(row.id, CustomerSummary),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
|
|
||||||
const { viewSummary } = useSummaryDialog();
|
|
||||||
const redirectToCreateView = (row) => {
|
|
||||||
router.push({
|
|
||||||
name: 'TicketList',
|
|
||||||
query: {
|
|
||||||
params: JSON.stringify({
|
|
||||||
clientFk: row.id,
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function handleLocation(data, location) {
|
|
||||||
const { town, code, provinceFk, countryFk } = location ?? {};
|
|
||||||
data.postcode = code;
|
|
||||||
data.city = town;
|
|
||||||
data.provinceFk = provinceFk;
|
|
||||||
data.countryFk = countryFk;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<VnTable
|
|
||||||
ref="tableRef"
|
|
||||||
data-key="CustomerExtendedList"
|
|
||||||
url="Clients/extendedListFilter"
|
|
||||||
:create="{
|
|
||||||
urlCreate: 'Clients/createWithUser',
|
|
||||||
title: 'Create client',
|
|
||||||
onDataSaved: ({ id }) => tableRef.redirect(id),
|
|
||||||
formInitialData: {
|
|
||||||
active: true,
|
|
||||||
isEqualizated: false,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
order="id DESC"
|
|
||||||
:columns="columns"
|
|
||||||
default-mode="table"
|
|
||||||
redirect="customer"
|
|
||||||
auto-load
|
|
||||||
>
|
|
||||||
<template #more-create-dialog="{ data }">
|
|
||||||
<VnLocation
|
|
||||||
:roles-allowed-to-create="['deliveryAssistant']"
|
|
||||||
:options="postcodesOptions"
|
|
||||||
v-model="data.location"
|
|
||||||
@update:model-value="(location) => handleLocation(data, location)"
|
|
||||||
/>
|
|
||||||
<QInput v-model="data.userName" :label="t('Web user')" />
|
|
||||||
<QInput :label="t('Email')" clearable type="email" v-model="data.email">
|
|
||||||
<template #append>
|
|
||||||
<QIcon name="info" class="cursor-info">
|
|
||||||
<QTooltip max-width="400px">{{
|
|
||||||
t('customer.basicData.youCanSaveMultipleEmails')
|
|
||||||
}}</QTooltip>
|
|
||||||
</QIcon>
|
|
||||||
</template>
|
|
||||||
</QInput>
|
|
||||||
</template>
|
|
||||||
</VnTable>
|
|
||||||
</template>
|
|
||||||
<i18n>
|
|
||||||
es:
|
|
||||||
Web user: Usuario Web
|
|
||||||
</i18n>
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.col-content {
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 6px;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -14,7 +14,6 @@ export default {
|
||||||
main: [
|
main: [
|
||||||
'CustomerList',
|
'CustomerList',
|
||||||
'CustomerPayments',
|
'CustomerPayments',
|
||||||
'CustomerExtendedList',
|
|
||||||
'CustomerNotifications',
|
'CustomerNotifications',
|
||||||
'CustomerDefaulter',
|
'CustomerDefaulter',
|
||||||
],
|
],
|
||||||
|
@ -70,18 +69,6 @@ export default {
|
||||||
component: () =>
|
component: () =>
|
||||||
import('src/pages/Customer/Payments/CustomerPayments.vue'),
|
import('src/pages/Customer/Payments/CustomerPayments.vue'),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: 'extendedList',
|
|
||||||
name: 'CustomerExtendedList',
|
|
||||||
meta: {
|
|
||||||
title: 'extendedList',
|
|
||||||
icon: 'vn:client',
|
|
||||||
},
|
|
||||||
component: () =>
|
|
||||||
import(
|
|
||||||
'src/pages/Customer/ExtendedList/CustomerExtendedList.vue'
|
|
||||||
),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: 'notifications',
|
path: 'notifications',
|
||||||
name: 'CustomerNotifications',
|
name: 'CustomerNotifications',
|
||||||
|
|
Loading…
Reference in New Issue