@freteclick/quasar-financial-ui 1.0.113 → 1.0.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/components/common/Filters.vue +182 -28
- package/src/components/invoice/expense/CreateExpense.vue +519 -176
- package/src/components/invoice/expense/DetailExpense.vue +304 -39
- package/src/components/invoice/pay/InvoiceDetails.vue +327 -95
- package/src/components/invoice/pay/InvoiceSearching.vue +746 -146
- package/src/components/invoice/pay/details/InvoiceInvoice.vue +1 -1
- package/src/components/invoice/receive/InvoiceSearching.vue +647 -92
- package/src/pages/Invoice/Pay/Details.vue +18 -1
- package/src/pages/Invoice/Pay/Index.vue +149 -27
- package/src/pages/Invoice/Receive/Index.vue +15 -11
- package/src/store/modules/invoice/pay/actions.js +5 -4
- package/src/store/modules/invoice/pay/getters.js +2 -1
- package/src/store/modules/invoice/pay/index.js +1 -0
- package/src/store/modules/invoice/pay/mutation_types.js +2 -1
- package/src/store/modules/invoice/pay/mutations.js +5 -0
- package/src/store/modules/invoice/receive/actions.js +1 -0
- package/src/store/modules/invoice/receive/getters.js +2 -1
- package/src/store/modules/invoice/receive/index.js +1 -0
- package/src/store/modules/invoice/receive/mutation_types.js +2 -1
- package/src/store/modules/invoice/receive/mutations.js +5 -0
|
@@ -1,61 +1,225 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
2
|
+
<div class="receivables-page">
|
|
3
|
+
<div class="receivables-page__content">
|
|
4
|
+
<PageHeader
|
|
5
|
+
title="Contas a receber"
|
|
6
|
+
description="Acompanhe faturas, vencimentos e valores da sua empresa."
|
|
7
|
+
>
|
|
8
|
+
<template #actions>
|
|
9
|
+
<q-btn
|
|
10
|
+
outline
|
|
11
|
+
no-caps
|
|
12
|
+
rounded
|
|
13
|
+
color="white"
|
|
14
|
+
icon="tune"
|
|
15
|
+
label="Filtros"
|
|
16
|
+
@click="filtersDrawerOpen = true"
|
|
17
|
+
/>
|
|
18
|
+
</template>
|
|
19
|
+
</PageHeader>
|
|
20
|
+
|
|
21
|
+
<section class="receivables-table-panel">
|
|
22
|
+
<div class="receivables-table-panel__heading">
|
|
23
|
+
<div>
|
|
24
|
+
<span class="receivables-section-eyebrow">LANÇAMENTOS</span>
|
|
25
|
+
<h2>Faturas de recebimento</h2>
|
|
26
|
+
</div>
|
|
27
|
+
<q-card flat class="receivables-summary__card" aria-label="Valor total dos recebíveis">
|
|
28
|
+
<div class="receivables-summary__icon receivables-summary__icon--green">
|
|
29
|
+
<q-icon name="payments" />
|
|
30
|
+
</div>
|
|
31
|
+
<div class="receivables-summary__copy">
|
|
32
|
+
<span>Valor total dos recebíveis</span>
|
|
33
|
+
<strong class="receivables-summary__amount">{{ filteredTotalAmount }}</strong>
|
|
34
|
+
<small>Soma de todas as faturas filtradas</small>
|
|
35
|
+
</div>
|
|
36
|
+
</q-card>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<q-table
|
|
40
|
+
flat
|
|
41
|
+
class="receivables-table"
|
|
42
|
+
:loading="isLoading"
|
|
43
|
+
:rows="data"
|
|
44
|
+
:columns="settings.columns"
|
|
45
|
+
v-model:pagination="pagination"
|
|
46
|
+
@request="onRequest"
|
|
47
|
+
row-key="id"
|
|
48
|
+
:visible-columns="settings.visibleColumns"
|
|
49
|
+
:rows-per-page-options="[10, 25, 50]"
|
|
50
|
+
:grid="$q.screen.lt.sm"
|
|
51
|
+
no-data-label="Nenhuma fatura encontrada"
|
|
52
|
+
no-results-label="Nenhuma fatura corresponde aos filtros"
|
|
53
|
+
loading-label="Carregando recebíveis..."
|
|
54
|
+
rows-per-page-label="Linhas por página"
|
|
55
|
+
>
|
|
56
|
+
<template v-slot:body="props">
|
|
57
|
+
<q-tr :props="props" class="receivables-table__row">
|
|
58
|
+
<q-td key="id" :props="props">
|
|
59
|
+
<q-btn
|
|
60
|
+
flat
|
|
61
|
+
dense
|
|
62
|
+
no-caps
|
|
63
|
+
icon="receipt_long"
|
|
64
|
+
:label="`#${props.row.id}`"
|
|
65
|
+
:to="{ name: 'ReceiveDetails', params: { id: props.row.id } }"
|
|
66
|
+
class="receivables-invoice-link"
|
|
67
|
+
/>
|
|
68
|
+
</q-td>
|
|
69
|
+
<q-td key="tipo" :props="props">
|
|
70
|
+
<q-badge class="receivables-type-badge">{{ props.row.tipo }}</q-badge>
|
|
71
|
+
</q-td>
|
|
72
|
+
<q-td key="pedidos" :props="props">
|
|
73
|
+
<q-btn
|
|
74
|
+
flat
|
|
75
|
+
dense
|
|
76
|
+
no-caps
|
|
77
|
+
icon="link"
|
|
78
|
+
color="primary"
|
|
79
|
+
:label="ordersLabel(props.row.pedidos)"
|
|
80
|
+
:disable="!props.row.pedidos.length"
|
|
81
|
+
@click="seeOrdersList(props.row.pedidos, props.row.id)"
|
|
82
|
+
class="receivables-orders-link"
|
|
83
|
+
/>
|
|
84
|
+
</q-td>
|
|
85
|
+
<q-td key="dataVencimento" :props="props">
|
|
86
|
+
<div class="receivables-date-cell">
|
|
87
|
+
<q-icon name="event" />
|
|
88
|
+
<span>{{ props.row.dataVencimentoLabel }}</span>
|
|
89
|
+
</div>
|
|
90
|
+
</q-td>
|
|
91
|
+
<q-td key="payer" :props="props">{{ props.row.payer }}</q-td>
|
|
92
|
+
<q-td key="client" :props="props">{{ props.row.client }}</q-td>
|
|
93
|
+
<q-td key="status" :props="props">
|
|
94
|
+
<q-badge
|
|
95
|
+
rounded
|
|
96
|
+
class="receivables-status-badge"
|
|
97
|
+
:style="statusStyle(props.row.color_status)"
|
|
98
|
+
>
|
|
99
|
+
<span class="receivables-status-badge__dot" />
|
|
100
|
+
{{ statusLabel(props.row.status) }}
|
|
101
|
+
</q-badge>
|
|
102
|
+
</q-td>
|
|
103
|
+
<q-td key="preco" :props="props" class="receivables-price-cell">
|
|
104
|
+
{{ props.cols[7].value }}
|
|
105
|
+
</q-td>
|
|
106
|
+
</q-tr>
|
|
107
|
+
</template>
|
|
108
|
+
|
|
109
|
+
<template v-slot:item="props">
|
|
110
|
+
<div class="col-12">
|
|
111
|
+
<q-card flat bordered class="receivables-mobile-card">
|
|
112
|
+
<div class="receivables-mobile-card__top">
|
|
113
|
+
<q-btn
|
|
114
|
+
flat
|
|
115
|
+
dense
|
|
116
|
+
no-caps
|
|
117
|
+
icon="receipt_long"
|
|
118
|
+
:label="`#${props.row.id}`"
|
|
119
|
+
:to="{ name: 'ReceiveDetails', params: { id: props.row.id } }"
|
|
120
|
+
class="receivables-invoice-link"
|
|
121
|
+
/>
|
|
122
|
+
<q-badge
|
|
123
|
+
rounded
|
|
124
|
+
class="receivables-status-badge"
|
|
125
|
+
:style="statusStyle(props.row.color_status)"
|
|
126
|
+
>
|
|
127
|
+
<span class="receivables-status-badge__dot" />
|
|
128
|
+
{{ statusLabel(props.row.status) }}
|
|
129
|
+
</q-badge>
|
|
130
|
+
</div>
|
|
131
|
+
<div class="receivables-mobile-card__type">{{ props.row.tipo }}</div>
|
|
132
|
+
<div class="receivables-mobile-card__grid">
|
|
133
|
+
<div>
|
|
134
|
+
<span>Vencimento</span>
|
|
135
|
+
<strong>{{ props.row.dataVencimentoLabel }}</strong>
|
|
136
|
+
</div>
|
|
137
|
+
<div>
|
|
138
|
+
<span>Valor</span>
|
|
139
|
+
<strong>{{ props.cols[7].value }}</strong>
|
|
140
|
+
</div>
|
|
141
|
+
<div>
|
|
142
|
+
<span>Pagador</span>
|
|
143
|
+
<strong>{{ props.row.payer }}</strong>
|
|
144
|
+
</div>
|
|
145
|
+
<div>
|
|
146
|
+
<span>Cliente</span>
|
|
147
|
+
<strong>{{ props.row.client }}</strong>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
<div class="receivables-mobile-card__actions">
|
|
151
|
+
<q-btn
|
|
152
|
+
flat
|
|
153
|
+
dense
|
|
154
|
+
no-caps
|
|
155
|
+
icon="link"
|
|
156
|
+
color="primary"
|
|
157
|
+
:label="ordersLabel(props.row.pedidos)"
|
|
158
|
+
:disable="!props.row.pedidos.length"
|
|
159
|
+
@click="seeOrdersList(props.row.pedidos, props.row.id)"
|
|
160
|
+
/>
|
|
161
|
+
<q-btn
|
|
162
|
+
unelevated
|
|
163
|
+
dense
|
|
164
|
+
no-caps
|
|
165
|
+
color="primary"
|
|
166
|
+
label="Abrir fatura"
|
|
167
|
+
:to="{ name: 'ReceiveDetails', params: { id: props.row.id } }"
|
|
168
|
+
/>
|
|
169
|
+
</div>
|
|
170
|
+
</q-card>
|
|
171
|
+
</div>
|
|
172
|
+
</template>
|
|
173
|
+
</q-table>
|
|
174
|
+
</section>
|
|
175
|
+
</div>
|
|
32
176
|
|
|
33
177
|
<q-dialog v-model="dialogs.orders.visible" transition-show="scale" transition-hide="scale">
|
|
34
|
-
<q-card class="
|
|
35
|
-
<q-card-section>
|
|
36
|
-
<div
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
</div>
|
|
40
|
-
<q-space />
|
|
41
|
-
<q-btn icon="close" color="white" flat round dense v-close-popup />
|
|
178
|
+
<q-card class="receivables-orders-dialog">
|
|
179
|
+
<q-card-section class="receivables-orders-dialog__header">
|
|
180
|
+
<div>
|
|
181
|
+
<span>DETALHES DA FATURA</span>
|
|
182
|
+
<h3>Pedidos da fatura #{{ dialogs.orders.invoice }}</h3>
|
|
42
183
|
</div>
|
|
184
|
+
<q-btn icon="close" flat round dense v-close-popup aria-label="Fechar" />
|
|
43
185
|
</q-card-section>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
186
|
+
<div class="receivables-orders-dialog__list">
|
|
187
|
+
<q-list separator>
|
|
188
|
+
<q-item v-for="(orderId, index) in dialogs.orders.items" :key="index">
|
|
189
|
+
<q-item-section avatar>
|
|
190
|
+
<q-avatar color="blue-1" text-color="primary" icon="receipt" />
|
|
191
|
+
</q-item-section>
|
|
192
|
+
<q-item-section>Pedido #{{ orderId }}</q-item-section>
|
|
193
|
+
<q-item-section side>
|
|
194
|
+
<q-btn
|
|
195
|
+
flat
|
|
196
|
+
dense
|
|
197
|
+
no-caps
|
|
198
|
+
color="primary"
|
|
199
|
+
label="Abrir"
|
|
200
|
+
:to="{ name: 'OrderDetails', params: { id: orderId } }"
|
|
201
|
+
/>
|
|
202
|
+
</q-item-section>
|
|
203
|
+
</q-item>
|
|
204
|
+
</q-list>
|
|
205
|
+
</div>
|
|
57
206
|
</q-card>
|
|
58
207
|
</q-dialog>
|
|
208
|
+
|
|
209
|
+
<FilterDrawer
|
|
210
|
+
v-model="filtersDrawerOpen"
|
|
211
|
+
eyebrow="CONTAS A RECEBER"
|
|
212
|
+
title="Refinar recebíveis"
|
|
213
|
+
description="Escolha os critérios para atualizar a listagem."
|
|
214
|
+
:show-apply="false"
|
|
215
|
+
@clear="clearFilters"
|
|
216
|
+
>
|
|
217
|
+
<Filters
|
|
218
|
+
:filters="filters"
|
|
219
|
+
variant="receivables-drawer"
|
|
220
|
+
@onRequest="onFilterRequest"
|
|
221
|
+
/>
|
|
222
|
+
</FilterDrawer>
|
|
59
223
|
</div>
|
|
60
224
|
</template>
|
|
61
225
|
|
|
@@ -67,6 +231,8 @@ import {
|
|
|
67
231
|
} from "@freteclick/quasar-common-ui/src/utils/formatter";
|
|
68
232
|
|
|
69
233
|
import { date } from "quasar";
|
|
234
|
+
import PageHeader from "@freteclick/quasar-common-ui/src/components/common/PageHeader.vue";
|
|
235
|
+
import FilterDrawer from "@freteclick/quasar-common-ui/src/components/common/FilterDrawer.vue";
|
|
70
236
|
import Filters from "../../common/Filters.vue";
|
|
71
237
|
|
|
72
238
|
const SETTINGS = {
|
|
@@ -89,18 +255,21 @@ const SETTINGS = {
|
|
|
89
255
|
return `#${val}`;
|
|
90
256
|
},
|
|
91
257
|
label: "ID",
|
|
258
|
+
sortable: false,
|
|
92
259
|
},
|
|
93
260
|
{
|
|
94
261
|
name: "tipo",
|
|
95
262
|
align: "left",
|
|
96
263
|
field: "tipo",
|
|
97
264
|
label: "Tipo",
|
|
265
|
+
sortable: false,
|
|
98
266
|
},
|
|
99
267
|
{
|
|
100
268
|
name: "pedidos",
|
|
101
269
|
align: "left",
|
|
102
270
|
field: "pedidos",
|
|
103
271
|
label: "Pedidos",
|
|
272
|
+
sortable: false,
|
|
104
273
|
},
|
|
105
274
|
{
|
|
106
275
|
name: "dataVencimento",
|
|
@@ -110,33 +279,38 @@ const SETTINGS = {
|
|
|
110
279
|
return formatDateYmdTodmY(val);
|
|
111
280
|
},
|
|
112
281
|
label: "Data vencimento",
|
|
282
|
+
sortable: false,
|
|
113
283
|
},
|
|
114
284
|
{
|
|
115
285
|
name: "payer",
|
|
116
286
|
field: "payer",
|
|
117
287
|
align: "left",
|
|
118
288
|
label: "Pagador",
|
|
289
|
+
sortable: false,
|
|
119
290
|
},
|
|
120
291
|
{
|
|
121
292
|
name: "client",
|
|
122
293
|
field: "client",
|
|
123
294
|
align: "left",
|
|
124
295
|
label: "Cliente",
|
|
296
|
+
sortable: false,
|
|
125
297
|
},
|
|
126
298
|
{
|
|
127
299
|
name: "status",
|
|
128
300
|
field: "status",
|
|
129
301
|
align: "left",
|
|
130
302
|
label: "Status",
|
|
303
|
+
sortable: false,
|
|
131
304
|
},
|
|
132
305
|
{
|
|
133
306
|
name: "preco",
|
|
134
307
|
field: "preco",
|
|
135
|
-
align: "
|
|
308
|
+
align: "right",
|
|
136
309
|
format: (val, row) => {
|
|
137
310
|
return formatMoney(val, "BRL", "pt-br");
|
|
138
311
|
},
|
|
139
312
|
label: "Preço",
|
|
313
|
+
sortable: false,
|
|
140
314
|
},
|
|
141
315
|
],
|
|
142
316
|
};
|
|
@@ -145,6 +319,8 @@ Object.freeze(SETTINGS);
|
|
|
145
319
|
|
|
146
320
|
export default {
|
|
147
321
|
components: {
|
|
322
|
+
PageHeader,
|
|
323
|
+
FilterDrawer,
|
|
148
324
|
Filters,
|
|
149
325
|
},
|
|
150
326
|
props: {
|
|
@@ -203,6 +379,7 @@ export default {
|
|
|
203
379
|
invoice: null,
|
|
204
380
|
},
|
|
205
381
|
},
|
|
382
|
+
filtersDrawerOpen: false,
|
|
206
383
|
data: [],
|
|
207
384
|
filters: {
|
|
208
385
|
orderType: {
|
|
@@ -219,7 +396,7 @@ export default {
|
|
|
219
396
|
},
|
|
220
397
|
pagination: {
|
|
221
398
|
sortBy: "dataVencimento",
|
|
222
|
-
descending:
|
|
399
|
+
descending: true,
|
|
223
400
|
page: 1,
|
|
224
401
|
rowsPerPage: 10,
|
|
225
402
|
rowsNumber: 10,
|
|
@@ -234,8 +411,16 @@ export default {
|
|
|
234
411
|
violations: "receiveInvoice/violations",
|
|
235
412
|
items: "receiveInvoice/items",
|
|
236
413
|
totalItems: "receiveInvoice/totalItems",
|
|
414
|
+
totalAmount: "receiveInvoice/totalAmount",
|
|
237
415
|
myCompany: "people/currentCompany",
|
|
238
416
|
}),
|
|
417
|
+
|
|
418
|
+
filteredTotalAmount() {
|
|
419
|
+
if (this.totalAmount === null || this.totalAmount === undefined) return "—";
|
|
420
|
+
|
|
421
|
+
return formatMoney(Number(this.totalAmount) || 0, "BRL", "pt-br");
|
|
422
|
+
},
|
|
423
|
+
|
|
239
424
|
},
|
|
240
425
|
|
|
241
426
|
watch: {
|
|
@@ -256,34 +441,34 @@ export default {
|
|
|
256
441
|
items(items) {
|
|
257
442
|
if (!items) return;
|
|
258
443
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
tipo: this.$t(item.invoice_type),
|
|
444
|
+
this.data = items.map((item) => {
|
|
445
|
+
const orderEntries = Array.isArray(item.order) ? item.order : [];
|
|
446
|
+
const orders = orderEntries
|
|
447
|
+
.map((entry) => {
|
|
448
|
+
const orderUri = entry && entry.order && entry.order["@id"];
|
|
449
|
+
return orderUri ? String(orderUri).replace(/[^0-9]/g, "") : null;
|
|
450
|
+
})
|
|
451
|
+
.filter(Boolean);
|
|
452
|
+
const firstOrder =
|
|
453
|
+
(orderEntries.find((entry) => entry && entry.order) || {}).order || {};
|
|
454
|
+
const invoiceUri = item["@id"] || "";
|
|
455
|
+
|
|
456
|
+
return {
|
|
457
|
+
"@id": invoiceUri,
|
|
458
|
+
id: String(invoiceUri).replace(/[^0-9]/g, "") || item.id,
|
|
459
|
+
tipo: item.invoice_type ? this.$t(item.invoice_type) : "—",
|
|
276
460
|
pedidos: orders,
|
|
277
|
-
color_status: item.status.color,
|
|
278
|
-
dataVencimento: item.dueDate,
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
461
|
+
color_status: (item.status && item.status.color) || "",
|
|
462
|
+
dataVencimento: item.dueDate || "",
|
|
463
|
+
dataVencimentoLabel: item.dueDate
|
|
464
|
+
? formatDateYmdTodmY(item.dueDate)
|
|
465
|
+
: "—",
|
|
466
|
+
payer: (firstOrder.payer && firstOrder.payer.name) || "—",
|
|
467
|
+
client: (firstOrder.client && firstOrder.client.name) || "—",
|
|
468
|
+
status: (item.status && item.status.status) || "",
|
|
469
|
+
preco: item.price || 0,
|
|
470
|
+
};
|
|
471
|
+
});
|
|
287
472
|
},
|
|
288
473
|
},
|
|
289
474
|
|
|
@@ -300,6 +485,33 @@ export default {
|
|
|
300
485
|
this.dialogs.orders.visible = true;
|
|
301
486
|
},
|
|
302
487
|
|
|
488
|
+
ordersLabel(orders) {
|
|
489
|
+
const count = Array.isArray(orders) ? orders.length : 0;
|
|
490
|
+
return count === 1 ? "1 pedido" : `${count} pedidos`;
|
|
491
|
+
},
|
|
492
|
+
|
|
493
|
+
statusLabel(status) {
|
|
494
|
+
return status ? this.$t(`invoice.statuses.${status}`) : "—";
|
|
495
|
+
},
|
|
496
|
+
|
|
497
|
+
statusStyle(color) {
|
|
498
|
+
return color ? { color } : {};
|
|
499
|
+
},
|
|
500
|
+
|
|
501
|
+
clearFilters() {
|
|
502
|
+
this.filters.text = null;
|
|
503
|
+
this.filters.orderType = { label: "Todos", value: null };
|
|
504
|
+
this.filters.status = { label: "Todos", value: null };
|
|
505
|
+
this.filters.date = { from: "", to: "" };
|
|
506
|
+
this.pagination.page = 1;
|
|
507
|
+
this.onRequest({ pagination: this.pagination });
|
|
508
|
+
},
|
|
509
|
+
|
|
510
|
+
onFilterRequest() {
|
|
511
|
+
this.pagination.page = 1;
|
|
512
|
+
this.onRequest({ pagination: this.pagination });
|
|
513
|
+
},
|
|
514
|
+
|
|
303
515
|
formatDate(dateString) {
|
|
304
516
|
if (dateString)
|
|
305
517
|
return date.formatDate(
|
|
@@ -311,20 +523,21 @@ export default {
|
|
|
311
523
|
onRequest(props) {
|
|
312
524
|
if (this.isLoading) return;
|
|
313
525
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
526
|
+
const requestedPagination =
|
|
527
|
+
props && props.pagination ? props.pagination : this.pagination;
|
|
528
|
+
const page = Number(requestedPagination.page) || 1;
|
|
529
|
+
const rowsPerPage = Number(requestedPagination.rowsPerPage) || 10;
|
|
317
530
|
|
|
318
|
-
|
|
531
|
+
const params = { itemsPerPage: rowsPerPage, page };
|
|
319
532
|
|
|
320
533
|
params.from = this.formatDate(this.filters.date.from) || "";
|
|
321
534
|
params.to = this.formatDate(this.filters.date.to) || "";
|
|
322
|
-
params.orderType = this.filters.orderType.value || "";
|
|
535
|
+
params.orderType = (this.filters.orderType && this.filters.orderType.value) || "";
|
|
323
536
|
|
|
324
537
|
if (this.filters.text != null && this.filters.text.length > 0) {
|
|
325
538
|
if (this.filters.text.length < 2) return;
|
|
326
539
|
|
|
327
|
-
params
|
|
540
|
+
params.searchBy = this.filters.text.trim();
|
|
328
541
|
}
|
|
329
542
|
|
|
330
543
|
if (this.filters.status != null) {
|
|
@@ -345,15 +558,357 @@ export default {
|
|
|
345
558
|
params["order.order"] = this.orderId;
|
|
346
559
|
}
|
|
347
560
|
|
|
348
|
-
params["invoice[dueDate]"] = "desc";
|
|
349
|
-
|
|
350
561
|
this.getItems(params).then(() => {
|
|
351
|
-
this.pagination
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
562
|
+
this.pagination = {
|
|
563
|
+
...this.pagination,
|
|
564
|
+
page,
|
|
565
|
+
rowsPerPage,
|
|
566
|
+
sortBy: "dataVencimento",
|
|
567
|
+
descending: true,
|
|
568
|
+
};
|
|
355
569
|
});
|
|
356
570
|
},
|
|
357
571
|
},
|
|
358
572
|
};
|
|
359
573
|
</script>
|
|
574
|
+
|
|
575
|
+
<style lang="scss" scoped>
|
|
576
|
+
.receivables-page {
|
|
577
|
+
width: 100%;
|
|
578
|
+
color: #1b2d43;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
.receivables-page__content {
|
|
582
|
+
display: grid;
|
|
583
|
+
width: min(100%, 1480px);
|
|
584
|
+
gap: 20px;
|
|
585
|
+
margin: 0 auto;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
.receivables-summary__card {
|
|
589
|
+
display: flex;
|
|
590
|
+
width: min(100%, 410px);
|
|
591
|
+
min-width: 280px;
|
|
592
|
+
align-items: center;
|
|
593
|
+
gap: 12px;
|
|
594
|
+
margin-left: auto;
|
|
595
|
+
padding: 12px 16px;
|
|
596
|
+
border: 1px solid #e7edf4;
|
|
597
|
+
border-radius: 14px;
|
|
598
|
+
background: #fbfdff;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.receivables-summary__icon {
|
|
602
|
+
display: grid;
|
|
603
|
+
width: 46px;
|
|
604
|
+
height: 46px;
|
|
605
|
+
flex: 0 0 auto;
|
|
606
|
+
place-items: center;
|
|
607
|
+
border-radius: 14px;
|
|
608
|
+
font-size: 22px;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
.receivables-summary__icon--green {
|
|
612
|
+
color: #27805a;
|
|
613
|
+
background: #e8f7ef;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.receivables-summary__copy {
|
|
617
|
+
display: flex;
|
|
618
|
+
min-width: 0;
|
|
619
|
+
flex-direction: column;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
.receivables-summary__copy > span {
|
|
623
|
+
color: #6f7f91;
|
|
624
|
+
font-size: 12px;
|
|
625
|
+
font-weight: 600;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
.receivables-summary__copy strong {
|
|
629
|
+
overflow: hidden;
|
|
630
|
+
margin-top: 2px;
|
|
631
|
+
color: #1a2e45;
|
|
632
|
+
font-size: 24px;
|
|
633
|
+
font-weight: 750;
|
|
634
|
+
letter-spacing: -0.035em;
|
|
635
|
+
text-overflow: ellipsis;
|
|
636
|
+
white-space: nowrap;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
.receivables-summary__copy strong.receivables-summary__amount {
|
|
640
|
+
font-size: clamp(17px, 1.5vw, 22px);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
.receivables-summary__copy small {
|
|
644
|
+
margin-top: 1px;
|
|
645
|
+
color: #93a0af;
|
|
646
|
+
font-size: 11px;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
.receivables-table-panel {
|
|
650
|
+
overflow: hidden;
|
|
651
|
+
border: 1px solid #e5ebf3;
|
|
652
|
+
border-radius: 19px;
|
|
653
|
+
background: #fff;
|
|
654
|
+
box-shadow: 0 12px 32px rgba(25, 48, 78, 0.05);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
.receivables-table-panel__heading {
|
|
658
|
+
display: flex;
|
|
659
|
+
align-items: center;
|
|
660
|
+
justify-content: space-between;
|
|
661
|
+
gap: 20px;
|
|
662
|
+
padding: 23px 25px 19px;
|
|
663
|
+
border-bottom: 1px solid #edf1f6;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
.receivables-section-eyebrow {
|
|
667
|
+
color: #7890aa;
|
|
668
|
+
font-size: 10px;
|
|
669
|
+
font-weight: 750;
|
|
670
|
+
letter-spacing: 0.13em;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
.receivables-table-panel__heading h2 {
|
|
674
|
+
margin: 5px 0 0;
|
|
675
|
+
color: #1a2e45;
|
|
676
|
+
font-size: 19px;
|
|
677
|
+
font-weight: 720;
|
|
678
|
+
letter-spacing: -0.02em;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
.receivables-table {
|
|
682
|
+
color: #33465b;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
.receivables-table :deep(.q-table thead tr) {
|
|
686
|
+
height: 48px;
|
|
687
|
+
background: #f8fafc;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
.receivables-table :deep(.q-table thead th) {
|
|
691
|
+
padding: 0 16px;
|
|
692
|
+
color: #7b8b9c;
|
|
693
|
+
font-size: 10px;
|
|
694
|
+
font-weight: 750;
|
|
695
|
+
letter-spacing: 0.07em;
|
|
696
|
+
text-transform: uppercase;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
.receivables-table :deep(.q-table tbody td) {
|
|
700
|
+
height: 64px;
|
|
701
|
+
padding: 10px 16px;
|
|
702
|
+
border-color: #edf1f5;
|
|
703
|
+
font-size: 12px;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
.receivables-table :deep(.q-table tbody tr) {
|
|
707
|
+
transition: background-color 0.15s ease;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.receivables-table :deep(.q-table tbody tr:hover) {
|
|
711
|
+
background: #f8fbff;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
.receivables-table :deep(.q-table__bottom) {
|
|
715
|
+
min-height: 58px;
|
|
716
|
+
padding: 8px 18px;
|
|
717
|
+
border-top: 1px solid #edf1f5;
|
|
718
|
+
color: #718096;
|
|
719
|
+
font-size: 12px;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
.receivables-invoice-link {
|
|
723
|
+
border-radius: 8px;
|
|
724
|
+
color: #245d9c;
|
|
725
|
+
font-size: 12px;
|
|
726
|
+
font-weight: 750;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
.receivables-invoice-link :deep(.q-icon) {
|
|
730
|
+
font-size: 17px;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
.receivables-type-badge {
|
|
734
|
+
padding: 6px 9px;
|
|
735
|
+
border-radius: 7px;
|
|
736
|
+
color: #526b86;
|
|
737
|
+
background: #eef3f8;
|
|
738
|
+
font-size: 10px;
|
|
739
|
+
font-weight: 650;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
.receivables-orders-link {
|
|
743
|
+
border-radius: 8px;
|
|
744
|
+
font-size: 11px;
|
|
745
|
+
font-weight: 650;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
.receivables-date-cell {
|
|
749
|
+
display: flex;
|
|
750
|
+
align-items: center;
|
|
751
|
+
gap: 7px;
|
|
752
|
+
white-space: nowrap;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.receivables-date-cell .q-icon {
|
|
756
|
+
color: #8294a8;
|
|
757
|
+
font-size: 16px;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
.receivables-status-badge {
|
|
761
|
+
display: inline-flex;
|
|
762
|
+
align-items: center;
|
|
763
|
+
gap: 6px;
|
|
764
|
+
padding: 6px 9px;
|
|
765
|
+
border-radius: 20px;
|
|
766
|
+
background: #f0f4f7;
|
|
767
|
+
font-size: 10px;
|
|
768
|
+
font-weight: 700;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
.receivables-status-badge__dot {
|
|
772
|
+
width: 6px;
|
|
773
|
+
height: 6px;
|
|
774
|
+
border-radius: 50%;
|
|
775
|
+
background: currentColor;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
.receivables-price-cell {
|
|
779
|
+
color: #1e3e5e;
|
|
780
|
+
font-weight: 750;
|
|
781
|
+
white-space: nowrap;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
.receivables-mobile-card {
|
|
785
|
+
margin: 4px 0;
|
|
786
|
+
padding: 16px;
|
|
787
|
+
border-color: #e7edf4;
|
|
788
|
+
border-radius: 15px;
|
|
789
|
+
background: #fff;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
.receivables-mobile-card__top,
|
|
793
|
+
.receivables-mobile-card__actions {
|
|
794
|
+
display: flex;
|
|
795
|
+
align-items: center;
|
|
796
|
+
justify-content: space-between;
|
|
797
|
+
gap: 10px;
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
.receivables-mobile-card__type {
|
|
801
|
+
margin: 6px 0 14px;
|
|
802
|
+
color: #728398;
|
|
803
|
+
font-size: 11px;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
.receivables-mobile-card__grid {
|
|
807
|
+
display: grid;
|
|
808
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
809
|
+
gap: 13px 10px;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
.receivables-mobile-card__grid > div {
|
|
813
|
+
display: flex;
|
|
814
|
+
min-width: 0;
|
|
815
|
+
flex-direction: column;
|
|
816
|
+
gap: 4px;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
.receivables-mobile-card__grid span {
|
|
820
|
+
color: #8795a5;
|
|
821
|
+
font-size: 10px;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
.receivables-mobile-card__grid strong {
|
|
825
|
+
overflow: hidden;
|
|
826
|
+
color: #263b52;
|
|
827
|
+
font-size: 12px;
|
|
828
|
+
font-weight: 650;
|
|
829
|
+
text-overflow: ellipsis;
|
|
830
|
+
white-space: nowrap;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
.receivables-mobile-card__actions {
|
|
834
|
+
margin-top: 16px;
|
|
835
|
+
padding-top: 12px;
|
|
836
|
+
border-top: 1px solid #edf1f5;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
.receivables-orders-dialog {
|
|
840
|
+
display: flex;
|
|
841
|
+
width: min(100%, 520px);
|
|
842
|
+
max-height: min(82vh, 760px);
|
|
843
|
+
flex-direction: column;
|
|
844
|
+
overflow: hidden;
|
|
845
|
+
border-radius: 18px;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
.receivables-orders-dialog__list {
|
|
849
|
+
min-height: 0;
|
|
850
|
+
flex: 1 1 auto;
|
|
851
|
+
overflow-y: auto;
|
|
852
|
+
overscroll-behavior: contain;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
.receivables-orders-dialog__header {
|
|
856
|
+
display: flex;
|
|
857
|
+
align-items: center;
|
|
858
|
+
justify-content: space-between;
|
|
859
|
+
gap: 12px;
|
|
860
|
+
padding: 20px 22px;
|
|
861
|
+
color: #fff;
|
|
862
|
+
background: #173f68;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
.receivables-orders-dialog__header span {
|
|
866
|
+
color: #c7d9eb;
|
|
867
|
+
font-size: 9px;
|
|
868
|
+
font-weight: 750;
|
|
869
|
+
letter-spacing: 0.12em;
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
.receivables-orders-dialog__header h3 {
|
|
873
|
+
margin: 5px 0 0;
|
|
874
|
+
font-size: 17px;
|
|
875
|
+
font-weight: 700;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
.receivables-orders-dialog__header .q-btn {
|
|
879
|
+
color: #fff;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
@media (max-width: 600px) {
|
|
883
|
+
.receivables-page__content {
|
|
884
|
+
gap: 14px;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
.receivables-summary__card {
|
|
888
|
+
padding: 14px 16px;
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
.receivables-summary__icon {
|
|
892
|
+
width: 40px;
|
|
893
|
+
height: 40px;
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
.receivables-table-panel {
|
|
897
|
+
border-radius: 16px;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
.receivables-table-panel__heading {
|
|
901
|
+
align-items: flex-start;
|
|
902
|
+
flex-direction: column;
|
|
903
|
+
gap: 12px;
|
|
904
|
+
padding: 18px 17px 14px;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
.receivables-summary__card {
|
|
908
|
+
width: 100%;
|
|
909
|
+
min-width: 0;
|
|
910
|
+
margin-left: 0;
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
}
|
|
914
|
+
</style>
|