@nixweb/nixloc-ui 1.9.0 → 1.11.0

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.
Files changed (68) hide show
  1. package/@nixweb/nixloc-ui/package.json +88 -88
  2. package/@nixweb/nixloc-ui/src/App.vue +13 -13
  3. package/@nixweb/nixloc-ui/src/component/forms/Button.vue +163 -163
  4. package/@nixweb/nixloc-ui/src/component/forms/CheckboxGroup.vue +69 -69
  5. package/@nixweb/nixloc-ui/src/component/forms/CheckboxServer.vue +192 -192
  6. package/@nixweb/nixloc-ui/src/component/forms/CheckboxSimple.vue +60 -60
  7. package/@nixweb/nixloc-ui/src/component/forms/Color.vue +38 -38
  8. package/@nixweb/nixloc-ui/src/component/forms/DateTime.vue +170 -170
  9. package/@nixweb/nixloc-ui/src/component/forms/Dropdown.vue +236 -236
  10. package/@nixweb/nixloc-ui/src/component/forms/EditorHtml.vue +132 -132
  11. package/@nixweb/nixloc-ui/src/component/forms/FileUpload.vue +170 -170
  12. package/@nixweb/nixloc-ui/src/component/forms/InputDecimal.vue +153 -153
  13. package/@nixweb/nixloc-ui/src/component/forms/InputNumber.vue +160 -160
  14. package/@nixweb/nixloc-ui/src/component/forms/InputPassword.vue +148 -148
  15. package/@nixweb/nixloc-ui/src/component/forms/InputText.vue +174 -174
  16. package/@nixweb/nixloc-ui/src/component/forms/Modal.vue +57 -57
  17. package/@nixweb/nixloc-ui/src/component/forms/RadioGroup.vue +91 -91
  18. package/@nixweb/nixloc-ui/src/component/forms/Select.vue +378 -378
  19. package/@nixweb/nixloc-ui/src/component/forms/SelectStatic.vue +198 -198
  20. package/@nixweb/nixloc-ui/src/component/forms/Slider.vue +18 -18
  21. package/@nixweb/nixloc-ui/src/component/forms/TextArea.vue +138 -138
  22. package/@nixweb/nixloc-ui/src/component/layout/Alert.vue +88 -88
  23. package/@nixweb/nixloc-ui/src/component/layout/Badge.vue +111 -111
  24. package/@nixweb/nixloc-ui/src/component/layout/FixedBar.vue +103 -103
  25. package/@nixweb/nixloc-ui/src/component/layout/Header.vue +56 -56
  26. package/@nixweb/nixloc-ui/src/component/layout/LoadingFullPage.vue +27 -27
  27. package/@nixweb/nixloc-ui/src/component/layout/Menu.vue +287 -287
  28. package/@nixweb/nixloc-ui/src/component/layout/Molded.vue +30 -30
  29. package/@nixweb/nixloc-ui/src/component/layout/Panel.vue +185 -185
  30. package/@nixweb/nixloc-ui/src/component/layout/Popover.vue +126 -126
  31. package/@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue +57 -57
  32. package/@nixweb/nixloc-ui/src/component/layout/Wizard.vue +211 -211
  33. package/@nixweb/nixloc-ui/src/component/shared/Collapse.vue +131 -131
  34. package/@nixweb/nixloc-ui/src/component/shared/ExportPDF.vue +116 -116
  35. package/@nixweb/nixloc-ui/src/component/shared/HorizontalFilter.vue +64 -64
  36. package/@nixweb/nixloc-ui/src/component/shared/Loading.vue +107 -107
  37. package/@nixweb/nixloc-ui/src/component/shared/LoadingMoreButton.vue +23 -23
  38. package/@nixweb/nixloc-ui/src/component/shared/Messages.vue +109 -109
  39. package/@nixweb/nixloc-ui/src/component/shared/PDFViewer.vue +24 -24
  40. package/@nixweb/nixloc-ui/src/component/shared/Pagination.vue +108 -108
  41. package/@nixweb/nixloc-ui/src/component/shared/ProgressBar.vue +25 -25
  42. package/@nixweb/nixloc-ui/src/component/shared/QueryButton.vue +66 -66
  43. package/@nixweb/nixloc-ui/src/component/shared/Search.vue +174 -174
  44. package/@nixweb/nixloc-ui/src/component/shared/Table.vue +174 -174
  45. package/@nixweb/nixloc-ui/src/component/shared/TableButton.vue +36 -36
  46. package/@nixweb/nixloc-ui/src/component/shared/TableTotalization.vue +47 -47
  47. package/@nixweb/nixloc-ui/src/component/shared/Tip.vue +42 -42
  48. package/@nixweb/nixloc-ui/src/component/shared/Toast.vue +69 -69
  49. package/@nixweb/nixloc-ui/src/component/shared/VerticalFilter.vue +97 -97
  50. package/@nixweb/nixloc-ui/src/component/shared/query-builder/AddRule.vue +203 -203
  51. package/@nixweb/nixloc-ui/src/component/shared/query-builder/DynamicComponentList.vue +70 -70
  52. package/@nixweb/nixloc-ui/src/component/shared/query-builder/QueryBuilder.vue +69 -69
  53. package/@nixweb/nixloc-ui/src/component/shared/query-builder/utilities.js +21 -21
  54. package/@nixweb/nixloc-ui/src/component/template/ListViewWithDataHandler.vue +429 -429
  55. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateConfiguration.vue +64 -64
  56. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateWithSalveCancel.vue +32 -32
  57. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateWithTable.vue +62 -62
  58. package/@nixweb/nixloc-ui/src/config/axios.js +9 -9
  59. package/@nixweb/nixloc-ui/src/config/dicas.js +14 -14
  60. package/@nixweb/nixloc-ui/src/config/router.js +13 -13
  61. package/@nixweb/nixloc-ui/src/config/token.js +14 -14
  62. package/@nixweb/nixloc-ui/src/main.js +23 -23
  63. package/@nixweb/nixloc-ui/src/store/modules/generic.js +815 -815
  64. package/@nixweb/nixloc-ui/src/store/modules/validation.js +38 -38
  65. package/@nixweb/nixloc-ui/src/store/store.js +13 -13
  66. package/package.json +1 -1
  67. package/src/component/training/CourseView.vue +16 -7
  68. package/src/component/value-objects/Address.vue +4 -2
@@ -1,429 +1,429 @@
1
- <template>
2
- <div>
3
- <div :class="{ 'g-div-molded': showMolded }">
4
- <b-row>
5
- <b-col sm="12">
6
- <div>
7
- <!-- <HorizontalFilter v-if="showHorizontalFilter">
8
- <div slot="content-filter-horizontal">
9
- <slot name="content-filter-horizontal"></slot>
10
- </div>
11
- </HorizontalFilter> -->
12
- <TableTotalPerPage />
13
- </div>
14
- </b-col>
15
- </b-row>
16
- <br>
17
- <b-row>
18
- <b-col sm="8">
19
- <div v-if="templateList.dragAndDrop">
20
- <i class="fa-regular fa-maximize"></i> Clique e arraste para ordenar
21
- </div>
22
- <TableTotalization :totalization="content.totalization" />
23
- </b-col>
24
- <b-col sm="4">
25
- <TableTotalRecords :totalRecords="content.totalRecords" />
26
- </b-col>
27
- </b-row>
28
- <Loading type="line" :center="false" v-show="isLoading('loadingLine')" />
29
- <BarFloating>
30
- <div class="fixed-bar-options" v-show="selected.length > 0">
31
- <div class="side-by-side">
32
- <Button v-if="buttonRemove" key="remove" :title="`Remover ${selected.length}`" type="danger" size="small"
33
- :clicked="confirmRemoved" />
34
- </div>
35
- <div class="side-by-side">
36
- <slot name="content-buttons-table-header"></slot>
37
- </div>
38
- </div>
39
- </BarFloating>
40
- <Table :header="templateList.headerTable" :data="content.data" :showChecks="templateList.showChecks"
41
- :dragAndDrop="templateList.dragAndDrop">
42
- <div slot="content-buttons-table">
43
- <slot name="content-buttons-table"></slot>
44
- </div>
45
- </Table>
46
- </div>
47
- <br />
48
- <Pagination _key="templateList" :totalRecords="content.totalRecords" />
49
- <Modal title="Tem certeza que deseja remover?" :width="500" v-show="showModal('confirmRemoved')">
50
- <Alert type="warning">
51
- <span>
52
- ATENÇÃO, todos os registros relacionados também serão excluídos/cancelados, esta ação é irreversível...
53
- </span>
54
- </Alert>
55
- <InputText title="Digite Remover para confirmar" :maxLength="7" :required="false" v-model="confirmRemove" />
56
- <Confirmation :isModal="false" :disabled="confirmRemove != 'Remover'" title="Você tem certeza?" type="danger"
57
- :confirmed="removeSelected" />
58
- </Modal>
59
- </div>
60
- </template>
61
-
62
- <script>
63
- import Pagination from "@nixweb/nixloc-ui/src/component/shared/Pagination.vue";
64
- import TableTotalPerPage from "@nixweb/nixloc-ui/src/component/shared/TableTotalPerPage.vue";
65
- import Table from "../shared/Table.vue";
66
- import Button from "../forms/Button.vue";
67
- import FixedBar from "../layout/FixedBar.vue";
68
- import BarFloating from "@nixweb/nixloc-ui/src/component/layout/BarFloating.vue";
69
- import TableTotalRecords from "../shared/TableTotalRecords.vue";
70
- import TableTotalization from "../shared/TableTotalization.vue";
71
- import HorizontalFilter from "../shared/HorizontalFilter.vue";
72
- import Loading from "../shared/Loading.vue";
73
- import Confirmation from "@nixweb/nixloc-ui/src/component/shared/Confirmation.vue";
74
- import Alert from "@nixweb/nixloc-ui/src/component/layout/Alert";
75
- import Modal from "@nixweb/nixloc-ui/src/component/forms/Modal";
76
- import InputText from "@nixweb/nixloc-ui/src/component/forms/InputText";
77
-
78
- import { mapState, mapGetters, mapActions, mapMutations } from "vuex";
79
-
80
- export default {
81
- name: "ListViewWithDataHandler",
82
- props: {
83
- templateList: Object,
84
- propsParam: Object,
85
- showMolded: {
86
- type: Boolean,
87
- default: true,
88
- },
89
- showHorizontalFilter: {
90
- type: Boolean,
91
- default: true,
92
- },
93
- buttonRemove: {
94
- type: Boolean,
95
- default: true,
96
- },
97
- isFilterStorage: {
98
- type: Boolean,
99
- default: false
100
- }
101
- },
102
- components: {
103
- HorizontalFilter,
104
- TableTotalization,
105
- TableTotalRecords,
106
- Confirmation,
107
- BarFloating,
108
- Alert,
109
- Modal,
110
- Loading,
111
- FixedBar,
112
- Button,
113
- Table,
114
- InputText,
115
- Pagination,
116
- TableTotalPerPage
117
- },
118
- data() {
119
- return {
120
- content: {
121
- data: [],
122
- totalRecords: 0,
123
- },
124
- baseParams: {
125
- search: "",
126
- filter: "contains",
127
- currentPage: 1,
128
- totalPerPage: 10,
129
- },
130
- paramsFilter: [],
131
- dynamicFilter: {},
132
- confirmRemove: "",
133
- };
134
- },
135
- created() {
136
- var filter = this.getFilterStorage(this.$route.name);
137
- if (filter) {
138
- this.updateCurrentPage(filter.baseParams.currentPage);
139
- }
140
- this.getAll();
141
- },
142
- beforeDestroy() {
143
- let search = { content: "", filter: { content: "Contém", id: "contains" } };
144
- this.updateSearch(search);
145
- this.cleanTags();
146
- },
147
- computed: {
148
- ...mapState("generic", [
149
- "selected",
150
- "methodExecutedApi",
151
- "search",
152
- "executedSearch",
153
- "clearedSearch",
154
- "totalPerPage",
155
- "selectStatic",
156
- "paginations",
157
- "filterStorage",
158
- "tags"
159
- ]),
160
- ...mapGetters("generic", ["isLoading", "getFilterStorage", "event", "showModal"]),
161
- },
162
- methods: {
163
- ...mapActions("generic", ["getApi", "orderAllApi", "deleteAllApi"]),
164
- ...mapMutations("generic", [
165
- "addEvent",
166
- "addLoading",
167
- "removeLoading",
168
- "addSelected",
169
- "updateSearch",
170
- "updateCurrentPage",
171
- "addTag",
172
- "removeTag",
173
- "cleanTags",
174
- "openModal",
175
- "hideModal",
176
- "addFilterStorage",
177
- "removeFilterStorage"
178
- ]),
179
- getAll() {
180
- this.addLoading("loadingLine");
181
- var filter = this.getFilterStorage(this.$route.name);
182
-
183
- let self = this;
184
- if (filter) {
185
- this.baseParams = filter.baseParams;
186
- this.dynamicFilter = filter.dynamicFilter;
187
- this.propsParam = filter.propsParam;
188
- this.paramsFilter = filter.paramsFilter;
189
-
190
- setTimeout(function () {
191
- let search = { content: filter.baseParams.search, filter: { content: "Contém", id: "contains" } };
192
- self.updateSearch(search);
193
- self.updateCurrentPage(filter.baseParams.currentPage);
194
- self.generateDynamicFilter();
195
- }, 200);
196
- }
197
-
198
- setTimeout(function () {
199
- let obj = {
200
- ...self.baseParams,
201
- ...self.dynamicFilter,
202
- ...self.propsParam,
203
- };
204
-
205
- let params = { url: self.templateList.urlGetApi, obj: obj };
206
- self.getApi(params).then((response) => {
207
- self.content = response.content;
208
- setTimeout(function () {
209
- self.removeLoading(["panel", "loadingLine", "btnSearch", "btnClean"]);
210
- }, 350);
211
- });
212
- }, 250);
213
- },
214
- orderAll(data) {
215
- if (this.templateList.urlOrderAllApi) {
216
- let obj = { listIds: data.listIds };
217
-
218
- let params = {
219
- url: this.templateList.urlOrderAllApi,
220
- obj: obj,
221
- notNotifyToast: true,
222
- };
223
-
224
- this.orderAllApi(params).then((response) => { });
225
- }
226
- },
227
- selectFilter(value) {
228
-
229
- let fieldTarget = value.fieldTarget;
230
-
231
- if (fieldTarget != "totalPerPage") {
232
- let obj = { tag: value.tag, key: fieldTarget, value: value.value };
233
-
234
- if (obj.value !== "") {
235
- const existingIndex = this.paramsFilter.findIndex(item => item.key === obj.key);
236
- if (existingIndex !== -1) {
237
- // Se já existe, atualiza o valor
238
- this.paramsFilter[existingIndex] = obj;
239
- } else {
240
- // Se não existe, adiciona ao paramsFilter
241
- this.paramsFilter.push(obj);
242
- }
243
- }
244
- } else { this.baseParams.currentPage = 1; }
245
- this.convertToObjectAndGetAll();
246
- },
247
- convertToObjectAndGetAll() {
248
- this.generateDynamicFilter();
249
- this.getAll();
250
- },
251
- generateDynamicFilter() {
252
- var result = {};
253
- for (var i = 0; i < this.paramsFilter.length; i++) {
254
- let key = this.paramsFilter[i].key;
255
- let value = this.paramsFilter[i].value;
256
- let tag = this.paramsFilter[i].tag;
257
-
258
- if (key == "period") {
259
- result["start"] = value.start;
260
- result["end"] = value.end;
261
-
262
- if (value.start)
263
- tag = `Período: ${value.start}-${value.end}`;
264
-
265
- } else {
266
- result[key] = value;
267
- }
268
-
269
- result["tag"] = tag;
270
-
271
- if (tag) {
272
- this.removeTag(key); // para não duplicar
273
- this.addTag({ tag: tag, key: key });
274
- } else {
275
- this.removeTag(key);
276
- }
277
- }
278
-
279
- this.dynamicFilter = result;
280
- },
281
- confirmRemoved() {
282
- this.confirmRemove = "";
283
- this.removeLoading(["remove"]);
284
- this.openModal("confirmRemoved");
285
-
286
- },
287
- removeSelected() {
288
- let params = {
289
- url: this.templateList.urlDeleteAllApi,
290
- selected: this.selected,
291
- };
292
- this.deleteAllApi(params).then(() => {
293
- this.hideModal("confirmRemoved");
294
- this.removeLoading(["confirm"]);
295
- this.addSelected([]);
296
- });
297
- },
298
- cleanParams() {
299
- this.baseParams.currentPage = 1;
300
- },
301
- addStorage() {
302
- let obj =
303
- {
304
- key: this.$route.name,
305
- baseParams: this.baseParams,
306
- dynamicFilter: this.dynamicFilter,
307
- propsParam: this.propsParam,
308
- paramsFilter: this.paramsFilter
309
- };
310
-
311
- if (this.isFilterStorage)
312
- this.addFilterStorage(obj);
313
- }
314
- },
315
- watch: {
316
- event: {
317
- handler(event) {
318
- if (event.name == "tableDragAndDrop") this.orderAll(event.data);
319
-
320
- if (event.name == "stringFilter") {
321
- this.getAll();
322
- }
323
-
324
- if (event.name == "tagRemoved") {
325
-
326
- this.removeTag(event.data);
327
-
328
- let filter = this.paramsFilter.filter(x => x.key != event.data);
329
- this.paramsFilter = filter;
330
-
331
- this.addStorage();
332
- this.getAll();
333
- }
334
-
335
- if (event.name == "filterStorageRemoved") {
336
-
337
- let self = this;
338
- this.tags.forEach(tag => {
339
- self.removeTag(tag.key);
340
- self.addEvent({ name: "tagRemoved", data: tag.key });
341
- });
342
-
343
- this.paramsFilter = [];
344
-
345
- this.baseParams.search = "";
346
- this.baseParams.filter = "contains";
347
- this.baseParams.currentPage = 1;
348
- this.baseParams.totalPerPage = 10;
349
- this.propsParam = {};
350
-
351
-
352
-
353
- this.addStorage();
354
- this.getAll();
355
- }
356
-
357
-
358
-
359
- if (event.name == "getAllListViewWithDataHandler") {
360
- this.addSelected([]);
361
- this.getAll();
362
- }
363
-
364
- if (event.name == "page-click") {
365
- this.baseParams.currentPage = event.data;
366
- this.addStorage();
367
- this.getAll();
368
- }
369
- },
370
- deep: true,
371
- },
372
- methodExecutedApi: function (value) {
373
- if (
374
- value === "postApi" ||
375
- value === "putApi" ||
376
- value === "deleteAllApi" ||
377
- value === "deleteAllApiErro"
378
- ) {
379
- this.getAll();
380
- }
381
- },
382
- executedSearch: function () {
383
- this.addStorage();
384
-
385
- this.baseParams.search = this.search.content;
386
- if (this.search.filter.id) this.baseParams.filter = this.search.filter.id;
387
- this.cleanParams();
388
- this.getAll();
389
- },
390
- clearedSearch: function () {
391
- this.baseParams.search = "";
392
- this.baseParams.filter = "";
393
- this.cleanParams();
394
- this.getAll();
395
- },
396
- selectStatic: {
397
- handler(value) {
398
- this.selectFilter(value);
399
- },
400
- deep: true,
401
- },
402
- dynamicFilter: {
403
- handler(value) {
404
- this.addStorage();
405
- },
406
- deep: true,
407
- },
408
- propsParam: {
409
- handler(value) {
410
- this.addStorage();
411
- },
412
- deep: true,
413
- },
414
- paginations: {
415
- handler(value) {
416
- this.baseParams.totalPerPage = value.totalPerPage;
417
- this.addStorage();
418
- },
419
- deep: true,
420
- },
421
- },
422
- };
423
- </script>
424
-
425
- <style scoped>
426
- .div-button-excluir {
427
- padding-bottom: 10px;
428
- }
429
- </style>
1
+ <template>
2
+ <div>
3
+ <div :class="{ 'g-div-molded': showMolded }">
4
+ <b-row>
5
+ <b-col sm="12">
6
+ <div>
7
+ <!-- <HorizontalFilter v-if="showHorizontalFilter">
8
+ <div slot="content-filter-horizontal">
9
+ <slot name="content-filter-horizontal"></slot>
10
+ </div>
11
+ </HorizontalFilter> -->
12
+ <TableTotalPerPage />
13
+ </div>
14
+ </b-col>
15
+ </b-row>
16
+ <br>
17
+ <b-row>
18
+ <b-col sm="8">
19
+ <div v-if="templateList.dragAndDrop">
20
+ <i class="fa-regular fa-maximize"></i> Clique e arraste para ordenar
21
+ </div>
22
+ <TableTotalization :totalization="content.totalization" />
23
+ </b-col>
24
+ <b-col sm="4">
25
+ <TableTotalRecords :totalRecords="content.totalRecords" />
26
+ </b-col>
27
+ </b-row>
28
+ <Loading type="line" :center="false" v-show="isLoading('loadingLine')" />
29
+ <BarFloating>
30
+ <div class="fixed-bar-options" v-show="selected.length > 0">
31
+ <div class="side-by-side">
32
+ <Button v-if="buttonRemove" key="remove" :title="`Remover ${selected.length}`" type="danger" size="small"
33
+ :clicked="confirmRemoved" />
34
+ </div>
35
+ <div class="side-by-side">
36
+ <slot name="content-buttons-table-header"></slot>
37
+ </div>
38
+ </div>
39
+ </BarFloating>
40
+ <Table :header="templateList.headerTable" :data="content.data" :showChecks="templateList.showChecks"
41
+ :dragAndDrop="templateList.dragAndDrop">
42
+ <div slot="content-buttons-table">
43
+ <slot name="content-buttons-table"></slot>
44
+ </div>
45
+ </Table>
46
+ </div>
47
+ <br />
48
+ <Pagination _key="templateList" :totalRecords="content.totalRecords" />
49
+ <Modal title="Tem certeza que deseja remover?" :width="500" v-show="showModal('confirmRemoved')">
50
+ <Alert type="warning">
51
+ <span>
52
+ ATENÇÃO, todos os registros relacionados também serão excluídos/cancelados, esta ação é irreversível...
53
+ </span>
54
+ </Alert>
55
+ <InputText title="Digite Remover para confirmar" :maxLength="7" :required="false" v-model="confirmRemove" />
56
+ <Confirmation :isModal="false" :disabled="confirmRemove != 'Remover'" title="Você tem certeza?" type="danger"
57
+ :confirmed="removeSelected" />
58
+ </Modal>
59
+ </div>
60
+ </template>
61
+
62
+ <script>
63
+ import Pagination from "@nixweb/nixloc-ui/src/component/shared/Pagination.vue";
64
+ import TableTotalPerPage from "@nixweb/nixloc-ui/src/component/shared/TableTotalPerPage.vue";
65
+ import Table from "../shared/Table.vue";
66
+ import Button from "../forms/Button.vue";
67
+ import FixedBar from "../layout/FixedBar.vue";
68
+ import BarFloating from "@nixweb/nixloc-ui/src/component/layout/BarFloating.vue";
69
+ import TableTotalRecords from "../shared/TableTotalRecords.vue";
70
+ import TableTotalization from "../shared/TableTotalization.vue";
71
+ import HorizontalFilter from "../shared/HorizontalFilter.vue";
72
+ import Loading from "../shared/Loading.vue";
73
+ import Confirmation from "@nixweb/nixloc-ui/src/component/shared/Confirmation.vue";
74
+ import Alert from "@nixweb/nixloc-ui/src/component/layout/Alert";
75
+ import Modal from "@nixweb/nixloc-ui/src/component/forms/Modal";
76
+ import InputText from "@nixweb/nixloc-ui/src/component/forms/InputText";
77
+
78
+ import { mapState, mapGetters, mapActions, mapMutations } from "vuex";
79
+
80
+ export default {
81
+ name: "ListViewWithDataHandler",
82
+ props: {
83
+ templateList: Object,
84
+ propsParam: Object,
85
+ showMolded: {
86
+ type: Boolean,
87
+ default: true,
88
+ },
89
+ showHorizontalFilter: {
90
+ type: Boolean,
91
+ default: true,
92
+ },
93
+ buttonRemove: {
94
+ type: Boolean,
95
+ default: true,
96
+ },
97
+ isFilterStorage: {
98
+ type: Boolean,
99
+ default: false
100
+ }
101
+ },
102
+ components: {
103
+ HorizontalFilter,
104
+ TableTotalization,
105
+ TableTotalRecords,
106
+ Confirmation,
107
+ BarFloating,
108
+ Alert,
109
+ Modal,
110
+ Loading,
111
+ FixedBar,
112
+ Button,
113
+ Table,
114
+ InputText,
115
+ Pagination,
116
+ TableTotalPerPage
117
+ },
118
+ data() {
119
+ return {
120
+ content: {
121
+ data: [],
122
+ totalRecords: 0,
123
+ },
124
+ baseParams: {
125
+ search: "",
126
+ filter: "contains",
127
+ currentPage: 1,
128
+ totalPerPage: 10,
129
+ },
130
+ paramsFilter: [],
131
+ dynamicFilter: {},
132
+ confirmRemove: "",
133
+ };
134
+ },
135
+ created() {
136
+ var filter = this.getFilterStorage(this.$route.name);
137
+ if (filter) {
138
+ this.updateCurrentPage(filter.baseParams.currentPage);
139
+ }
140
+ this.getAll();
141
+ },
142
+ beforeDestroy() {
143
+ let search = { content: "", filter: { content: "Contém", id: "contains" } };
144
+ this.updateSearch(search);
145
+ this.cleanTags();
146
+ },
147
+ computed: {
148
+ ...mapState("generic", [
149
+ "selected",
150
+ "methodExecutedApi",
151
+ "search",
152
+ "executedSearch",
153
+ "clearedSearch",
154
+ "totalPerPage",
155
+ "selectStatic",
156
+ "paginations",
157
+ "filterStorage",
158
+ "tags"
159
+ ]),
160
+ ...mapGetters("generic", ["isLoading", "getFilterStorage", "event", "showModal"]),
161
+ },
162
+ methods: {
163
+ ...mapActions("generic", ["getApi", "orderAllApi", "deleteAllApi"]),
164
+ ...mapMutations("generic", [
165
+ "addEvent",
166
+ "addLoading",
167
+ "removeLoading",
168
+ "addSelected",
169
+ "updateSearch",
170
+ "updateCurrentPage",
171
+ "addTag",
172
+ "removeTag",
173
+ "cleanTags",
174
+ "openModal",
175
+ "hideModal",
176
+ "addFilterStorage",
177
+ "removeFilterStorage"
178
+ ]),
179
+ getAll() {
180
+ this.addLoading("loadingLine");
181
+ var filter = this.getFilterStorage(this.$route.name);
182
+
183
+ let self = this;
184
+ if (filter) {
185
+ this.baseParams = filter.baseParams;
186
+ this.dynamicFilter = filter.dynamicFilter;
187
+ this.propsParam = filter.propsParam;
188
+ this.paramsFilter = filter.paramsFilter;
189
+
190
+ setTimeout(function () {
191
+ let search = { content: filter.baseParams.search, filter: { content: "Contém", id: "contains" } };
192
+ self.updateSearch(search);
193
+ self.updateCurrentPage(filter.baseParams.currentPage);
194
+ self.generateDynamicFilter();
195
+ }, 200);
196
+ }
197
+
198
+ setTimeout(function () {
199
+ let obj = {
200
+ ...self.baseParams,
201
+ ...self.dynamicFilter,
202
+ ...self.propsParam,
203
+ };
204
+
205
+ let params = { url: self.templateList.urlGetApi, obj: obj };
206
+ self.getApi(params).then((response) => {
207
+ self.content = response.content;
208
+ setTimeout(function () {
209
+ self.removeLoading(["panel", "loadingLine", "btnSearch", "btnClean"]);
210
+ }, 350);
211
+ });
212
+ }, 250);
213
+ },
214
+ orderAll(data) {
215
+ if (this.templateList.urlOrderAllApi) {
216
+ let obj = { listIds: data.listIds };
217
+
218
+ let params = {
219
+ url: this.templateList.urlOrderAllApi,
220
+ obj: obj,
221
+ notNotifyToast: true,
222
+ };
223
+
224
+ this.orderAllApi(params).then((response) => { });
225
+ }
226
+ },
227
+ selectFilter(value) {
228
+
229
+ let fieldTarget = value.fieldTarget;
230
+
231
+ if (fieldTarget != "totalPerPage") {
232
+ let obj = { tag: value.tag, key: fieldTarget, value: value.value };
233
+
234
+ if (obj.value !== "") {
235
+ const existingIndex = this.paramsFilter.findIndex(item => item.key === obj.key);
236
+ if (existingIndex !== -1) {
237
+ // Se já existe, atualiza o valor
238
+ this.paramsFilter[existingIndex] = obj;
239
+ } else {
240
+ // Se não existe, adiciona ao paramsFilter
241
+ this.paramsFilter.push(obj);
242
+ }
243
+ }
244
+ } else { this.baseParams.currentPage = 1; }
245
+ this.convertToObjectAndGetAll();
246
+ },
247
+ convertToObjectAndGetAll() {
248
+ this.generateDynamicFilter();
249
+ this.getAll();
250
+ },
251
+ generateDynamicFilter() {
252
+ var result = {};
253
+ for (var i = 0; i < this.paramsFilter.length; i++) {
254
+ let key = this.paramsFilter[i].key;
255
+ let value = this.paramsFilter[i].value;
256
+ let tag = this.paramsFilter[i].tag;
257
+
258
+ if (key == "period") {
259
+ result["start"] = value.start;
260
+ result["end"] = value.end;
261
+
262
+ if (value.start)
263
+ tag = `Período: ${value.start}-${value.end}`;
264
+
265
+ } else {
266
+ result[key] = value;
267
+ }
268
+
269
+ result["tag"] = tag;
270
+
271
+ if (tag) {
272
+ this.removeTag(key); // para não duplicar
273
+ this.addTag({ tag: tag, key: key });
274
+ } else {
275
+ this.removeTag(key);
276
+ }
277
+ }
278
+
279
+ this.dynamicFilter = result;
280
+ },
281
+ confirmRemoved() {
282
+ this.confirmRemove = "";
283
+ this.removeLoading(["remove"]);
284
+ this.openModal("confirmRemoved");
285
+
286
+ },
287
+ removeSelected() {
288
+ let params = {
289
+ url: this.templateList.urlDeleteAllApi,
290
+ selected: this.selected,
291
+ };
292
+ this.deleteAllApi(params).then(() => {
293
+ this.hideModal("confirmRemoved");
294
+ this.removeLoading(["confirm"]);
295
+ this.addSelected([]);
296
+ });
297
+ },
298
+ cleanParams() {
299
+ this.baseParams.currentPage = 1;
300
+ },
301
+ addStorage() {
302
+ let obj =
303
+ {
304
+ key: this.$route.name,
305
+ baseParams: this.baseParams,
306
+ dynamicFilter: this.dynamicFilter,
307
+ propsParam: this.propsParam,
308
+ paramsFilter: this.paramsFilter
309
+ };
310
+
311
+ if (this.isFilterStorage)
312
+ this.addFilterStorage(obj);
313
+ }
314
+ },
315
+ watch: {
316
+ event: {
317
+ handler(event) {
318
+ if (event.name == "tableDragAndDrop") this.orderAll(event.data);
319
+
320
+ if (event.name == "stringFilter") {
321
+ this.getAll();
322
+ }
323
+
324
+ if (event.name == "tagRemoved") {
325
+
326
+ this.removeTag(event.data);
327
+
328
+ let filter = this.paramsFilter.filter(x => x.key != event.data);
329
+ this.paramsFilter = filter;
330
+
331
+ this.addStorage();
332
+ this.getAll();
333
+ }
334
+
335
+ if (event.name == "filterStorageRemoved") {
336
+
337
+ let self = this;
338
+ this.tags.forEach(tag => {
339
+ self.removeTag(tag.key);
340
+ self.addEvent({ name: "tagRemoved", data: tag.key });
341
+ });
342
+
343
+ this.paramsFilter = [];
344
+
345
+ this.baseParams.search = "";
346
+ this.baseParams.filter = "contains";
347
+ this.baseParams.currentPage = 1;
348
+ this.baseParams.totalPerPage = 10;
349
+ this.propsParam = {};
350
+
351
+
352
+
353
+ this.addStorage();
354
+ this.getAll();
355
+ }
356
+
357
+
358
+
359
+ if (event.name == "getAllListViewWithDataHandler") {
360
+ this.addSelected([]);
361
+ this.getAll();
362
+ }
363
+
364
+ if (event.name == "page-click") {
365
+ this.baseParams.currentPage = event.data;
366
+ this.addStorage();
367
+ this.getAll();
368
+ }
369
+ },
370
+ deep: true,
371
+ },
372
+ methodExecutedApi: function (value) {
373
+ if (
374
+ value === "postApi" ||
375
+ value === "putApi" ||
376
+ value === "deleteAllApi" ||
377
+ value === "deleteAllApiErro"
378
+ ) {
379
+ this.getAll();
380
+ }
381
+ },
382
+ executedSearch: function () {
383
+ this.addStorage();
384
+
385
+ this.baseParams.search = this.search.content;
386
+ if (this.search.filter.id) this.baseParams.filter = this.search.filter.id;
387
+ this.cleanParams();
388
+ this.getAll();
389
+ },
390
+ clearedSearch: function () {
391
+ this.baseParams.search = "";
392
+ this.baseParams.filter = "";
393
+ this.cleanParams();
394
+ this.getAll();
395
+ },
396
+ selectStatic: {
397
+ handler(value) {
398
+ this.selectFilter(value);
399
+ },
400
+ deep: true,
401
+ },
402
+ dynamicFilter: {
403
+ handler(value) {
404
+ this.addStorage();
405
+ },
406
+ deep: true,
407
+ },
408
+ propsParam: {
409
+ handler(value) {
410
+ this.addStorage();
411
+ },
412
+ deep: true,
413
+ },
414
+ paginations: {
415
+ handler(value) {
416
+ this.baseParams.totalPerPage = value.totalPerPage;
417
+ this.addStorage();
418
+ },
419
+ deep: true,
420
+ },
421
+ },
422
+ };
423
+ </script>
424
+
425
+ <style scoped>
426
+ .div-button-excluir {
427
+ padding-bottom: 10px;
428
+ }
429
+ </style>