@nixweb/nixloc-ui 0.0.300 → 0.0.301

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 (158) hide show
  1. package/package.json +1 -1
  2. package/src/App.vue +13 -0
  3. package/src/component/forms/Button.vue +163 -0
  4. package/src/component/forms/ButtonFilter.vue +75 -0
  5. package/src/component/forms/ButtonGroup.vue +67 -0
  6. package/src/component/forms/ButtonSub.vue +98 -0
  7. package/src/component/forms/ButtonToggle.vue +77 -0
  8. package/src/component/forms/CheckboxGroup.vue +69 -0
  9. package/src/component/forms/CheckboxServer.vue +192 -0
  10. package/src/component/forms/CheckboxSimple.vue +60 -0
  11. package/src/component/forms/Color.vue +38 -0
  12. package/src/component/forms/DateTime.vue +170 -0
  13. package/src/component/forms/DateYearMonth.vue +193 -0
  14. package/src/component/forms/Dropdown.vue +236 -0
  15. package/src/component/forms/EditorHtml.vue +132 -0
  16. package/src/component/forms/FileUpload.vue +170 -0
  17. package/src/component/forms/ImageUpload.vue +214 -0
  18. package/src/component/forms/IncrementDecrement.vue +148 -0
  19. package/src/component/forms/InputAddressGoogle.vue +171 -0
  20. package/src/component/forms/InputCallToAction.vue +135 -0
  21. package/src/component/forms/InputDecimal.vue +153 -0
  22. package/src/component/forms/InputDecimalDiscount.vue +78 -0
  23. package/src/component/forms/InputNumber.vue +160 -0
  24. package/src/component/forms/InputPassword.vue +148 -0
  25. package/src/component/forms/InputTag.vue +125 -0
  26. package/src/component/forms/InputText.vue +174 -0
  27. package/src/component/forms/InputTextEdit.vue +69 -0
  28. package/src/component/forms/InputWhatsApp.vue +48 -0
  29. package/src/component/forms/Modal.vue +57 -0
  30. package/src/component/forms/RadioGroup.vue +91 -0
  31. package/src/component/forms/Select.vue +378 -0
  32. package/src/component/forms/SelectStatic.vue +198 -0
  33. package/src/component/forms/SideBar.vue +100 -0
  34. package/src/component/forms/Slider.vue +18 -0
  35. package/src/component/forms/TextArea.vue +138 -0
  36. package/src/component/forms/Toggle.vue +72 -0
  37. package/src/component/layout/Account.vue +131 -0
  38. package/src/component/layout/Alert.vue +88 -0
  39. package/src/component/layout/Badge.vue +111 -0
  40. package/src/component/layout/BarFloating.vue +68 -0
  41. package/src/component/layout/FixedBar.vue +103 -0
  42. package/src/component/layout/Gantt.vue +128 -0
  43. package/src/component/layout/Header.vue +56 -0
  44. package/src/component/layout/HideShow.vue +62 -0
  45. package/src/component/layout/IconMolded.vue +59 -0
  46. package/src/component/layout/LoadingFullPage.vue +27 -0
  47. package/src/component/layout/Menu.vue +287 -0
  48. package/src/component/layout/Molded.vue +30 -0
  49. package/src/component/layout/NewAccount.vue +136 -0
  50. package/src/component/layout/NewHeader.vue +60 -0
  51. package/src/component/layout/NewIconMolded.vue +71 -0
  52. package/src/component/layout/NewMenu.vue +456 -0
  53. package/src/component/layout/Panel.vue +185 -0
  54. package/src/component/layout/Popover.vue +126 -0
  55. package/src/component/layout/ScrollBar.vue +57 -0
  56. package/src/component/layout/Tab.vue +135 -0
  57. package/src/component/layout/Tag.vue +97 -0
  58. package/src/component/layout/Wizard.vue +211 -0
  59. package/src/component/rental/DisplayCalculatePeriod.vue +49 -0
  60. package/src/component/rental/DisplayPeriodRent.vue +55 -0
  61. package/src/component/rental/DisplayTotalization.vue +86 -0
  62. package/src/component/report/Fields.vue +109 -0
  63. package/src/component/report/Report.vue +314 -0
  64. package/src/component/report/ReportTable.vue +112 -0
  65. package/src/component/report/Totalization.vue +34 -0
  66. package/src/component/shared/CodeEditor.vue +128 -0
  67. package/src/component/shared/Collapse.vue +131 -0
  68. package/src/component/shared/Confirmation.vue +74 -0
  69. package/src/component/shared/DocumentEditor.vue +99 -0
  70. package/src/component/shared/DocumentPreview.vue +81 -0
  71. package/src/component/shared/DocumentPublic.vue +33 -0
  72. package/src/component/shared/ExportExcel.vue +56 -0
  73. package/src/component/shared/ExportPDF.vue +116 -0
  74. package/src/component/shared/FullCalendar.vue +174 -0
  75. package/src/component/shared/HeaderReport.vue +47 -0
  76. package/src/component/shared/HorizontalFilter.vue +64 -0
  77. package/src/component/shared/ListNotifications.vue +70 -0
  78. package/src/component/shared/Loading.vue +107 -0
  79. package/src/component/shared/LoadingCard.vue +65 -0
  80. package/src/component/shared/LoadingMoreButton.vue +23 -0
  81. package/src/component/shared/Messages.vue +109 -0
  82. package/src/component/shared/PDFViewer.vue +24 -0
  83. package/src/component/shared/Pagination.vue +108 -0
  84. package/src/component/shared/ParameterLegend.vue +169 -0
  85. package/src/component/shared/ProgressBar.vue +25 -0
  86. package/src/component/shared/QueryButton.vue +66 -0
  87. package/src/component/shared/Report.vue +200 -0
  88. package/src/component/shared/SaveCancel.vue +99 -0
  89. package/src/component/shared/Search.vue +174 -0
  90. package/src/component/shared/SelectOption.vue +162 -0
  91. package/src/component/shared/Table.vue +174 -0
  92. package/src/component/shared/TableButton.vue +36 -0
  93. package/src/component/shared/TableDraggable.vue +117 -0
  94. package/src/component/shared/TableImport.vue +93 -0
  95. package/src/component/shared/TableItem.vue +214 -0
  96. package/src/component/shared/TableTotalPerPage.vue +78 -0
  97. package/src/component/shared/TableTotalRecords.vue +44 -0
  98. package/src/component/shared/TableTotalization.vue +47 -0
  99. package/src/component/shared/TimeLine.vue +42 -0
  100. package/src/component/shared/Timer.vue +78 -0
  101. package/src/component/shared/Tip.vue +42 -0
  102. package/src/component/shared/Toast.vue +69 -0
  103. package/src/component/shared/ToggleTheme.vue +128 -0
  104. package/src/component/shared/TotalizationReport.vue +86 -0
  105. package/src/component/shared/VerticalFilter.vue +97 -0
  106. package/src/component/shared/automation/ActivitiesList.vue +44 -0
  107. package/src/component/shared/automation/AddRule.vue +61 -0
  108. package/src/component/shared/automation/AutomationBuilder.vue +27 -0
  109. package/src/component/shared/automation/DynamicComponentList.vue +86 -0
  110. package/src/component/shared/automation/SelectRule.vue +98 -0
  111. package/src/component/shared/automation/components/BillingByRent.vue +98 -0
  112. package/src/component/shared/automation/components/SendEmail.vue +94 -0
  113. package/src/component/shared/file-manager/FileManager.vue +391 -0
  114. package/src/component/shared/filter-builder/FilterBuilder.vue +221 -0
  115. package/src/component/shared/filter-builder/FilterQuery.vue +94 -0
  116. package/src/component/shared/query-builder/AddRule.vue +203 -0
  117. package/src/component/shared/query-builder/ConvertToOdata.js +86 -0
  118. package/src/component/shared/query-builder/DynamicComponent.vue +161 -0
  119. package/src/component/shared/query-builder/DynamicComponentList.vue +70 -0
  120. package/src/component/shared/query-builder/Fields.vue +93 -0
  121. package/src/component/shared/query-builder/QueryBuilder.vue +69 -0
  122. package/src/component/shared/query-builder/Rules.vue +68 -0
  123. package/src/component/shared/query-builder/SelectRule.vue +97 -0
  124. package/src/component/shared/query-builder/Tags.vue +59 -0
  125. package/src/component/shared/query-builder/utilities.js +22 -0
  126. package/src/component/signature/Payment.vue +161 -0
  127. package/src/component/signature/Warning.vue +76 -0
  128. package/src/component/template/ListViewWithDataHandler.vue +429 -0
  129. package/src/component/template/ReportCreateUpdate.vue +110 -0
  130. package/src/component/template/ViewTemplateConfiguration.vue +64 -0
  131. package/src/component/template/ViewTemplateDocumentView.vue +213 -0
  132. package/src/component/template/ViewTemplateImportFile.vue +347 -0
  133. package/src/component/template/ViewTemplateReportList.vue +217 -0
  134. package/src/component/template/ViewTemplateReportPreview.vue +432 -0
  135. package/src/component/template/ViewTemplateSelectOption.vue +46 -0
  136. package/src/component/template/ViewTemplateWithSalveCancel.vue +32 -0
  137. package/src/component/template/ViewTemplateWithTable.vue +62 -0
  138. package/src/component/template/model/Report.js +6 -0
  139. package/src/component/training/Course.vue +344 -0
  140. package/src/component/training/CourseView.vue +190 -0
  141. package/src/component/value-objects/Address.js +11 -0
  142. package/src/component/value-objects/Address.vue +157 -0
  143. package/src/component/value-objects/Contact.js +7 -0
  144. package/src/component/value-objects/Contact.vue +106 -0
  145. package/src/component/value-objects/Person.js +10 -0
  146. package/src/component/value-objects/Person.vue +129 -0
  147. package/src/config/axios.js +9 -0
  148. package/src/config/dicas.js +15 -0
  149. package/src/config/router.js +14 -0
  150. package/src/config/token.js +15 -0
  151. package/src/main.js +23 -0
  152. package/src/store/modules/automation.js +31 -0
  153. package/src/store/modules/generic.js +816 -0
  154. package/src/store/modules/report.js +278 -0
  155. package/src/store/modules/user.js +67 -0
  156. package/src/store/modules/util.js +26 -0
  157. package/src/store/modules/validation.js +39 -0
  158. package/src/store/store.js +14 -0
@@ -0,0 +1,161 @@
1
+ <template>
2
+ <div>
3
+ <table class="table table-responsive-xs">
4
+ <thead>
5
+ <tr>
6
+ <th>
7
+ <span class="title-header">Descrição</span>
8
+ </th>
9
+ <th class="text-center">
10
+ <span class="title-header">
11
+ <span>Vencimento</span>
12
+ </span>
13
+ </th>
14
+ <th class="text-center">
15
+ <span class="title-header">
16
+ <span>Status</span>
17
+ </span>
18
+ </th>
19
+ <th class="text-center">
20
+ <span class="title-header">Valor</span>
21
+ </th>
22
+ <th class="text-center">
23
+ <span class="title-header">2º via Boleto</span>
24
+ </th>
25
+ <th class="text-center">
26
+ <span class="title-header">Nota Fiscal</span>
27
+ </th>
28
+ </tr>
29
+ </thead>
30
+ <tbody v-for="billet in billets">
31
+ <tr>
32
+ <td>{{ billet.description }}</td>
33
+ <td class="text-center">{{ billet._DueDate | moment("DD/MM/YYYY") }}</td>
34
+ <td class="text-center">
35
+ <span class="badge badge-primary" v-if="billet.statusName == 'Agendada'">A vencer</span>
36
+ <span class="badge badge-success" v-if="billet.statusName == 'Pago'">Pago</span>
37
+ <span class="badge badge-warning" v-if="billet.statusName == 'Pendente'">Pendente</span>
38
+ <span class="badge badge-danger" v-if="billet.statusName == 'Em atraso'">Em atraso</span>
39
+ </td>
40
+ <td class="text-center">{{ billet.value | currency }}</td>
41
+ <td class="text-center">
42
+ <span class="link" @click="openLink(billet)">Visualizar</span>
43
+ </td>
44
+ <td class="text-center">
45
+ <span class="link" v-if="billet.idIntegracao" @click="getPdf(billet)">Baixar PDF</span>
46
+ </td>
47
+ </tr>
48
+ </tbody>
49
+ <tbody v-show="billets.length == 0">
50
+ <tr>
51
+ <td colspan="12">
52
+ <span>Nenhum produto encontrado!</span>
53
+ </td>
54
+ </tr>
55
+ </tbody>
56
+ </table>
57
+ </div>
58
+ </template>
59
+
60
+ <script>
61
+
62
+ import axios from 'axios';
63
+
64
+ export default {
65
+ name: "Payment",
66
+ props: {
67
+ companyId: Number,
68
+ },
69
+ data() {
70
+ return {
71
+ urlGetAll: "/api/v1/billing/billet/client-get-all",
72
+ urlGetPdf: `/api/v1/billing/billet/get-pdf`,
73
+ billets: [],
74
+ };
75
+ },
76
+ mounted() {
77
+ this.getAll();
78
+ },
79
+ methods: {
80
+
81
+ getAll() {
82
+ const apiUrl = `https://backend-adm-prod.azurewebsites.net${this.urlGetAll}?Any=${this.companyId}`;
83
+
84
+ // const apiUrl = `https://localhost:44347${this.urlGetAll}?Any=${this.companyId}`;
85
+
86
+ axios.get(apiUrl)
87
+ .then(response => {
88
+ this.billets = response.data.content.data;
89
+ })
90
+ .catch(error => {
91
+ console.error('Erro ao fazer a solicitação:', error);
92
+ });
93
+ },
94
+ getPdf(billet) {
95
+ const apiUrl = `https://backend-adm-prod.azurewebsites.net${this.urlGetPdf}?Any=${this.companyId}`;
96
+
97
+ let params = {
98
+ obj: {
99
+ idIntegracao: billet.idIntegracao,
100
+ fileName: `nota_fiscal`,
101
+ fileType: "pdf"
102
+ },
103
+ };
104
+ return axios.get(apiUrl, {
105
+ params: params.obj,
106
+ responseType: "arraybuffer",
107
+ })
108
+ .then((response) => {
109
+
110
+ let blob = new Blob([response.data], { type: "application/pdf" });
111
+ let url = window.URL.createObjectURL(blob);
112
+
113
+ let downloadLink = document.createElement("a");
114
+ downloadLink.href = url;
115
+ downloadLink.download = `${params.obj.fileName}`;
116
+
117
+ document.body.appendChild(downloadLink);
118
+ downloadLink.click();
119
+
120
+ document.body.removeChild(downloadLink);
121
+
122
+ }, (err) => {
123
+ return false;
124
+ })
125
+ },
126
+ openLink(billet) {
127
+ window.open(billet.link, '_blank');
128
+ }
129
+ },
130
+ };
131
+ </script>
132
+ <style scoped>
133
+ .table th,
134
+ .table td {
135
+ height: 10px !important;
136
+ padding-left: 5px !important;
137
+ padding-top: 7px !important;
138
+ padding-bottom: 5px !important;
139
+ padding-right: 5px !important;
140
+ padding-left: 10px !important;
141
+ border-bottom: 0px !important;
142
+ }
143
+
144
+ .title-header {
145
+ font-size: 14px;
146
+ color: #757d8c;
147
+ font-weight: 400;
148
+ text-transform: uppercase;
149
+ }
150
+
151
+ .link {
152
+ color: #3f529b;
153
+ font-size: 14px;
154
+ font-weight: 400;
155
+ cursor: pointer;
156
+ }
157
+
158
+ .link:hover {
159
+ text-decoration: underline;
160
+ }
161
+ </style>
@@ -0,0 +1,76 @@
1
+ <template>
2
+ <div>
3
+ <div class="div-main" v-if="data.listBillet.length > 0">
4
+ <Alert type="danger">
5
+ <span>
6
+ ATENÇÃO, existe(m) <b>{{ data.listBillet.length }}</b> boleto(s) em atraso, regularize e evite suspensão
7
+ do
8
+ serviço!
9
+ </span>
10
+ <div class="div-billet">
11
+ <div v-for="billet in data.listBillet">
12
+ Boleto vencido em <b>{{ billet.dueDate | moment("DD/MM/YYYY") }}</b>
13
+ no valor de <b> {{ billet.value | currency }}</b>!
14
+ <span class="title-payment" @click="openBillet(billet)">Efetuar pagamento...</span>
15
+ </div>
16
+ </div>
17
+ </Alert>
18
+ </div>
19
+ </div>
20
+ </template>
21
+
22
+ <script>
23
+
24
+ import Alert from "@nixweb/nixloc-ui/src/component/layout/Alert";
25
+
26
+ import axios from 'axios';
27
+
28
+ export default {
29
+ name: "Warning",
30
+ props: ["companyId"],
31
+ components: {
32
+ Alert
33
+ },
34
+ data() {
35
+ return {
36
+ data: [],
37
+ showBillet: false,
38
+ }
39
+ },
40
+ mounted() {
41
+ this.getAll();
42
+ },
43
+ methods: {
44
+ getAll() {
45
+ const apiUrl = `https://backend-adm-prod.azurewebsites.net/api/v1/billing/billet/warning-billet-delayed?Any=${this.companyId}`;
46
+
47
+ axios.get(apiUrl)
48
+ .then(response => {
49
+ this.data = response.data;
50
+ })
51
+ .catch(error => {
52
+ console.error('Erro ao fazer a solicitação:', error);
53
+ });
54
+ },
55
+ openBillet(billet) {
56
+ const link = `https://app.boletocloud.com/boleto/2via/${billet.tokenBillet}`;
57
+ window.open(link, '_blank');
58
+ }
59
+ },
60
+ }
61
+ </script>
62
+
63
+ <style scoped>
64
+ .div-main {
65
+ margin-top: 50px;
66
+ }
67
+
68
+ .div-billet {
69
+ margin-top: 10px;
70
+ }
71
+
72
+ .title-payment {
73
+ color: darkblue;
74
+ cursor: pointer;
75
+ }
76
+ </style>
@@ -0,0 +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>