@nixweb/nixloc-ui 1.17.0 → 1.20.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 (181) hide show
  1. package/.github/workflows/publish-npm.yml +32 -32
  2. package/@nixweb/nixloc-ui/.github/workflows/publish-npm.yml +32 -32
  3. package/@nixweb/nixloc-ui/README.md +24 -24
  4. package/@nixweb/nixloc-ui/babel.config.js +5 -5
  5. package/@nixweb/nixloc-ui/config/dev.env.js +8 -8
  6. package/@nixweb/nixloc-ui/config/index.js +69 -69
  7. package/@nixweb/nixloc-ui/config/prod.env.js +5 -5
  8. package/@nixweb/nixloc-ui/docs/src/component/template/ViewTemplateReportPreview.drawio +209 -209
  9. package/@nixweb/nixloc-ui/docs/src/store/modulos/relatorio.drawio +36 -36
  10. package/@nixweb/nixloc-ui/package.json +88 -88
  11. package/@nixweb/nixloc-ui/public/index.html +19 -19
  12. package/@nixweb/nixloc-ui/public/styles/app.css +52 -52
  13. package/@nixweb/nixloc-ui/src/App.vue +13 -13
  14. package/@nixweb/nixloc-ui/src/component/forms/Button.vue +163 -163
  15. package/@nixweb/nixloc-ui/src/component/forms/ButtonFilter.vue +74 -74
  16. package/@nixweb/nixloc-ui/src/component/forms/ButtonGroup.vue +66 -66
  17. package/@nixweb/nixloc-ui/src/component/forms/ButtonSub.vue +97 -97
  18. package/@nixweb/nixloc-ui/src/component/forms/ButtonToggle.vue +76 -76
  19. package/@nixweb/nixloc-ui/src/component/forms/CheckboxGroup.vue +69 -69
  20. package/@nixweb/nixloc-ui/src/component/forms/CheckboxServer.vue +192 -192
  21. package/@nixweb/nixloc-ui/src/component/forms/CheckboxSimple.vue +60 -60
  22. package/@nixweb/nixloc-ui/src/component/forms/Color.vue +38 -38
  23. package/@nixweb/nixloc-ui/src/component/forms/DateTime.vue +170 -170
  24. package/@nixweb/nixloc-ui/src/component/forms/DateYearMonth.vue +193 -193
  25. package/@nixweb/nixloc-ui/src/component/forms/Dropdown.vue +236 -236
  26. package/@nixweb/nixloc-ui/src/component/forms/EditorHtml.vue +132 -132
  27. package/@nixweb/nixloc-ui/src/component/forms/FileUpload.vue +170 -170
  28. package/@nixweb/nixloc-ui/src/component/forms/ImageUpload.vue +214 -214
  29. package/@nixweb/nixloc-ui/src/component/forms/IncrementDecrement.vue +148 -148
  30. package/@nixweb/nixloc-ui/src/component/forms/InputAddressGoogle.vue +171 -171
  31. package/@nixweb/nixloc-ui/src/component/forms/InputCallToAction.vue +135 -135
  32. package/@nixweb/nixloc-ui/src/component/forms/InputDecimal.vue +153 -153
  33. package/@nixweb/nixloc-ui/src/component/forms/InputDecimalDiscount.vue +77 -77
  34. package/@nixweb/nixloc-ui/src/component/forms/InputNumber.vue +160 -160
  35. package/@nixweb/nixloc-ui/src/component/forms/InputPassword.vue +148 -148
  36. package/@nixweb/nixloc-ui/src/component/forms/InputTag.vue +124 -124
  37. package/@nixweb/nixloc-ui/src/component/forms/InputText.vue +174 -174
  38. package/@nixweb/nixloc-ui/src/component/forms/InputTextEdit.vue +69 -69
  39. package/@nixweb/nixloc-ui/src/component/forms/InputWhatsApp.vue +47 -47
  40. package/@nixweb/nixloc-ui/src/component/forms/Modal.vue +57 -57
  41. package/@nixweb/nixloc-ui/src/component/forms/RadioGroup.vue +91 -91
  42. package/@nixweb/nixloc-ui/src/component/forms/Select.vue +378 -378
  43. package/@nixweb/nixloc-ui/src/component/forms/SelectStatic.vue +198 -198
  44. package/@nixweb/nixloc-ui/src/component/forms/SideBar.vue +99 -99
  45. package/@nixweb/nixloc-ui/src/component/forms/Slider.vue +18 -18
  46. package/@nixweb/nixloc-ui/src/component/forms/TextArea.vue +138 -138
  47. package/@nixweb/nixloc-ui/src/component/forms/Toggle.vue +72 -72
  48. package/@nixweb/nixloc-ui/src/component/layout/Account.vue +131 -131
  49. package/@nixweb/nixloc-ui/src/component/layout/Alert.vue +88 -88
  50. package/@nixweb/nixloc-ui/src/component/layout/Badge.vue +111 -111
  51. package/@nixweb/nixloc-ui/src/component/layout/BarFloating.vue +67 -67
  52. package/@nixweb/nixloc-ui/src/component/layout/FixedBar.vue +103 -103
  53. package/@nixweb/nixloc-ui/src/component/layout/Gantt.vue +128 -128
  54. package/@nixweb/nixloc-ui/src/component/layout/Header.vue +56 -56
  55. package/@nixweb/nixloc-ui/src/component/layout/HideShow.vue +61 -61
  56. package/@nixweb/nixloc-ui/src/component/layout/IconMolded.vue +58 -58
  57. package/@nixweb/nixloc-ui/src/component/layout/LoadingFullPage.vue +27 -27
  58. package/@nixweb/nixloc-ui/src/component/layout/Menu.vue +287 -287
  59. package/@nixweb/nixloc-ui/src/component/layout/Molded.vue +30 -30
  60. package/@nixweb/nixloc-ui/src/component/layout/NewAccount.vue +136 -136
  61. package/@nixweb/nixloc-ui/src/component/layout/NewHeader.vue +59 -59
  62. package/@nixweb/nixloc-ui/src/component/layout/NewIconMolded.vue +70 -70
  63. package/@nixweb/nixloc-ui/src/component/layout/NewMenu.vue +455 -455
  64. package/@nixweb/nixloc-ui/src/component/layout/Panel.vue +185 -185
  65. package/@nixweb/nixloc-ui/src/component/layout/Popover.vue +126 -126
  66. package/@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue +57 -57
  67. package/@nixweb/nixloc-ui/src/component/layout/Tab.vue +135 -135
  68. package/@nixweb/nixloc-ui/src/component/layout/Tag.vue +97 -97
  69. package/@nixweb/nixloc-ui/src/component/layout/Wizard.vue +211 -211
  70. package/@nixweb/nixloc-ui/src/component/rental/DisplayCalculatePeriod.vue +48 -48
  71. package/@nixweb/nixloc-ui/src/component/rental/DisplayPeriodRent.vue +55 -55
  72. package/@nixweb/nixloc-ui/src/component/rental/DisplayTotalization.vue +86 -86
  73. package/@nixweb/nixloc-ui/src/component/report/Fields.vue +108 -108
  74. package/@nixweb/nixloc-ui/src/component/report/Report.vue +313 -313
  75. package/@nixweb/nixloc-ui/src/component/report/ReportTable.vue +111 -111
  76. package/@nixweb/nixloc-ui/src/component/report/Totalization.vue +33 -33
  77. package/@nixweb/nixloc-ui/src/component/shared/CodeEditor.vue +128 -128
  78. package/@nixweb/nixloc-ui/src/component/shared/Collapse.vue +131 -131
  79. package/@nixweb/nixloc-ui/src/component/shared/Confirmation.vue +74 -74
  80. package/@nixweb/nixloc-ui/src/component/shared/DocumentEditor.vue +99 -99
  81. package/@nixweb/nixloc-ui/src/component/shared/DocumentPreview.vue +81 -81
  82. package/@nixweb/nixloc-ui/src/component/shared/DocumentPublic.vue +33 -33
  83. package/@nixweb/nixloc-ui/src/component/shared/ExportExcel.vue +56 -56
  84. package/@nixweb/nixloc-ui/src/component/shared/ExportPDF.vue +116 -116
  85. package/@nixweb/nixloc-ui/src/component/shared/FullCalendar.vue +173 -173
  86. package/@nixweb/nixloc-ui/src/component/shared/HeaderReport.vue +47 -47
  87. package/@nixweb/nixloc-ui/src/component/shared/HorizontalFilter.vue +64 -64
  88. package/@nixweb/nixloc-ui/src/component/shared/ListNotifications.vue +70 -70
  89. package/@nixweb/nixloc-ui/src/component/shared/Loading.vue +107 -107
  90. package/@nixweb/nixloc-ui/src/component/shared/LoadingCard.vue +64 -64
  91. package/@nixweb/nixloc-ui/src/component/shared/LoadingMoreButton.vue +23 -23
  92. package/@nixweb/nixloc-ui/src/component/shared/Messages.vue +109 -109
  93. package/@nixweb/nixloc-ui/src/component/shared/PDFViewer.vue +24 -24
  94. package/@nixweb/nixloc-ui/src/component/shared/Pagination.vue +108 -108
  95. package/@nixweb/nixloc-ui/src/component/shared/ParameterLegend.vue +169 -169
  96. package/@nixweb/nixloc-ui/src/component/shared/ProgressBar.vue +25 -25
  97. package/@nixweb/nixloc-ui/src/component/shared/QueryButton.vue +66 -66
  98. package/@nixweb/nixloc-ui/src/component/shared/Report.vue +200 -200
  99. package/@nixweb/nixloc-ui/src/component/shared/SaveCancel.vue +99 -99
  100. package/@nixweb/nixloc-ui/src/component/shared/Search.vue +174 -174
  101. package/@nixweb/nixloc-ui/src/component/shared/SelectOption.vue +162 -162
  102. package/@nixweb/nixloc-ui/src/component/shared/Table.vue +174 -174
  103. package/@nixweb/nixloc-ui/src/component/shared/TableButton.vue +36 -36
  104. package/@nixweb/nixloc-ui/src/component/shared/TableDraggable.vue +117 -117
  105. package/@nixweb/nixloc-ui/src/component/shared/TableImport.vue +93 -93
  106. package/@nixweb/nixloc-ui/src/component/shared/TableItem.vue +214 -214
  107. package/@nixweb/nixloc-ui/src/component/shared/TableTotalPerPage.vue +77 -77
  108. package/@nixweb/nixloc-ui/src/component/shared/TableTotalRecords.vue +44 -44
  109. package/@nixweb/nixloc-ui/src/component/shared/TableTotalization.vue +47 -47
  110. package/@nixweb/nixloc-ui/src/component/shared/TimeLine.vue +41 -41
  111. package/@nixweb/nixloc-ui/src/component/shared/Timer.vue +77 -77
  112. package/@nixweb/nixloc-ui/src/component/shared/Tip.vue +42 -42
  113. package/@nixweb/nixloc-ui/src/component/shared/Toast.vue +69 -69
  114. package/@nixweb/nixloc-ui/src/component/shared/ToggleTheme.vue +127 -127
  115. package/@nixweb/nixloc-ui/src/component/shared/TotalizationReport.vue +86 -86
  116. package/@nixweb/nixloc-ui/src/component/shared/VerticalFilter.vue +97 -97
  117. package/@nixweb/nixloc-ui/src/component/shared/automation/ActivitiesList.vue +43 -43
  118. package/@nixweb/nixloc-ui/src/component/shared/automation/AddRule.vue +60 -60
  119. package/@nixweb/nixloc-ui/src/component/shared/automation/AutomationBuilder.vue +26 -26
  120. package/@nixweb/nixloc-ui/src/component/shared/automation/DynamicComponentList.vue +85 -85
  121. package/@nixweb/nixloc-ui/src/component/shared/automation/SelectRule.vue +97 -97
  122. package/@nixweb/nixloc-ui/src/component/shared/automation/components/BillingByRent.vue +97 -97
  123. package/@nixweb/nixloc-ui/src/component/shared/automation/components/SendEmail.vue +93 -93
  124. package/@nixweb/nixloc-ui/src/component/shared/file-manager/FileManager.vue +390 -390
  125. package/@nixweb/nixloc-ui/src/component/shared/filter-builder/FilterBuilder.vue +220 -220
  126. package/@nixweb/nixloc-ui/src/component/shared/filter-builder/FilterQuery.vue +94 -94
  127. package/@nixweb/nixloc-ui/src/component/shared/query-builder/AddRule.vue +203 -203
  128. package/@nixweb/nixloc-ui/src/component/shared/query-builder/ConvertToOdata.js +86 -86
  129. package/@nixweb/nixloc-ui/src/component/shared/query-builder/DynamicComponent.vue +161 -161
  130. package/@nixweb/nixloc-ui/src/component/shared/query-builder/DynamicComponentList.vue +70 -70
  131. package/@nixweb/nixloc-ui/src/component/shared/query-builder/Fields.vue +93 -93
  132. package/@nixweb/nixloc-ui/src/component/shared/query-builder/QueryBuilder.vue +69 -69
  133. package/@nixweb/nixloc-ui/src/component/shared/query-builder/Rules.vue +68 -68
  134. package/@nixweb/nixloc-ui/src/component/shared/query-builder/SelectRule.vue +97 -97
  135. package/@nixweb/nixloc-ui/src/component/shared/query-builder/Tags.vue +59 -59
  136. package/@nixweb/nixloc-ui/src/component/shared/query-builder/utilities.js +21 -21
  137. package/@nixweb/nixloc-ui/src/component/signature/Payment.vue +160 -160
  138. package/@nixweb/nixloc-ui/src/component/signature/Warning.vue +75 -75
  139. package/@nixweb/nixloc-ui/src/component/template/ListViewWithDataHandler.vue +429 -429
  140. package/@nixweb/nixloc-ui/src/component/template/ReportCreateUpdate.vue +110 -110
  141. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateConfiguration.vue +64 -64
  142. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateDocumentView.vue +213 -213
  143. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateImportFile.vue +347 -347
  144. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateReportList.vue +217 -217
  145. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateReportPreview.vue +432 -432
  146. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateSelectOption.vue +46 -46
  147. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateWithSalveCancel.vue +32 -32
  148. package/@nixweb/nixloc-ui/src/component/template/ViewTemplateWithTable.vue +62 -62
  149. package/@nixweb/nixloc-ui/src/component/template/model/Report.js +5 -5
  150. package/@nixweb/nixloc-ui/src/component/training/Course.vue +343 -343
  151. package/@nixweb/nixloc-ui/src/component/training/CourseView.vue +189 -189
  152. package/@nixweb/nixloc-ui/src/component/value-objects/Address.js +10 -10
  153. package/@nixweb/nixloc-ui/src/component/value-objects/Address.vue +157 -157
  154. package/@nixweb/nixloc-ui/src/component/value-objects/Contact.js +6 -6
  155. package/@nixweb/nixloc-ui/src/component/value-objects/Contact.vue +106 -106
  156. package/@nixweb/nixloc-ui/src/component/value-objects/Person.js +10 -10
  157. package/@nixweb/nixloc-ui/src/component/value-objects/Person.vue +129 -129
  158. package/@nixweb/nixloc-ui/src/config/axios.js +9 -9
  159. package/@nixweb/nixloc-ui/src/config/dicas.js +14 -14
  160. package/@nixweb/nixloc-ui/src/config/router.js +13 -13
  161. package/@nixweb/nixloc-ui/src/config/token.js +14 -14
  162. package/@nixweb/nixloc-ui/src/main.js +23 -23
  163. package/@nixweb/nixloc-ui/src/store/modules/automation.js +30 -30
  164. package/@nixweb/nixloc-ui/src/store/modules/generic.js +815 -815
  165. package/@nixweb/nixloc-ui/src/store/modules/report.js +277 -277
  166. package/@nixweb/nixloc-ui/src/store/modules/user.js +66 -66
  167. package/@nixweb/nixloc-ui/src/store/modules/util.js +25 -25
  168. package/@nixweb/nixloc-ui/src/store/modules/validation.js +38 -38
  169. package/@nixweb/nixloc-ui/src/store/store.js +13 -13
  170. package/README.md +24 -24
  171. package/babel.config.js +5 -5
  172. package/config/dev.env.js +8 -8
  173. package/config/index.js +69 -69
  174. package/config/prod.env.js +5 -5
  175. package/docs/src/component/template/ViewTemplateReportPreview.drawio +209 -209
  176. package/docs/src/store/modulos/relatorio.drawio +36 -36
  177. package/package.json +88 -88
  178. package/public/index.html +19 -19
  179. package/public/styles/app.css +52 -52
  180. package/src/component/layout/ScrollBar.vue +21 -8
  181. package/src/store/modules/generic.js +15 -1
@@ -1,347 +1,347 @@
1
- <template>
2
- <div>
3
- <Panel :module="panel.module" :title="panel.title" :showVerticalFilter="panel.showVerticalFilter"
4
- :showSearch="panel.showSearch" :showButtons="panel.showButtons">
5
- <div slot="content-main">
6
- <br />
7
- <div class="div-loading" v-show="loading">
8
- <span>
9
- {{ msg }}
10
- </span>
11
- <Loading type="line" :center="false" />
12
- </div>
13
- <div v-show="!success && !loading">
14
- <b-tabs>
15
- <b-tab title="Importar">
16
- <div>
17
- <div v-show="!fileName">
18
- <Alert type="info">
19
- <span>
20
- Selecione o arquivo Excel no formato
21
- <b> .xlsx </b> baseado na planilha
22
- <a :href="urlTemplate" class="text-download">
23
- <b>BAIXAR MODELO</b>
24
- </a>
25
- e aguarde até carregar os dados para conferência.
26
- </span>
27
- <br />
28
- <span>
29
- Até <b> 1000 </b> itens por planilha ou <b> 1MB </b> no
30
- arquivo.
31
- </span>
32
- </Alert>
33
- <br />
34
- <slot></slot>
35
- <div class="div-file">
36
- <FileUpload title="Carregar .xlsx" classIcon="fa-solid fa-file-excel" :container="container"
37
- accepted=".xlsx" allowed=".xlsx" :disabled="true" urlPost="/api/v1/adm/file-upload/upload"
38
- urlRemove="/api/v1/adm/file-upload/delete" :onLoad="successUploadFile" :nameDataBase="fileName"
39
- v-model="fileName" />
40
- </div>
41
- </div>
42
- <div v-show="fileName && !loading">
43
- <div class="import-icon">
44
- <i class="fas fa-file-import"></i>
45
- </div>
46
- <span v-if="!isValid">
47
- Efetue o <b> mapeamento </b> dos campos e clique em iniciar
48
- validação.
49
- </span>
50
- <span v-else>
51
- Dados <b> validado com sucesso, </b> clique em importar.
52
- </span>
53
- <br />
54
- <div class="div-btn">
55
- <Button _key="btnBack" type="info" title="voltar" classIcon="fa-solid fa-circle-arrow-left"
56
- size="small" :clicked="back" />
57
- <Button v-if="!isValid" _key="btnValidate" type="primary" title="Iniciar Validação" :disabled="false"
58
- classIcon="fa-solid fa-arrow-right-arrow-left" size="small" :clicked="validate" />
59
- <Button v-if="listError.length > 0" _key="btnListError" type="danger" title="Erro(s)"
60
- classIcon="fa-sharp fa-solid fa-triangle-exclamation" size="small" :clicked="openListError" />
61
- <Button v-if="isValid" _key="btnImport" type="success" title="Importar"
62
- classIcon="fa-solid fa-file-import" size="small" :clicked="startImport" />
63
- </div>
64
- <br />
65
- <Alert type="danger" v-if="listError.length > 0">
66
- <span>
67
- Atenção, foram identificados
68
- <b>{{ listError.length }}</b> erro(s), corrija-os!
69
- </span>
70
- </Alert>
71
- <Alert type="info">
72
- <span>
73
- Total de <b> {{ totalRecords }} </b> registro(s), para o
74
- mapeamento serão carregados somente os
75
- <b> 10 </b> primeiros (se houver).
76
- </span>
77
- </Alert>
78
- <TableImport v-if="fileName" :select="select" :headerTable="headerTable" :data="data" />
79
- </div>
80
- </div>
81
- </b-tab>
82
- <b-tab title="Histórico">
83
- <Button v-if="listError.length > 0" _key="btnListError" type="danger" title="Erro(s)"
84
- classIcon="fa-sharp fa-solid fa-triangle-exclamation" size="small" :clicked="openListError" />
85
- <ViewTemplateConfiguration :templateList="templateList" :showSearch="false" :showHorizontalFilter="false">
86
- </ViewTemplateConfiguration>
87
- </b-tab>
88
- </b-tabs>
89
- </div>
90
- <div v-show="success">
91
- <div class="div-molded text-center">
92
- <Molded>
93
- <div class="msg-success">Importação realizada com sucesso!</div>
94
- <div class="icon-success">
95
- <i class="fa-light fa-circle-check"></i>
96
- </div>
97
- <div>
98
- <Button _key="btnBack" type="info" title="voltar" classIcon="fa-solid fa-circle-arrow-left" size="small"
99
- :clicked="back" />
100
- </div>
101
- </Molded>
102
- </div>
103
- </div>
104
- <br />
105
- </div>
106
- </Panel>
107
- <Modal title="Erro(s)" :width="900" :height="750" v-show="showModal('listError')">
108
- <ListNotifications :listError="listError" />
109
- </Modal>
110
- <Modal title="Você tem certeza?" :width="500" v-show="showModal('confirmDelete')">
111
- <Alert type="warning">
112
- <span>
113
- Atenção, todos os registros relacionados também serão excluídos, esta
114
- ação é irreversível!
115
- </span>
116
- </Alert>
117
- <Confirmation :isModal="false" type="danger" :confirmed="removeSelected" />
118
- </Modal>
119
- </div>
120
- </template>
121
-
122
- <script>
123
- import Panel from "@nixweb/nixloc-ui/src/component/layout/Panel.vue";
124
- import Button from "@nixweb/nixloc-ui/src/component/forms/Button";
125
- import Molded from "@nixweb/nixloc-ui/src/component/layout/Molded";
126
- import FileUpload from "@nixweb/nixloc-ui/src/component/forms/FileUpload";
127
- import Loading from "@nixweb/nixloc-ui/src/component/shared/Loading.vue";
128
- import Alert from "@nixweb/nixloc-ui/src/component/layout/Alert";
129
- import Modal from "@nixweb/nixloc-ui/src/component/forms/Modal";
130
- import Confirmation from "@nixweb/nixloc-ui/src/component/shared/Confirmation.vue";
131
- import ViewTemplateConfiguration from "@nixweb/nixloc-ui/src/component/template/ViewTemplateConfiguration";
132
-
133
- import TableImport from "@nixweb/nixloc-ui/src/component/shared/TableImport.vue";
134
- import ListNotifications from "@nixweb/nixloc-ui/src/component/shared/ListNotifications.vue";
135
-
136
- import { mapState, mapActions, mapMutations, mapGetters } from "vuex";
137
-
138
- export default {
139
- name: "ViewTemplateImportFileView",
140
- components: {
141
- Panel,
142
- Button,
143
- Molded,
144
- FileUpload,
145
- Loading,
146
- ListNotifications,
147
- ViewTemplateConfiguration,
148
- TableImport,
149
- Alert,
150
- Modal,
151
- Confirmation,
152
- },
153
- props: {
154
- panel: Object,
155
- templateList: Object,
156
- select: Array,
157
- container: String,
158
- typeImport: Number,
159
- urlMapping: String,
160
- urlValidate: String,
161
- urlImport: String,
162
- urlTemplate: String,
163
- },
164
- data() {
165
- return {
166
- fileName: "",
167
- loading: false,
168
- headerTable: [],
169
- data: [],
170
- totalRecords: 0,
171
- listError: [],
172
- isValid: false,
173
- idRemove: "",
174
- success: false,
175
- msg: "",
176
- loadingImport: false,
177
- };
178
- },
179
- computed: {
180
- ...mapGetters("generic", ["showModal", "event"]),
181
- },
182
- methods: {
183
- ...mapActions("generic", ["postApi", "deleteAllApi"]),
184
- ...mapMutations("generic", ["openModal", "hideModal", "removeLoading"]),
185
- successUploadFile() {
186
- this.listError = [];
187
- this.loading = true;
188
- this.msg =
189
- "Aguarde, estamos carregando os dados, isso pode levar alguns minutos...";
190
- let self = this;
191
- setTimeout(function () {
192
- self.mapping(self.fileName);
193
- }, 1000);
194
- },
195
- mapping(fileName) {
196
- let params = {
197
- url: this.urlMapping,
198
- obj: {
199
- fileName: fileName,
200
- container: this.container,
201
- typeImport: this.typeImport,
202
- },
203
- notNotifyToast: true,
204
- };
205
- this.postApi(params).then((response) => {
206
- if (response.success) {
207
- this.loading = false;
208
- this.headerTable = response.content.headerTable;
209
- this.data = response.content.data;
210
- this.totalRecords = response.content.totalRecords;
211
- }
212
- });
213
- },
214
- validate() {
215
- this.loading = true;
216
- this.msg =
217
- "Aguarde, estamos validando os dados, isso pode levar alguns minutos...";
218
- this.isValid = false;
219
- let params = {
220
- url: this.urlValidate,
221
- obj: {
222
- fileName: this.fileName,
223
- container: this.container,
224
- typeImport: this.typeImport,
225
- items: this.headerTable,
226
- },
227
- notNotifyToast: true,
228
- };
229
- this.postApi(params).then((response) => {
230
- if (response.success) {
231
- this.listError = response.content;
232
- if (this.listError.length == 0) this.isValid = true;
233
- }
234
- this.removeLoading(["btnValidate"]);
235
- let self = this;
236
- setTimeout(function () {
237
- self.loading = false;
238
- }, 2000);
239
- });
240
- },
241
- startImport() {
242
- this.loading = true;
243
- this.msg =
244
- "Aguarde, estamos importando os dados, isso pode levar alguns minutos...";
245
- let params = {
246
- url: this.urlImport,
247
- obj: {
248
- fileName: this.fileName,
249
- container: this.container,
250
- typeImport: this.typeImport,
251
- items: this.headerTable,
252
- },
253
- notNotifyToast: true,
254
- };
255
- this.postApi(params).then((response) => {
256
- if (response.success) {
257
- this.success = true;
258
- this.isValid = false;
259
- }
260
- this.removeLoading(["btnImport"]);
261
- this.loading = false;
262
- });
263
- },
264
- removeSelected() {
265
- let params = {
266
- url: this.templateList.urlDeleteAllApi,
267
- selected: [this.idRemove],
268
- };
269
- this.deleteAllApi(params).then((response) => {
270
- if (response.success) {
271
- this.listError = [];
272
- this.hideModal();
273
- } else {
274
- this.listError = response.content;
275
- if (this.listError.length == 0) this.isValid = true;
276
- this.hideModal();
277
- }
278
- this.removeLoading(["confirm"]);
279
- });
280
- },
281
- openListError() {
282
- this.openModal("listError");
283
- this.removeLoading(["btnListError"]);
284
- },
285
- back() {
286
- this.fileName = "";
287
- this.listError = [];
288
- this.success = false;
289
- this.isValid = false;
290
- this.removeLoading(["btnBack"]);
291
- },
292
- },
293
- watch: {
294
- event: {
295
- handler(event) {
296
- if (event.name == "deleteHistoryImport") {
297
- this.openModal("confirmDelete");
298
- this.idRemove = this.event.data.id;
299
- }
300
- },
301
- deep: true,
302
- },
303
- },
304
- };
305
- </script>
306
-
307
- <style scoped>
308
- .import-icon {
309
- font-size: 30px;
310
- opacity: 0.2;
311
- color: #577696;
312
- }
313
-
314
- .div-file {
315
- margin-top: 20px;
316
- }
317
-
318
- .div-btn {
319
- margin-top: 10px;
320
- margin-left: -8px;
321
- }
322
-
323
- .div-loading {
324
- margin-top: 10px;
325
- }
326
-
327
- .div-molded {
328
- width: 550px;
329
- margin: auto;
330
- }
331
-
332
- .text-download {
333
- color: #1990ff;
334
- cursor: pointer;
335
- }
336
-
337
- .msg-success {
338
- font-size: 18px;
339
- }
340
-
341
- .icon-success {
342
- font-size: 55px;
343
- color: #38a169;
344
- margin-top: 10px;
345
- margin-bottom: 15px;
346
- }
347
- </style>
1
+ <template>
2
+ <div>
3
+ <Panel :module="panel.module" :title="panel.title" :showVerticalFilter="panel.showVerticalFilter"
4
+ :showSearch="panel.showSearch" :showButtons="panel.showButtons">
5
+ <div slot="content-main">
6
+ <br />
7
+ <div class="div-loading" v-show="loading">
8
+ <span>
9
+ {{ msg }}
10
+ </span>
11
+ <Loading type="line" :center="false" />
12
+ </div>
13
+ <div v-show="!success && !loading">
14
+ <b-tabs>
15
+ <b-tab title="Importar">
16
+ <div>
17
+ <div v-show="!fileName">
18
+ <Alert type="info">
19
+ <span>
20
+ Selecione o arquivo Excel no formato
21
+ <b> .xlsx </b> baseado na planilha
22
+ <a :href="urlTemplate" class="text-download">
23
+ <b>BAIXAR MODELO</b>
24
+ </a>
25
+ e aguarde até carregar os dados para conferência.
26
+ </span>
27
+ <br />
28
+ <span>
29
+ Até <b> 1000 </b> itens por planilha ou <b> 1MB </b> no
30
+ arquivo.
31
+ </span>
32
+ </Alert>
33
+ <br />
34
+ <slot></slot>
35
+ <div class="div-file">
36
+ <FileUpload title="Carregar .xlsx" classIcon="fa-solid fa-file-excel" :container="container"
37
+ accepted=".xlsx" allowed=".xlsx" :disabled="true" urlPost="/api/v1/adm/file-upload/upload"
38
+ urlRemove="/api/v1/adm/file-upload/delete" :onLoad="successUploadFile" :nameDataBase="fileName"
39
+ v-model="fileName" />
40
+ </div>
41
+ </div>
42
+ <div v-show="fileName && !loading">
43
+ <div class="import-icon">
44
+ <i class="fas fa-file-import"></i>
45
+ </div>
46
+ <span v-if="!isValid">
47
+ Efetue o <b> mapeamento </b> dos campos e clique em iniciar
48
+ validação.
49
+ </span>
50
+ <span v-else>
51
+ Dados <b> validado com sucesso, </b> clique em importar.
52
+ </span>
53
+ <br />
54
+ <div class="div-btn">
55
+ <Button _key="btnBack" type="info" title="voltar" classIcon="fa-solid fa-circle-arrow-left"
56
+ size="small" :clicked="back" />
57
+ <Button v-if="!isValid" _key="btnValidate" type="primary" title="Iniciar Validação" :disabled="false"
58
+ classIcon="fa-solid fa-arrow-right-arrow-left" size="small" :clicked="validate" />
59
+ <Button v-if="listError.length > 0" _key="btnListError" type="danger" title="Erro(s)"
60
+ classIcon="fa-sharp fa-solid fa-triangle-exclamation" size="small" :clicked="openListError" />
61
+ <Button v-if="isValid" _key="btnImport" type="success" title="Importar"
62
+ classIcon="fa-solid fa-file-import" size="small" :clicked="startImport" />
63
+ </div>
64
+ <br />
65
+ <Alert type="danger" v-if="listError.length > 0">
66
+ <span>
67
+ Atenção, foram identificados
68
+ <b>{{ listError.length }}</b> erro(s), corrija-os!
69
+ </span>
70
+ </Alert>
71
+ <Alert type="info">
72
+ <span>
73
+ Total de <b> {{ totalRecords }} </b> registro(s), para o
74
+ mapeamento serão carregados somente os
75
+ <b> 10 </b> primeiros (se houver).
76
+ </span>
77
+ </Alert>
78
+ <TableImport v-if="fileName" :select="select" :headerTable="headerTable" :data="data" />
79
+ </div>
80
+ </div>
81
+ </b-tab>
82
+ <b-tab title="Histórico">
83
+ <Button v-if="listError.length > 0" _key="btnListError" type="danger" title="Erro(s)"
84
+ classIcon="fa-sharp fa-solid fa-triangle-exclamation" size="small" :clicked="openListError" />
85
+ <ViewTemplateConfiguration :templateList="templateList" :showSearch="false" :showHorizontalFilter="false">
86
+ </ViewTemplateConfiguration>
87
+ </b-tab>
88
+ </b-tabs>
89
+ </div>
90
+ <div v-show="success">
91
+ <div class="div-molded text-center">
92
+ <Molded>
93
+ <div class="msg-success">Importação realizada com sucesso!</div>
94
+ <div class="icon-success">
95
+ <i class="fa-light fa-circle-check"></i>
96
+ </div>
97
+ <div>
98
+ <Button _key="btnBack" type="info" title="voltar" classIcon="fa-solid fa-circle-arrow-left" size="small"
99
+ :clicked="back" />
100
+ </div>
101
+ </Molded>
102
+ </div>
103
+ </div>
104
+ <br />
105
+ </div>
106
+ </Panel>
107
+ <Modal title="Erro(s)" :width="900" :height="750" v-show="showModal('listError')">
108
+ <ListNotifications :listError="listError" />
109
+ </Modal>
110
+ <Modal title="Você tem certeza?" :width="500" v-show="showModal('confirmDelete')">
111
+ <Alert type="warning">
112
+ <span>
113
+ Atenção, todos os registros relacionados também serão excluídos, esta
114
+ ação é irreversível!
115
+ </span>
116
+ </Alert>
117
+ <Confirmation :isModal="false" type="danger" :confirmed="removeSelected" />
118
+ </Modal>
119
+ </div>
120
+ </template>
121
+
122
+ <script>
123
+ import Panel from "@nixweb/nixloc-ui/src/component/layout/Panel.vue";
124
+ import Button from "@nixweb/nixloc-ui/src/component/forms/Button";
125
+ import Molded from "@nixweb/nixloc-ui/src/component/layout/Molded";
126
+ import FileUpload from "@nixweb/nixloc-ui/src/component/forms/FileUpload";
127
+ import Loading from "@nixweb/nixloc-ui/src/component/shared/Loading.vue";
128
+ import Alert from "@nixweb/nixloc-ui/src/component/layout/Alert";
129
+ import Modal from "@nixweb/nixloc-ui/src/component/forms/Modal";
130
+ import Confirmation from "@nixweb/nixloc-ui/src/component/shared/Confirmation.vue";
131
+ import ViewTemplateConfiguration from "@nixweb/nixloc-ui/src/component/template/ViewTemplateConfiguration";
132
+
133
+ import TableImport from "@nixweb/nixloc-ui/src/component/shared/TableImport.vue";
134
+ import ListNotifications from "@nixweb/nixloc-ui/src/component/shared/ListNotifications.vue";
135
+
136
+ import { mapState, mapActions, mapMutations, mapGetters } from "vuex";
137
+
138
+ export default {
139
+ name: "ViewTemplateImportFileView",
140
+ components: {
141
+ Panel,
142
+ Button,
143
+ Molded,
144
+ FileUpload,
145
+ Loading,
146
+ ListNotifications,
147
+ ViewTemplateConfiguration,
148
+ TableImport,
149
+ Alert,
150
+ Modal,
151
+ Confirmation,
152
+ },
153
+ props: {
154
+ panel: Object,
155
+ templateList: Object,
156
+ select: Array,
157
+ container: String,
158
+ typeImport: Number,
159
+ urlMapping: String,
160
+ urlValidate: String,
161
+ urlImport: String,
162
+ urlTemplate: String,
163
+ },
164
+ data() {
165
+ return {
166
+ fileName: "",
167
+ loading: false,
168
+ headerTable: [],
169
+ data: [],
170
+ totalRecords: 0,
171
+ listError: [],
172
+ isValid: false,
173
+ idRemove: "",
174
+ success: false,
175
+ msg: "",
176
+ loadingImport: false,
177
+ };
178
+ },
179
+ computed: {
180
+ ...mapGetters("generic", ["showModal", "event"]),
181
+ },
182
+ methods: {
183
+ ...mapActions("generic", ["postApi", "deleteAllApi"]),
184
+ ...mapMutations("generic", ["openModal", "hideModal", "removeLoading"]),
185
+ successUploadFile() {
186
+ this.listError = [];
187
+ this.loading = true;
188
+ this.msg =
189
+ "Aguarde, estamos carregando os dados, isso pode levar alguns minutos...";
190
+ let self = this;
191
+ setTimeout(function () {
192
+ self.mapping(self.fileName);
193
+ }, 1000);
194
+ },
195
+ mapping(fileName) {
196
+ let params = {
197
+ url: this.urlMapping,
198
+ obj: {
199
+ fileName: fileName,
200
+ container: this.container,
201
+ typeImport: this.typeImport,
202
+ },
203
+ notNotifyToast: true,
204
+ };
205
+ this.postApi(params).then((response) => {
206
+ if (response.success) {
207
+ this.loading = false;
208
+ this.headerTable = response.content.headerTable;
209
+ this.data = response.content.data;
210
+ this.totalRecords = response.content.totalRecords;
211
+ }
212
+ });
213
+ },
214
+ validate() {
215
+ this.loading = true;
216
+ this.msg =
217
+ "Aguarde, estamos validando os dados, isso pode levar alguns minutos...";
218
+ this.isValid = false;
219
+ let params = {
220
+ url: this.urlValidate,
221
+ obj: {
222
+ fileName: this.fileName,
223
+ container: this.container,
224
+ typeImport: this.typeImport,
225
+ items: this.headerTable,
226
+ },
227
+ notNotifyToast: true,
228
+ };
229
+ this.postApi(params).then((response) => {
230
+ if (response.success) {
231
+ this.listError = response.content;
232
+ if (this.listError.length == 0) this.isValid = true;
233
+ }
234
+ this.removeLoading(["btnValidate"]);
235
+ let self = this;
236
+ setTimeout(function () {
237
+ self.loading = false;
238
+ }, 2000);
239
+ });
240
+ },
241
+ startImport() {
242
+ this.loading = true;
243
+ this.msg =
244
+ "Aguarde, estamos importando os dados, isso pode levar alguns minutos...";
245
+ let params = {
246
+ url: this.urlImport,
247
+ obj: {
248
+ fileName: this.fileName,
249
+ container: this.container,
250
+ typeImport: this.typeImport,
251
+ items: this.headerTable,
252
+ },
253
+ notNotifyToast: true,
254
+ };
255
+ this.postApi(params).then((response) => {
256
+ if (response.success) {
257
+ this.success = true;
258
+ this.isValid = false;
259
+ }
260
+ this.removeLoading(["btnImport"]);
261
+ this.loading = false;
262
+ });
263
+ },
264
+ removeSelected() {
265
+ let params = {
266
+ url: this.templateList.urlDeleteAllApi,
267
+ selected: [this.idRemove],
268
+ };
269
+ this.deleteAllApi(params).then((response) => {
270
+ if (response.success) {
271
+ this.listError = [];
272
+ this.hideModal();
273
+ } else {
274
+ this.listError = response.content;
275
+ if (this.listError.length == 0) this.isValid = true;
276
+ this.hideModal();
277
+ }
278
+ this.removeLoading(["confirm"]);
279
+ });
280
+ },
281
+ openListError() {
282
+ this.openModal("listError");
283
+ this.removeLoading(["btnListError"]);
284
+ },
285
+ back() {
286
+ this.fileName = "";
287
+ this.listError = [];
288
+ this.success = false;
289
+ this.isValid = false;
290
+ this.removeLoading(["btnBack"]);
291
+ },
292
+ },
293
+ watch: {
294
+ event: {
295
+ handler(event) {
296
+ if (event.name == "deleteHistoryImport") {
297
+ this.openModal("confirmDelete");
298
+ this.idRemove = this.event.data.id;
299
+ }
300
+ },
301
+ deep: true,
302
+ },
303
+ },
304
+ };
305
+ </script>
306
+
307
+ <style scoped>
308
+ .import-icon {
309
+ font-size: 30px;
310
+ opacity: 0.2;
311
+ color: #577696;
312
+ }
313
+
314
+ .div-file {
315
+ margin-top: 20px;
316
+ }
317
+
318
+ .div-btn {
319
+ margin-top: 10px;
320
+ margin-left: -8px;
321
+ }
322
+
323
+ .div-loading {
324
+ margin-top: 10px;
325
+ }
326
+
327
+ .div-molded {
328
+ width: 550px;
329
+ margin: auto;
330
+ }
331
+
332
+ .text-download {
333
+ color: #1990ff;
334
+ cursor: pointer;
335
+ }
336
+
337
+ .msg-success {
338
+ font-size: 18px;
339
+ }
340
+
341
+ .icon-success {
342
+ font-size: 55px;
343
+ color: #38a169;
344
+ margin-top: 10px;
345
+ margin-bottom: 15px;
346
+ }
347
+ </style>